PXE介绍

什么是PXE

  • PXE,全名为Pre-boot Execution Environment,预启动执行环境

  • 通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已经安装的操作系统

  • 由Intel和Systemsoft公司于1999年9月发布的技术

  • Client/Server的工作模式

PXE工作原理

kickstart - 图1

Kickstart介绍

Kickstart是一种无人值守的安装方式

它的工作原理是在安装过程中记录人工干预填写的各种参数,并生成一个名为ks.cfg的文件

如果在自动安装过程中出现要填写参数的情况,安装程序首先会去查找ks.cfg文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便会弹出对话框让安装者手工填写

所以,如果ks.cfg文件涵盖了安装过程中所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处下载ks.cfg文件,然后就去忙自己的事情

等安装完毕,安装程序会根据ks.cfg中的设置重启/关闭系统,并结束安装

红帽企业Linux安装程序也根据在安装过程中的选择创建一个简单的kickstart文件,这个文件为/root/anaconda-ks.cfg

无人值守安装系统

部署准备

  • server1:192.168.179.42(ens33,NAT模式网卡)

  • server1:192.168.179.200(ens37,仅主机模式网卡)

  • server2:无DHCP(ens33,仅主机模式网卡)

  • DHCP服务器:server1

  • TFTP服务器:server1

  • PXE客户端:server2

因为要自己配置DHCP服务器,因此需要将仅主机模式的DHCP服务关闭

kickstart - 图2

部署过程

  • 关闭服务器server1的防火墙和SELinux

  • 给ens37网卡配上IP地址,因为一开始的ens37网卡没有配上DHCP服务,所以是没有IP地址的

  1. [root@server1 ~]# nmcli connection modify ens37 ipv4.addresses 192.168.179.200/24 autoconnect yes ipv4.method manual

这一步如果出错,报错内容为“没有ens37”,因为新添加的网卡可能会被命名为有线连接 1,可以通过命令nmcli connection show查看

此时的解决方案是:在/etc/sysconfig/network-scripts/目录下,将ifcfg-ens33复制一份,然后将其改名为ifcfg-ens37,更改这个配置文件中的这三行,其中UUID是从nmcli connection show中看见的ens37的UUID:

NAME=ens37
UUID=7c058fca-1c47-3020-8b22-694c23e6c0e5
DEVICE=ens37

修改完成后进行下面配置:

  1. [root@server1 ~]# systemctl restart network
  2. [root@server1 ~]# nmcli connection modify ens37 ipv4.addresses 192.168.179.200/24 autoconnect yes ipv4.method manual
  3. [root@server1 ~]# nmcli connection down ens37
  4. [root@server1 ~]# nmcli connection up ens37
  • 此时查看IP地址,可以看见ens37的IP地址出现了

kickstart - 图3

  • 配置DHCP服务
  1. [root@server1 ~]# yum -y install dhcp -y
  2. [root@server1 ~]# vim /etc/dhcp/dhcpd.conf
  3. subnet 192.168.179.0 netmask 255.255.255.0 {
  4. range 192.168.179.100 192.168.179.199; # 可分配的起始IP-结束IP
  5. option subnet-mask 255.255.255.0; # 设定子网掩码
  6. default-lease-time 21600; # 设置默认的IP租用期限
  7. max-lease-time 43200; # 设置最大的IP租用期限
  8. next-server 192.168.179.200; # 指定DHCP客户端启动过程中下一步使用的网络服务器IP地址
  9. filename "/pxelinux.0"; # 告知客户端从TFTP根目录下载pxelinux.0文件
  10. }
  11. # 验证端口号,为67端口
  12. [root@server1 ~]# ss -unl
  • 安装TFTP
  1. [root@server1 ~]# yum install tftp-server -y
  2. [root@server1 ~]# systemctl start tftp.socket
  3. [root@server1 ~]# ss -unl
  4. # 验证端口号,为69端口
  • PXE引导配置,下载syslinux
  1. [root@server1 ~]# yum install syslinux -y
  2. [root@server1 ~]# cd /var/lib/tftpboot/
  3. [root@server1 tftpboot]# cp /usr/share/syslinux/pxelinux.0 .
  4. [root@server1 tftpboot]# mkdir -p /media/cdrom
  5. [root@server1 tftpboot]# mount /dev/cdrom /media/cdrom/
  6. [root@server1 tftpboot]# cp /media/cdrom/images/pxeboot/vmlinuz .
  7. [root@server1 tftpboot]# cp /media/cdrom/images/pxeboot/initrd.img .
  8. [root@server1 tftpboot]# cp /media/cdrom/isolinux/vesamenu.c32 .
  9. [root@server1 tftpboot]# cp /media/cdrom/isolinux/boot.msg .

syslinux是一个功能强大的引导加载程序,目的是简化首次安装或其他特殊用途的启动盘,首先需要将pxelinux.0配置文件复制到tftp目录下,再将光盘镜像中的一些文件复制到tftp的目录中

  • 配置syslinux服务程序,这个文件是开机时的选项菜单
  1. [root@server1 tftpboot]# mkdir pxelinux.cfg
  2. [root@server1 tftpboot]# cp /media/cdrom/isolinux/isolinux.cfg pxelinux.cfg/default
  3. [root@server1 tftpboot]# vim pxelinux.cfg/default
  4. default linux # 修改第一行
  5. append initrd=initrd.img inst.stage2=ftp://192.168.179.200 ks=ftp://192.168.179.200/pub/ks.cfg quiet # 修改第64行
  • 配置vsftpd服务程序,因为光盘镜像需要通过ftp协议传输
  1. [root@server1 ~]# yum install -y vsftpd
  2. [root@server1 ~]# systemctl restart vsftpd
  3. [root@server1 ~]# systemctl enable vsftpd
  4. [root@server1 ~]# cp -r /media/cdrom/* /var/ftp/
  • 创建kickstart应答文件,这个文件中包含了系统安装过程中需要的各种选项和参数,安装系统时会自动调取这个文件的内容,从而实现无人值守安装系统
  1. [root@server1 ~]# cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg
  2. [root@server1 ~]# chmod +r /var/ftp/pub/ks.cfg
  3. [root@server1 ~]# vim /var/ftp/pub/ks.cfg
  4. url --url=ftp://192.168.179.200 # 修改第五行,删除原本的cdrom,改为通过ftp
  5. clearpart --all --initlabel # 修改第三十行,安装前清空所有磁盘内容并初始化磁盘

自动安装系统

  • 然后开始正常新建虚拟机,一直下一步
  • 到选择网络类型的时候,选择仅主机模式,继续下一步(因为需要和server1 DHCP配置中的next-server在同一个局域网中)

kickstart - 图4

  • 然后就会发现,系统正在自动安装,什么都不需要配置

kickstart - 图5

kickstart - 图6

  • 自动安装系统完成

kickstart - 图7