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停一下就可以看到了
安装成功