首页 > 代码库 > Linux下搭建PXE服务器安装Linux系统

Linux下搭建PXE服务器安装Linux系统

PXE服务器安装与配置

 花了一个星期主要研究这个,查阅了国内外相关的资料,发现这方面的东西还是比较少的,至少还没有完备的一个体系,这次测试过程发布出来

希望能帮助到一些人,有什么不懂得可以提出来,大家一起讨论。


原理:

PXE是在没有软驱、硬盘、CD-ROM的情况下引导计算机的一种方式,也就是BIOS将使用PXE协议从网络引导

DHCP服务器:用来动态分配IP地址(同时分配子网掩码、网关、TFTP服务器地址、启动文件名、DNS服务器、时间服务器等等)。 

TFTP服务器:用来提供启动文件的下载

 

 简单说来,PXE服务器就是DHCP服务器+TFTP服务器。网络启动过程大概是这样的(可能并不严谨):客户端发送动态获得IP地址的广播包到 网络上,DHCP服务器在收到该广播包后,发送给客户端分配IP地址的回应包,客户端收到回应包后设置自己的IP地址,然后从DHCP服务器获得启动服务 器的IP地址(DHCP服务器066选项,这就是TFTP服务器的IP地址)及启动文件名(DHCP服务器067选项,这里的启动文件名就是 pxelinux.0或者支持pxe的grub4dos的grldr,当然,也可以是startrom.n12或者使用3com Image Edit创建的pxe启动菜单文件,总之,它应该是一种由pxe启动规范规定的固定格式的可执行文件),然后客户端到联系启动服务器(TFTP服务器)获 得启动文件并执行,这样基本上就完成了pxe启动过程。


在Unix或者Linux系统下,DHCP服务器和TFTP服务器一般都是分开设置的,两台服务器甚至可以在两台不同的机器上,其实 Windows下的设置也是一样的,但在Windows下,我们可以通过使用HaneWin DHCP服务器软件或TFTPD32一个软件就搞定(我个人推荐使用HaneWin DHCP服务器软件,但TFTPD32设置起来更简单一些,就是效率有些低),详细的设置方法请自己摸索,你只要知道,在设置PXE服务器时,要设置好 DHCP和TFTP两个服务器,其中DHCP服务器要设置启动服务器名和启动文件名。

 


 

第一次接触PXE服务器,作如下记录:

安装环境:虚拟机CentOS6.2中搭建PXE服务器

仍用CentOS6.2 镜像测试客户端安装系统


1.安装与配置tftp服务器

安装tftp:

rpm –ivh tftp-server-0.49-7.el6.x86_64.rpm

 

问题:

安装时提示:

warning: tftp-server-0.42-3.1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
error: Failed dependencies:
    xinetd is needed by tftp-server-0.42-3.1.i386  //提示依赖的文件

原因:

需要安装xinetd

rpm –ivh xinetd-2.3.14-39.el6_4.x86_64.rpm

然后在继续上一步,就OK

 

配置tftp:

vim  /etc/xinetd.d/tftp 

 

service tftp

{

socket_type = dgram

protocol = udp

wait = yes

user = root

server = /usr/sbin/in.tftpd

server_args = -vss var/lib/tftpboot -c //设置主目录   -c为指定为可以创建文件

disable = no //yes设置为no

per_source = 11

cps = 100 2

flags = IPv4

}

 

#/etc/init.d/iptables stop        //关闭防火墙

#service xinetd restart          //重启 xinetd 服务重启xinetd服务,因为TFTP服务受控与xinetd, xinetd是管服务的服务,它是不开端口的。

验证一下TFTP是否起来了:

# netstat -nlp | grep 69

出现下面的信息代表已经启动了

 udp        0      0 0.0.0.0:69                  0.0.0.0:*  

 

配置服务开机自动运行级别:

      #chkconfig --level 345 xinetd on
      #chkconfig --level 345 tftp on

 

2.安装dhcp服务器

rpm ivh dhcp-4.1.1-25.P1.el6.x86_64.rpm


vim /etc/dhcp/dhcpd.conf根据自己的配置修改

添加:

ddns-update-style interim;

ignore client-updates;

allow booting;

allow bootp;

 

class "pxeclients"{

match if substring(option vendor-class-identifier,0,9) = "PXEClient";

filename "pxelinux.0";//注意填相对路径

next-server 192.168.2.58; #服务器ip地址 这里即虚拟机ip

}

subnet 192.168.2.0 netmask 255.255.255.0 {

option routers 192.168.2.1;//路由网关

option subnet-mask 255.255.255.0;//子网掩码

option time-offset -18000;

range dynamic-bootp 192.168.2.56 192.168.2.60;//设置dhcp地址池

default-lease-time 216000;

max-lease-time 432000;

}

开启dhcp服务:service dhcpd restart

配置服务开机自动运行级别:
     #chkconfig --level 345 dhcpd on

 

此时,可以测试dhcp服务器是否配置成功,可以给客户自动分配ip地址了?

可以配一台新的虚拟机,装好系统,然后物理机断开与外网的连接,虚拟机里右击右上角的电脑图标——编辑连接——ipv4设置——设置为自动(DHCP) 然后左键连接,能连接上,并分配好ip 代表dhcp配置成功。

 

3.安装nfs服务

配置:

vi/etc/exports

/mnt/cdrom *(ro,sync)//使用前先挂载//mount /dev/cdrom /mnt/cdrom 这里我挂载的是CentOS6.2 x64 系统

/mnt/ks/ *(ro)

 

使配置生效

#exportfs -a

查看:

# exportfs -v

开启NFS:

service nfs restart

 

4.配置启动文件

前提是安装了syslinux

 

1. pxelinux.0, vesamenu.c32放到tftp根目录下

cp /usr/share/syslinux/{pxelinux.0,vesamenu.c32} /var/lib/tftpboot/

 

2.创建pxelinux.cfg目录 ,该目录下准备存放default文件

mkdir /var/lib/tftpboot/pxelinux.cfg

 

3.创建要安装系统目录CentOS,拷贝initrd.img vmlinuz至该目录

mkdir /var/lib/tftpboot/CentOS

cp /mnt/cdrom/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/CentOS

 

4.配置ks.cfg文件


若没有安装kickstart,到镜像文件中找到相应的包安装,

rpm ivh system-config-kickstart-2.8.6.4-1.el6.noarch.rpm

(这里注意貌似安装这个包时需要好多的依赖文件,请自己根据在镜像包中查找)

然后使用命令system-config-kickstart,配置自动安装文件ks.cfg,创建/mnt/ks目录,保存ks.cfg/mnt/ks目录

下面给出实例:

#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use NFS installation media
nfs --server=192.168.2.58 --dir=/mnt/cdrom
# Root password
rootpw --iscrypted $1$HJ9geib8$UhHxS8i5.qqjZGpYcqtV31
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# System keyboard
keyboard us
# System language
lang zh_CN
# SELinux configuration
selinux --enforcing
# Installation logging level
logging --level=info
# Reboot after installation
reboot
# System timezone
timezone  Africa/Abidjan
# Network information
network  --bootproto=dhcp --device=eth0 --onboot=on
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all  
# Disk partitioning information
part / --asprimary --fstype="ext3" --size=10000
part /boot --fstype="ext3" --size=100
part swap --fstype="swap" --size=4096

 

5.编辑/var/lib/tftpboot/pxelinux.cfg/default,注意自己修改信息

 

default vesamenu.c32

timeout 100

 

menu background splash.jpg

menu title Welcome to Install System --BY Lvyun

 

label Auto_CentOS

menu label Auto Install CentOS6.2

menu default

kernel CentOS/vmlinuz

append initrd=CentOS/initrd.img ks=nfs:192.168.2.58:/mnt/ks/ks.cfg

 

label Custom_CentOS

menu label Custom Install CentOS6.2

kernel CentOS/vmlinuz

append initrd=CentOS/initrd.img

 

label rescue

menu label Resuce

kernel CentOS/vmlinuz

append initrd=CentOS/initrd.img

 

5.完成配置

开启一台虚拟机测试,会自动安装CentOS系统。

 

 

6.参考文档

http://blog.chinaunix.net/uid-26393988-id-3018421.html

http://www.tuicool.com/articles/meM7Nb