PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统即所谓的无盘工作站。

PXE工作条件

  • 客户端

    • 硬件支持:网卡或主板集成了PXEClient才可以和PXEServer进行通信

  • 服务端

    • DHCP服务:既然要实现网络通信IP地址自然是必不可少的

    • TFTP(Trivial FTP)或MFTP(Multicast TFTP)服务,简单FTP服务提供PXE启动需要的pxelinux.0、vmlinux和initrd等文件

    • DNS服务,有时会用到,可选

    • FTP/HTTP/NFS 输出系统安装树,软件仓库

操作演示

# step 1: 安装dhcp[root@node1 ~]# yum install -y dhcp# 为省事可以直接拷个配置文件的样例过去再做修改[root@node1 ~]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf cp: overwrite `/etc/dhcp/dhcpd.conf'? y[root@node1 ~]# vim /etc/dhcp/dhcpd.conf option domain-name "bob.org";    # 域名后缀option domain-name-servers 172.16.100.2;    # dns 服务器default-lease-time 43200;    # IP地址租约max-lease-time 86400;        # 最大租约时间    log-facility local7;         # 日志文件# 一个subnet定义一个IP地址池subnet 172.16.100.0 netmask 255.255.0.0 {  range 172.16.100.100 172.16.100.200;  option routers 172.16.100.2;      next-server 172.16.100.11;    # 指定tftp服务器地址  filename="pxelinux.0";        # 指定pxlinux.0文件地址,必须用双引号,地址是相对tftp服务根目录的}# 安装tftp和syslinux, 安装syslinux会自动安装上syslinux-nonlinux和mtools#(pxelinux.0由syslinux-nonlinux提供的)[root@node1 ~]# yum install tftp-server syslinux -y[root@node1 ~]# rpm -ql tftp-server/etc/xinetd.d/tftp    # tftp服务脚本,是Xinet管理的服务/usr/sbin/in.tftpd/usr/share/doc/tftp-server-0.49/usr/share/doc/tftp-server-0.49/CHANGES/usr/share/doc/tftp-server-0.49/README/usr/share/doc/tftp-server-0.49/README.security/usr/share/doc/tftp-server-0.49/README.security.tftpboot/usr/share/man/man8/in.tftpd.8.gz/usr/share/man/man8/tftpd.8.gz/var/lib/tftpboot        # tftp服务的根目录# 可以看到pxlinux.0是由syslinux-nonlinux这个软件包提供的[root@node1 ~]# rpm -ql syslinux-nonlinux | grep pxelinux.0/usr/share/syslinux/gpxelinux.0/usr/share/syslinux/pxelinux.0# 把pxelinux.0复制到tftp服务的要目录下,因为dhcp配置里指定的是根目录[root@node1 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/# 为方便直接把光盘挂到ftp目录下面[root@node1 ~]# mount -r /dev/cdrom /var/ftp/pub/centos/# 为tftp下面提供vmlinuz和initrd.img[root@node1 ~]# cp /var/ftp/pub/centos/p_w_picpaths/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/[root@node1 ~]# cd /var/lib/tftpboot/[root@node1 tftpboot]# lsinitrd.img  pxelinux.0  vmlinuz# tftp默认的菜单配置文件是放在pxelinux.cfg/default下的# 这个相当于光盘下isolinux/isolinux.cfg,可以把这个文件复制过来修改一下就好[root@node1 tftpboot]# mkdir pxelinux.cfg# 为tftp目录下准备菜单程序和boot.msg,背景图片splash.jpg# vesamenu.c32为菜单程序,可从光盘里复制过来,syslinx-nonlinux包也提供了,在/usr/share/syslinux/下[root@node1 tftpboot]# cp /var/ftp/pub/centos/isolinux/{boot.msg,splash.jpg,vesamenu.c32} ./[root@node1 tftpboot]# lsboot.msg  initrd.img  isolinux.cfg  pxelinux.0  splash.jpg  vesamenu.c32  vmlinuz[root@node1 tftpboot]# cp /var/ftp/pub/centos/isolinux/isolinux.cfg pxelinux.cfg/default# 根据需要修改下default文件[root@node1 tftpboot]# vim pxelinux.cfg/default default vesamenu.c32#prompt 1timeout 600display boot.msgmenu background splash.jpgmenu title Welcome to CentOS 6.4 via PXE!menu color border 0 #ffffffff #00000000menu color sel 7 #ffffffff #ff000000menu color title 0 #ffffffff #00000000menu color tabmsg 0 #ffffffff #00000000menu color unsel 0 #ffffffff #00000000menu color hotsel 0 #ff000000 #ffffffffmenu color hotkey 7 #ffffffff #ff000000menu color scrollbar 0 #ffffffff #00000000label linux  menu label ^Install or upgrade an existing system  menu default  kernel vmlinuz  append initrd=initrd.img ks=ftp://172.16.100.11/pub/ks.cfglabel rescue  menu lalbe ^Rescue  kernel vmlinuz  append initrd=initrd.img rescue# tftp是xinet管理的服务工作在端口69/udp, 启动tftp和dhcp服务[root@node1 ~]# chkconfig tftp on[root@node1 ~]# service xinetd restartStopping xinetd:                                           [  OK  ]Starting xinetd:                                           [  OK  ][root@node1 ~]# service dhcpd startStarting dhcpd:                                            [  OK  ]      [root@node1 ~]# netstat -unlp | grep 67udp        0      0 0.0.0.0:67    0.0.0.0:*               15641/dhcpd         [root@node1 ~]# netstat -unlp | grep 69udp        0      0 0.0.0.0:69    0.0.0.0:*               16097/xinetd

# 连上去查看tftp是否工作正常,tftp没有ls命令[root@node1 ~]# tftp 172.16.100.11tftp> helptftp-hpa 0.49Commands may be abbreviated.  Commands are:connect 	connect to remote tftpmode    	set file transfer modeput     	send fileget     	receive filequit    	exit tftpverbose 	toggle verbose modetrace   	toggle packet tracingliteral 	toggle literal mode, ignore ':' in file namestatus  	show current statusbinary  	set mode to octetascii   	set mode to netasciirexmt   	set per-packet transmission timeouttimeout 	set total retransmission timeout?       	print help informationhelp    	print help information# verbose打开冗余模式,可以显示更多详细信息tftp> verboseVerbose mode on.# get文件成功代表tftp正常工作tftp> get pxelinux.0getting from 172.16.100.11:pxelinux.0 to pxelinux.0 [netascii]Received 26981 bytes in 0.0 seconds [72143767 bit/s]

安装过程截图:

这个界面一闪就过去了,想看到的话得把tftp停一下就可以看到了

安装成功