一、基本原理
1. 什么是PXE
PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。协议分为client和server两端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。
既然是通过网络传输,就需要IP地址;也就是说在其启动过程中,客户端请求服务器分配IP地址,之后PXE Client使用TFTP Client 通过TFTP(Trivial File Transfer Protocol)协议下载启动安装程序所需的文件。
简单地说PXE网络安装,客户机通过支持PXE的网卡向网络中发送请求DHCP信息的广播请求IP地址等信息,DHCP服务器给客户端提供IP地址和其它信息(TFTP服务器、启动文件等),之后请求并下载安装需要的文件。在这个过程中需要一台服务器来提供启动文件、安装文件、以及安装过程中的自动应答文件等。
2. 自动化安装的过程
下图中介绍了Linux中自动安装系统的详细工作过程:
第一步:PXE Client向DHCP服务器发送请求
首先,将支持PXE的网络接口卡(NIC)的客户端BIOS设置为网络启动,通过PXE BootROM(自启动芯片)会以UDP协议发送一个广播请求,向网络中的DHCP服务器申请一个IP地址等信息。
DHCP服务器收到客户端的请求,验证是否来自合法的PXE Client请求,验证通过后向客户端返回响应信息,包括:客户端IP地址,pxelinux启动程序(TFTP)位置,以及配置文件所在位置等。
第三步:PXE客户端请求下载启动文件客户端请求传送启动所需文件,包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。
第四步:Boot Server响应客户端请求并传送文件TFTP服务器收到客户端的请求后,彼此间进行通信应答,确定启动参数。BootROM由TFTP通信协议从Boot Server下载启动安装程序所必须文件(pxelinux.0、pxelinux.cfg/default)。default文件下载完成后,会根据该文件中定义的引导顺序,启动Linux安装程序的引导内核。
第五步:请求下载自动应答文件客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS, FTP, HTTP),则会在这个时候初始化网络,并定位安装源位置。或许你会说,刚才PXE不是已经获取过IP地址了吗?为什么现在还需要一次?这是由于PXE获取的是安装用的内核以及安装程序等,而安装程序要获取的是安装系统所需的二进制包以及配置文件。由于它们需要的内容不同造成PXE模块和安装程序是相对独立的,PXE的网络配置并不能传递给安装程序。从而进行两次获取IP地址过程。
接着会读取该文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。
第六步:客户端安装操作系统在上面介绍中PXE client是需要安装Linux的计算机,TFTP Server、DHCP Server和FTP Server(或NFS Server)运行在另外一台Linux Server上。Bootstrap文件、配置文件、Linux内核都放置在Linux Server上TFTP服务器的根目录下。而Linux根文件系统存放于FTP Server(或NFS Server)的共享目录中。
PXE client在工作过程中,需要三个二进制文件:bootstrap、Linux 内核和Linux根文件系统。Bootstrap文件是可执行程序,它向用户提供简单的控制界面,并根据用户的选择,下载合适的Linux内核以及Linux根文件系统。
二、安装及配置说明
1. 安装DHCP、TFTP、VSFTP服务
# yum install dhcp# chkconfig vsftpd on
2. 配置文件
2.1 DHCP服务
修改DHCP配置文件,确保DHCP分配的地址和其他服务器在同一个网段。 ddns-update-style interim; ignore client-updates; authoritative; allow booting; allow bootp; subnet 192.168.85.0 netmask 255.255.255.0 { option routers 192.168.85.2; option subnet-mask 255.255.255.0; next-server 192.168.85.142; range dynamic-bootp 192.168.85.80 192.168.85.99; filename "pxelinux.0"; default-lease-time 21000; max-lease-time 43200; option time-offset -18000; } |
2.2 TFTP服务
tftp 服务由xinetd服务管理,修改配置文件中的两行内容。 server_args = -s /tftpboot disable = no |
2.3 kickstart配置文件
首先安装kickstart包 #platform=x86, AMD64, or Intel EM64T #version=DEVEL # Firewall configuration firewall --disabled # Install OS instead of upgrade install # Use network installation url --url="ftp://192.168.85.142/pub/Centos6.4_64" # Root password rootpw --iscrypted $1$n8trQA.9$BT/cDFlU/GH5xEtgCoTgM/ # System authorization information auth --useshadow --passalgo=sha512 # Use graphical install graphical firstboot --disable # System keyboard keyboard us # System language lang en_US # SELinux configuration selinux --disabled # Installation logging level logging --level=info # Reboot after installation reboot # System timezone timezone --isUtc Asia/Shanghai # 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 --initlabel # Disk partitioning information part /boot --fstype="ext4" --size=300 part swap --fstype="swap" --size=4096 part / --fstype="ext4" --grow --size=1 %packages @base @core %end |
3. 制作系统安装镜像
首先将Linux系统iso文件解压到FTP Server的共享路径 default Centos6.4_64 prompt 1 timeout 600 display boot.msg label Centos6.4_64 kernel Centos6.4_64/vmlinuz append ksdevice=eth0 initrd=Centos6.4_64/initrd.img ks=ftp://192.168.85.142/ks6_4.cfg label Fedora19_64 kernel Fedora19_64/vmlinuz append ksdevice=eth0 initrd=Fedora19_64/initrd.img ks=ftp://192.168.85.142/ks19.cfg |
# Choose to install OS type and enter command to continue CentOS 6.4 64bit ---> Centos6.4_64 Fedora 19 64bit ---> Fedora19_64 |
4. 关闭防火墙
# setenforce 0# chkconfig --del iptables
5. 启动和测试
# service dhcpd restart
参考引用
http://bazhuayu.blog.51cto.com/1441282/766824