1.1 什么是PXE
PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。
严格来说,PXE 并不是一种安装方式,而是一种引导方式。进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE 协议可以使计算机通过网络启动。此协议分为 Client端和 Server 端,而PXE Client则在网卡的 ROM 中。当计算机引导时,BIOS 把 PXE Client 调入内存中执行,然后由 PXE Client 将放置在远端的文件通过网络下载到本地运行。运行 PXE 协议需要设置 DHCP 服务器和 TFTP 服务器。DHCP 服务器会给 PXE Client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE Client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXE Client 的 ROM 中,已经存在了 TFTP Client,那么它就可以通过 TFTP 协议到 TFTP Server 上下载所需的文件了。
PXE的工作过程:
1. PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP;
2. DHCP 服务器返回分配给客户机的IP 以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上) ;
3. PXE Client 向本网络中的TFTP服务器索取pxelinux.0 文件;
4. PXE Client 取得pxelinux.0 文件后之执行该文件;
5. 根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统 ;
6. 进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装;
详细工作流程,请参考下面这幅图:
1.2 什么是Kickstart
Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在安装过程中(不只局限于生成Kickstart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找Kickstart生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果Kickstart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装。
PXE+Kickstart 无人值守安装操作系统完整过程如下:
二、环境
实验环境: VMware Workstation 12
系统平台:CentOS release 6.7 图形界面 (system-config-kickstart工具生成ks.cfg文件时依赖于图形界面)
网络模式:NAT模式
这里,我是将引导服务器、KS安装服务器、DHCP服务器都安装在了同一台虚拟机里面。
selinux=disabled
三、软件准备:
#yum -y install httpd tftp-server tftp dhcp 注释:httpd主要是给客户机提供一种安装方式;也可以通过NFS或者FTP等。tftp-server是提供一种传输方式,给客户机传输内核文件和PXE文件。tftp可装可不装,这里安装是因为后面方便tftp服务的测试; dhcp服务给客户机分配IP地址。
#yum -y install syslinux ##:syslinux是一个功能将大的引导加载程序,这里系统默认没有安装,需要手动安装一下。
#yum -y install system-config-kickstart ##:安装kickstart工具。
#mkdir /mnt/cdrom ##创建文件夹
#mount /dev/cdrom /mnt/cdrom ##将centos 6.x系统挂载到/mnt/cdrom目录下
#cp -r /mnt/cdrom /var/www/html ##将挂载在/mnt/cdrom下的系统安装文件复制到httpd服务的根目录下。
四、整体配置
1. 启动httpd服务器,并设置开机自启动;启动dhcp服务、并设置开机自启动。
#service httpd start
#chkconfig httpd on
#chkconfig dhcpd on
#chkconfig dhcpd start
2. 修改tftp配置文件,将disable=yes 改为no ;重启xinetd服务。
#vim /etc/xinetd.d/tftp #disable= yes 改为 disable=no
#service xinted restart
3. 复制引导加载程序到tftp的根目录下
#cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
4. 复制系统的内核文件和映像文件到tftp的根目录下
#cp /var/www/html/cdrom/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/
5. 复制引导时显示的文件到tftp根目录下:
#cp /var/www/html/cdrom/isolinux/boot.msg /var/lib/tftpboot/
6.
#mkdir /var/lib/tftpboot/pxelinux.cfg
#cp /var/www/html/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
7. default文件的权限默认是444 ,没有写权限,需要提供写权限。(因为我使用的是root用户,所以修改后的权限为644)
#chmod 644 default
8. 修改default文件的内容:
default ks #标记启动内核
prompt 1 #显示‘boot:’ 提示符为‘0’时则不提示,直接启动default标记的内容
timeout 6 #在用户输入之前的超时时间
display boot.msg #显示某个文件的内容,文件的路径是:/var/lib/tftboot/下
menu background splash.jpg
menu title Welcome to CentOS 6.7!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
label linux
kernel vmlinuz
append initrd=initrd.img
label text
kernel vmlinuz
append initrd=initrd.img text
label ks
kernel vmlinuz
append ks=http://192.168.2.100/ks.cfg initrd=initrd.img #告诉系统从192.168.2.100的httpd服务器的根目录下获取ks.cfg ,这里也就是本机。
label local
localboot 1
label memtest86
kernel memtest
append -
9. 修改dhcp的配置文件
#vim /etc/dhcp/dhcp
ddns-update-style interim; #DHCP-DNS互动更新模式
ignore client-updates; #忽略客户端更新
filename "pxelinux.0"; #pxelinux 启动文件位置
next-server 192.168.2.100; #TFTP服务器的IP地址,这里是本机。
subnet 192.168.2.0 netmask 255.255.255.0 { #说明网段
option routers 192.168.2.100; #路由
option subnet-mask 255.255.255.0; #子网掩码
range dynamic-bootp 192.168.2.105 192.168.2.110; #DHCD地址池
default-lease-time 21600; #客户端刷新配置信息的时间间隔
max-lease-time 43200; #为客户端无法从DHCP服务器获得任何信息的时间,超过该时间会丢弃掉所有从该服务器获取的任何信息,转而使用OS默认配置
}
10. 启动dhcp服务
#service dhcpd start #当启动失败时,需要检查一下配置文件是否有错,总个配置过程下来非常容易出错,所以建议修改完后检查一下配置文件。
11. 启动system-config-kickstart 工具,生成ks.cfg文件。并把ks.cfg文件放到httpd服务的根目录(/var/www/html/)下。
#system-config-kickstart
a.设置语言、键盘、时区、root密码 以及勾选下方的安装完重启选项。这些配置都是会应用到新装的客户机当中。
b. 选择安装方式为http ,然后输入目录cdrom,指的是/var/www/html/cdrom/
c.Boot Loader Options默认配置
d.选择初始化硬盘标签、划分分区:1G交换分区、8G硬盘。
e. network configuration 选项添加一个块网卡为eth0 ,网络类型为DHCP
f. 防火墙选项:selinux和security level都选择disabled
g. 安装包选择,这个根据具体的需要选择不同的安装包,这里我选择的是图形界面版。
h. 点击左上交的预览。点击保存。保存到/var/www/html/目录下:
ok,到这里,所有的配置都已完成。
五、测试
1. 把vmware软件的DHCP功能关闭
2.新建一个虚拟机,网卡模式选择nat
3. 打开电源,获取IP,获取pxelinux.0 传输内核文件,开始安装