基于PXE ,Kickstart ————从网卡启动装系统
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 上下载所需的文件了。
2.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 方式之一进行安装;
详细工作流程,请参考下面这幅图:
3.什么是Kickstart
Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在安装过程中(不只局限于生成Kickstart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找Kickstart生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果Kickstart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装。
PXE+Kickstart 无人值守安装操作系统完整过程如下:
二.操作步骤
1.安装相关服务
yum install dhcp tftp-server.x86_64 httpd syslinux -y
2.配置所需环境
*)vim /etc/xinetd.d/tftp ##编辑配置文件
*)systemctl start xinetd.service ##重启动服务
*)netstat -antlupe | grep tftp ##查看端口
*)netstat -antlupe | grep 69
*)systemctl start httpd ##开启http服务
*)systemctl stop firewalld.service ##关防火墙
3.根据需求复制指定引导文件到指定位置
[root@server yum.repos.d]# cd /var/lib/tftpboot/
[root@server tftpboot]# cp /usr/share/syslinux/pxelinux.0 .
[root@server tftpboot]# mkdir pxelinux.cfg
[root@foundation10 iso]# cd /var/www/html/rh7.2/
[root@foundation10 rh7.2]# cd isolinux/
[root@foundation10 isolinux]# scp ./* [email protected]:/var/lib/tftpboot/
[email protected]'s password:
[root@server tftpboot]# ls
boot.cat initrd.img memtest splash.png vesamenu.c32
boot.msg isolinux.bin pxelinux.0 TRANS.TBL vmlinuz
grub.conf isolinux.cfg pxelinux.cfg upgrade.img
[root@server tftpboot]# cp isolinux.cfg pxelinux.cfg/default
4.配置dhcp服务
[root@server tftpboot]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp: overwrite ‘/etc/dhcp/dhcpd.conf’? y
[root@server tftpboot]# vim /etc/dhcp/dhcpd.conf
7 option domain-name "example.com";
8 option domain-name-servers 172.25.254.10;
28 subnet 172.25.254.0 netmask 255.255.255.0 {
29 range 172.25.254.111 172.25.254.200;
30 option routers 172.25.254.10;
31 next-server 172.25.254.210;
32 filename "pxelinux.0";
33 }
[root@server tftpboot]# systemctl restart dhcpd
5.修改预安装环境显示
[root@server tftpboot]# vim pxelinux.cfg/default
2 timeout 100
11 menu title LULUBAO Linux 7.0
61 label linux
62 menu label ^Install Red Hat Enterprise Linux 7.0
63 kernel vmlinuz
64 menu default
65 append initrd=initrd.img repo=http://172.25.254.10
10 menu background 2.png
6.生成并配置ks.cfg文件 并把其通过http发布到互联网上
[root@server tftpboot]# vim /var/www/html/ks.cfg
7.在default文件指明ks指向
[root@server tftpboot]# vim pxelinux.cfg/default