6 利用PXE实现自动化系统部署
6.1 PXE介绍
PXE:Preboot Excution Envirnoment,预启动执行环境,是由Intel公司研发,基于C/S的网络模式,支持远程主机通过网络从远端服务器下载映像,并由次支持通过网络启动操作系统,可以引导和安装windows,linux等多种操作系统
PXE启动工作原理

6.2 利用PXE实现自动化安装流程

- Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC地址),如果合法则返回Client的IP地址,同时将启动文件pxelinux.0的所在TFTP服务器地址信息一并传送给Client
- Client向TFTP服务器发送获取pxelinux.0请求消息,TFTP服务器接收到消息之后,向Client发送pxelinux.0大小信息,试探Client是否满意,当TFTP收到Client发回的同意大小信息之后,正式向Client发送pxelinux.0
- Client执行接收到的pxelinux.0文件,并利用此文件启动
- Client向TFTP服务器发送请求针对本机的配置信息文件(在TFTP服务器的pxelinux.cfg目录下),TFTP服务器将启动菜单配置文件发回Client,继而Client根据启动菜单配置文件执行后续操作
- Client根据启动菜单配置文件里的信息,向TFTP发送Linux内核和initrd文件请求信息,TFTP接收到消息之后将内核和initrd文件发送给Client
- Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文件系统
- Client启动Linux内核,加载相关的内核参数
- Client通过内核参数下载kickstart文件,并根据kickstart文件里的安装信息,下载安装源文件进行自动化安装
UEFI客户端的安装文档:
6.3 在cento6上实现PXE自动化安装centos
略
6.4 在centos7上实现PXE自动化安装centos
略
6.5 在centos8上实现PXE自动化安装centos
6.5.1 安装前准备
关闭防火墙和selinux,DCHP服务器静态IP
网络要求:关闭VMWare软件中的DHCP服务,基于NAT模式
注意:使用1G以下内存的主机安装Centos7,8会提示空间不足,建议2G以上
6.5.2 安装相关软件包并启动
[root@centos8 ~]# dnf install dhcp-server tftp-server httpd syslinux-nonlinux -y
[root@centos8 ~]# systemctl enable --now httpd tftp dhcpd
6.5.3 配置DHCP服务
[root@centos8 ~]# cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf
[root@centos8 ~]# vim /etc/dhcp/dhcpd.conf
option domain-name "waluna.top";
option domain-name-servers 114.114.114.114,223.5.5.5;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.100 10.0.0.200;
option routers 10.0.0.2;
next-server 10.0.0.8;
filename "pxelinux.0";
}
[root@centos8 ~]# systemctl restart dhcpd
6.5.4 准备yum源和相关目录
[root@centos8 ~]# mkdir -pv /var/www/html/centos/{6,7,8}/os/x86_64
mkdir: created directory '/var/www/html/centos'
mkdir: created directory '/var/www/html/centos/6'
mkdir: created directory '/var/www/html/centos/6/os'
mkdir: created directory '/var/www/html/centos/6/os/x86_64'
mkdir: created directory '/var/www/html/centos/7'
mkdir: created directory '/var/www/html/centos/7/os'
mkdir: created directory '/var/www/html/centos/7/os/x86_64'
mkdir: created directory '/var/www/html/centos/8'
mkdir: created directory '/var/www/html/centos/8/os'
mkdir: created directory '/var/www/html/centos/8/os/x86_64'
[root@centos8 ~]# tree /var/www/html/
/var/www/html/
└── centos
├── 6
│ └── os
│ └── x86_64
├── 7
│ └── os
│ └── x86_64
└── 8
└── os
└── x86_64
10 directories, 0 files
[root@centos8 ~]# mount /dev/sr0 /var/www/html/centos/8/os/x86_64/
mount: /var/www/html/centos/8/os/x86_64: WARNING: device write-protected, mounted read-only.
[root@centos8 ~]# mount /dev/sr1 /var/www/html/centos/7/os/x86_64/
mount: /var/www/html/centos/7/os/x86_64: WARNING: device write-protected, mounted read-only.
[root@centos8 ~]# mount /dev/sr2 /var/www/html/centos/6/os/x86_64/
mount: /var/www/html/centos/6/os/x86_64: WARNING: device write-protected, mounted read-only.
6.5.5 战备kickstart文件
[root@centos8 ~]# mkdir /var/www/html/ks
[root@centos8 ~]# vim /var/www/html/ks/centos6.cfg # 内容见2.2.2.3
[root@centos8 ~]# vim /var/www/html/ks/centos7.cfg # 内容见2.2.2.2
[root@centos8 ~]# vim /var/www/html/ks/centos8.cfg # 内容见2.2.2.1
6.5.6 准备PXE启动相关文件
[root@centos8 ~]# mkdir /var/lib/tftpboot/centos{6,7,8}
[root@centos8 ~]# cp /var/www/html/centos/6/os/x86_64/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos6
[root@centos8 ~]# cp /var/www/html/centos/7/os/x86_64/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos7
[root@centos8 ~]# cp /var/www/html/centos/8/os/x86_64/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos8
[root@centos8 ~]# cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/
# 以下三个文件是centos8安装所必须的文件,cnetos6,7则不需要
[root@centos8 ~]# cp /var/www/html/centos/8/os/x86_64/isolinux/{ldlinux.c32,libcom32.c32,libutil.c32} /var/lib/tftpboot/
# 生成安装菜单文件
[root@centos8 ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@centos8 ~]# cp /var/www/html/centos/8/os/x86_64/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
# 最终目录结构如下:
[root@centos8 ~]# tree /var/lib/tftpboot/
/var/lib/tftpboot/
├── centos6
│ ├── initrd.img
│ └── vmlinuz
├── centos7
│ ├── initrd.img
│ └── vmlinuz
├── centos8
│ ├── initrd.img
│ └── vmlinuz
├── ldlinux.c32
├── libcom32.c32
├── libutil.c32
├── menu.c32
├── pxelinux.0
└── pxelinux.cfg
└── default
4 directories, 12 files
6.5.7 准备启动菜单文件
[root@centos8 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
timeout 600
menu title Install CentOS Linux
label linux8
menu label Auto Install CentOS Linux ^8
kernel centos8/vmlinuz
append initrd=centos8/initrd.img ks=http://10.0.0.8/ks/centos8.cfg
label linux7
menu label Auto Install CentOS Linux ^7
kernel centos7/vmlinuz
append initrd=centos7/initrd.img ks=http://10.0.0.8/ks/centos7.cfg
label linux6
menu label Auto Install CentOS Linux ^6
kernel centos6/vmlinuz
append initrd=centos6/initrd.img ks=http://10.0.0.8/ks/centos6.cfg
label manual
menu label ^Manual Install Centos Linux 8.1
kernel centos8/vmlinuz
append initrd=centos8/initrd.img inst.repo=http://10.0.0.8/centos/8/os/x86_64/
label rescue
menu label ^Rescue a CentOS Linux system 8
kernel centos8/vmlinuz
append initrd=centos8/initrd.img inst.repo=http://10.0.0.8/centos/8/os/x86_64/ rescue
label local
menu default
menu label Boot from ^local drive
localboot 0xffff
6.5.8 测试客户端基于PXE实现自动安装
新准备一主机,设置网卡引导,可看到启动菜单,并实现自动安装
注意:VMWare workstation对于不同的Centos版本,生成的虚拟机的硬件并不兼容















Comments | NOTHING