PXE介绍
什么是PXE
PXE,全名为Pre-boot Execution Environment,预启动执行环境
通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已经安装的操作系统
由Intel和Systemsoft公司于1999年9月发布的技术
Client/Server的工作模式
PXE工作原理
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服务关闭
部署过程
关闭服务器server1的防火墙和SELinux
给ens37网卡配上IP地址,因为一开始的ens37网卡没有配上DHCP服务,所以是没有IP地址的
[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修改完成后进行下面配置:
[root@server1 ~]# systemctl restart network
[root@server1 ~]# nmcli connection modify ens37 ipv4.addresses 192.168.179.200/24 autoconnect yes ipv4.method manual
[root@server1 ~]# nmcli connection down ens37
[root@server1 ~]# nmcli connection up ens37
- 此时查看IP地址,可以看见ens37的IP地址出现了
- 配置DHCP服务
[root@server1 ~]# yum -y install dhcp -y
[root@server1 ~]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.179.0 netmask 255.255.255.0 {
range 192.168.179.100 192.168.179.199; # 可分配的起始IP-结束IP
option subnet-mask 255.255.255.0; # 设定子网掩码
default-lease-time 21600; # 设置默认的IP租用期限
max-lease-time 43200; # 设置最大的IP租用期限
next-server 192.168.179.200; # 指定DHCP客户端启动过程中下一步使用的网络服务器IP地址
filename "/pxelinux.0"; # 告知客户端从TFTP根目录下载pxelinux.0文件
}
# 验证端口号,为67端口
[root@server1 ~]# ss -unl
- 安装TFTP
[root@server1 ~]# yum install tftp-server -y
[root@server1 ~]# systemctl start tftp.socket
[root@server1 ~]# ss -unl
# 验证端口号,为69端口
- PXE引导配置,下载syslinux
[root@server1 ~]# yum install syslinux -y
[root@server1 ~]# cd /var/lib/tftpboot/
[root@server1 tftpboot]# cp /usr/share/syslinux/pxelinux.0 .
[root@server1 tftpboot]# mkdir -p /media/cdrom
[root@server1 tftpboot]# mount /dev/cdrom /media/cdrom/
[root@server1 tftpboot]# cp /media/cdrom/images/pxeboot/vmlinuz .
[root@server1 tftpboot]# cp /media/cdrom/images/pxeboot/initrd.img .
[root@server1 tftpboot]# cp /media/cdrom/isolinux/vesamenu.c32 .
[root@server1 tftpboot]# cp /media/cdrom/isolinux/boot.msg .
syslinux是一个功能强大的引导加载程序,目的是简化首次安装或其他特殊用途的启动盘,首先需要将pxelinux.0配置文件复制到tftp目录下,再将光盘镜像中的一些文件复制到tftp的目录中
- 配置syslinux服务程序,这个文件是开机时的选项菜单
[root@server1 tftpboot]# mkdir pxelinux.cfg
[root@server1 tftpboot]# cp /media/cdrom/isolinux/isolinux.cfg pxelinux.cfg/default
[root@server1 tftpboot]# vim pxelinux.cfg/default
default linux # 修改第一行
append initrd=initrd.img inst.stage2=ftp://192.168.179.200 ks=ftp://192.168.179.200/pub/ks.cfg quiet # 修改第64行
- 配置vsftpd服务程序,因为光盘镜像需要通过ftp协议传输
[root@server1 ~]# yum install -y vsftpd
[root@server1 ~]# systemctl restart vsftpd
[root@server1 ~]# systemctl enable vsftpd
[root@server1 ~]# cp -r /media/cdrom/* /var/ftp/
- 创建kickstart应答文件,这个文件中包含了系统安装过程中需要的各种选项和参数,安装系统时会自动调取这个文件的内容,从而实现无人值守安装系统
[root@server1 ~]# cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg
[root@server1 ~]# chmod +r /var/ftp/pub/ks.cfg
[root@server1 ~]# vim /var/ftp/pub/ks.cfg
url --url=ftp://192.168.179.200 # 修改第五行,删除原本的cdrom,改为通过ftp
clearpart --all --initlabel # 修改第三十行,安装前清空所有磁盘内容并初始化磁盘
自动安装系统
- 然后开始正常新建虚拟机,一直下一步
- 到选择网络类型的时候,选择仅主机模式,继续下一步(因为需要和server1 DHCP配置中的
next-server
在同一个局域网中)
- 然后就会发现,系统正在自动安装,什么都不需要配置
- 自动安装系统完成