lsn0LSN 2017-02-09
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服务器要设置启动服务器名和启动文件名。
搭建环境:
推送服务器:
Ip:192.168.189.138
系统:CentOS 5.8
推送系统:RHEL 5.4
1:配置dhcpd服务。
如果没有安装dhcpd服务,请安装:
# yum -y install dhcp.x86_64
# vi /etc/dhcpd.conf
option domain-name "766.com";
default-lease-time 6000;
max-lease-time 11400;
authourtative;
next-server 192.168.189.138;
ddns-update-style ad-hoc;
log-facility local7;
subnet 192.168.189.0 netmask 255.255.255.0{
range 192.168.189.150 192.168.189.195;
option domain-name-servers 192.168.189.254;
option domain-name "766.com";
option netbios-name-servers 192.168.189.254;
option routers 192.168.189.254;
option broadcast-address 192.168.189.255;
default-lease-time 6000;
max-lease-time 11400;
filename "/kickstart/ks.cfg";
}
option space PXE;
class "PXE" {
match if substring(optionvendor-class-identifier, 0, 9) = "PXEClient";
optionvendor-encapsulated-options 01:04:00:00:00:00:ff;
option boot-size 0x1;
filename"pxelinux.0";
option tftp-server-name "192.168.189.138";
option vendor-class-identifier"PXEClient";
vendor-option-space PXE;
}
2:开启tftp服务:
如果没有tftp服务软件,请安装:
# yum -y installtftp.x86_64
# yum -y installxinetd.x86_64
# yum -y installtftp-server.x86_64
配置tftp
# vi/etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
3:准备推送所需的文件与目录。
把光盘或iso文件中的isolinux目录下的文件,拷贝到/tftpboot。
把pxelinux.0文件拷贝到/tftpboot:
# cp /usr/lib/syslinux/pxelinux.0 /tftpboot
创建RHEL5.4目录,把initrd.img、vmlinuz两个文件拷贝进去:
# mkdir -p /tftpboot/RHEL5.4
# mv /tftpboot/initrd.img /tftpboot/RHEL5.4
# mv /tftpboot/vmlinuz /tftpboot/RHEL5.4
创建pxelinux.cfg目录,把isolinux.cfg文件拷贝进去,并改名default:
# mv isolinux.cfg pxelinux.cfg/default
修改default文件参数
# vi /tftpboot/pxelinux.cfg/default
default linux
prompt 1
timeout 600
display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
label RHEL5.4
kernel RHEL5.4/vmlinuz
append ksdevice=eth0 load_ramdisk=1 initrd=RHEL5.4/initrd.img noipv6
配置boot.msg,添加加载选项:
# vi /tftpboot/boot.msg
Install RHEL5.4 ---> RHEL5.4
4:提供安装镜像或者内容,这里使用nfs方式。
把光盘镜像或内容拷贝到/home/RedHat下。
使用nfs方式,把/home/redhat共享给192.168.189.0/24网段:
# vi/etc/exports
/home/redhat 192.168.189.0/24(rw,async,no_root_squash)
5:启动各个所需服务,并测试安装。
# service dhcpd start
# service xinetd start
# service nfs start
启动计算机,F12,选择从网卡启动,正常的话则可进入安装引导界面:
写入RHEL5.4,进入安装。
选择安装介质获取方式,选择nfs:
填写服务器ip与介质路径:
进入图形安装界面,说明可以安装了:
使用ks文件实现全自动安装:
使用system-config-kickstart创建ks文件模版(system-config-kickstart无法创建LVM,若要使用LVM,许在生成ks文件后,手动编辑)
LVM配置:
partpv.01 --size=10000 --grow
volgroupvg-001 pv.01
logvol/ --vgname=vg-001 --size=10000 --name=lv-001
ks文件中指定了键盘,语言,安装方式,分区等配置。
配置default文件,指定ks文件路径(可用nfs,ftp等方式):
append ksdevice=eth0 load_ramdisk=1 initrd=RHEL5.4/initrd.img ks=nfs:192.168.189.138:/home/redhat/ks.cfg noipv6
启动客户端,测试自动安装。