一、网络安装系统技术-PXE
PXE(Preboot Execution Environment):预启动执行环境。它允许系统通过网络上引导,并不需要物理存储介质
网络安装系统的优势:
1.远程实现安装操作系统,无需现场插入光盘等介质;
2.同步安装操作系统,所有的服务器支持同步安装;
3.自动化安装,根据已编写好的脚本配置文件,实现无人值守安装;
二、PXE批量安装的工作流程
PXE安装系统的必要条件:
待安装系统的机器必须支持网络引导启动
PXE网络引导安装系统所需的服务和软件:
DHCP服务:分配信息、指定tftp服务器地址
TFTP服务:提供网络引导程序、引导配置文件、内核文件和驱动程序的下载
HTTP服务提供网络源安装系统
pxelinux.0:提供网络引导程序
PXE安装流程:
客户机通过DHCP获取到IP地址
通过TFTP服务器下载所需的内核文件、引导程序、驱动程序
通过HTTP服务进行网络源安装系统
三、操作步骤
pxelinux.0概述
pxelinux.0是一个网络引导程序的文件
主要在PXE环境中为客户端提供引导功能
作用:为没有安装操作系统的机器提供引导功能
软件包:syslinux-nonlinux 或syslinux-tftpboot
1.部署 DHCP 流程
安装 DHCP Server
root@web01 \~\]# yum -y install dhcp-seiver \[root@web01 \~\]# rpm -qc dhcp-server \[root@web01 \~\]# cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf \[root@web01 \~\]# vim /etc/dhcp/dhcpd.conf **# option definitions common to all supported networks** option domain-name"example.com"; option domain-name-servers 192.168.6.254; **# A slightly different configuration for an internal subnet.** subnet 192.168.6.0 netmask 255.255.255.0 { range 192.168.6.2 192.168.6.99; option domain-name-servers 192.168.6.254; option domain-name"example.com"; option routers 192.168.6.254; option broadcast-address 192.168.6.255; default-lease-time 600; max-lease-time 7200; } \[root@web01 \~\]# systemctl enable dhepd.service --now \[root@web01 \~\]# systemctl status dhcpd.service \[root@web01 \~\]# netstat -tulnp \| grep :67 \[root@web01 \~\]# systemctl disable firewalld.service --now **2.部署tftp服务** **\[root@web01 \~\]#yum -y install tftp-serve** \[root@web01 \~\]# systemctl enable tftp.socket --now \[root@web01 \~\]# netstat -tulnp l grep :69 \[rooteweb01 \~\]# cd /var/lib/tftpboot/ \[root@web0l tftpboot\]# ls \[root@web0l tftpboot\]# pwd var/lib/tftpboot **\[root@web01 \~\]# vim /etc/dhcp/dhcpd.conf** # option definitions common to all supported networks... option domain-name "example.com"; option domain-name-servers 192.168.6.254; default-lease-time 600; max-lease-time 7200; **next-server 192.168.6.101;** **filename"pxelinux.0";** \[root@web01 \~\]# systemctl restart dhcpd.service \[root@web01 \~\]# yum provides "/pxelinux.0" \[root@web01 \~\]# yum -y install syslinux-nonlinux \[root@web01 \~\]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ **#配置pxelinux.0引导文件到tftp目录** \[root@web01 \~\]# cd /var/www/html/pub/ \[root@web01 \~\]# pub\]# cd isolinux/ \[root@web01 isolinux\]# vim isolinux.cfg \[root@web01 isolinux\]# vim boot.msg \[root@web01 isolinux\]# cp /var/www/html/pub/isolinux/\* /var/lib/tftpboot/ **#将光盘中的isolinux目录下的所有文件都拷贝到/var/ib/tftpboot/下** \[root@web01 isolinux\]# cd /var/lib/tftpboot/ \[root@web01 tftpboot\]# mkdir pxelinux.cfg **#创建/var/lib/tftpboot/pxelinux.cfg目录** \[root@web01 tftpboot\]# cp isolinux.cfg pxelinux.cfg/default **#将光盘中的isolinux目录下的isolinux.cfg文件拷贝至目录且修改名称为defualt** \[root@web01 pxelinux.cfg\]# pxelinux.0 ---\>/var/lib/tftpboot/pxelinúx.cfg/default \[root@web01 pxelinux.cfg\]# chmod 644 default \[root@web01 pxelinux.cfg\]# vim defaulte label linux menu label \^AUTO Install CentOS Linux 8 menu default kernel ymlinuz append initrd=initrdimg inst.stage2=http://192.168.6.101/pub quiet ----------------------------------------------------------------------------------------------------------- ## 四、kickstart自动化脚本 kickstart脚本定义了系统安装过程中的配置选项,例如磁盘分区、用户密码设置、时区、网络配置、软件包等内容。系统安装的过程中读取此文件,来进行系统安装的配置,而不需要 人工干预 **优势:** 自动化部署,根据脚本配置自动选择分区、网络配等内容 可重复性,一个kickstart脚本可以反复使用 自定义配置,可以自定义软件包的安装、网络信息配置、用户管理等 kickstart脚本文件可通过system-config线ickstart工具获得,但从8版本开始已经不再提供此工具但是在/root目录下提供一个anaconda-ks.cfg模板文件。 ```bash [root@web01 ~]#vim /var/www/html/ks/ks99.cfg # Run the Setup Agent on first boot firstboot --disable ignoredisk --only-use=sda # Partition clearing information clearpart --all--initlabel # Disk partitioning information part /boot --fstype="xfs" --ondisk=sda --size=500 part pv.100 --grow --size=40000 --ondisk=sda #Very important to have the two part lines before the lvm stuff volgroup vg0 --pesize=4096 pv.100 logvol / --fstype=xfs --name=root --vgname=vg0 --size=30720 logvol / home --fstype=xfs --name=home --vgname=vg0 --size=2048 logvol swap --fstype swap --name=swap --vgname=vg0 --size=2048 #System timezone timezone Asia/Shanghai --isUtc --nontp # Root password rootpw --iscrypted $6$pypm5MfRxY.T9KoR$j3seuyMi hovt] iTiHHnKIhkgnzKbPPdFuEHa&MMcj osf9j hbxshs8akQceoZYzqpXJ0XHtVaC4Rsa5Hmc7Wo user--name=admin--password=$6$9NGMGMC88G9nVR8$h10RyWxe/of2VLt2EC/fYa0Kb5albSsvduiH1YPD.Xomm lvZ5vxaUkYmaSWekItd0puEsfPQkVr4uTi2JuhKG1 --iscrypted --gecos="admin" %addon com_redhat kdump --enable --reserve-mb='auto' %end %anaconda pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty %end %post #!/bin/bash mkdir /etc/yum.repos.d/bak mv /etc/yum.repos.d/Cent*/etc/yum.repos.d/bak cat>/etc/yum.repos.d/dvd.repo << END [BaseOS] name=CentOS 8 BaseOS baseurl=http://192.168.6.101/pub/Base0S enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial [AppStreaml name=Cent0S 8 AppStream baseurl=http://192.168.6.101/pub/AppStream enabled=1 gpgcheck-0 END yum clean all yum -y install httpd systemctl enable httpd --now %end ``` **通过kickstart脚本实现无人值守安装系统** 通过system-config-kickstart工具生成ks.cfg脚本文件 无论是在哪个版本通过工具生成的kicstart脚本文件都是通用 通过7版本的system-config-kickstart工具生成脚本文件 **在其他版本上安装system-configeRickstart图形化工具** 配置本地YUM仓库 安装软件包system-confg kickstart 执行命令system-cong-kickstart **通过kickstart脚本实现无人值守安装系统** 打开system-config-kickstart图形化工具,如下图 安装此工具只是为了通过工具生成kickstart脚本文件  **system-config-kickstart工具无法安装软件包?** ·默认情况下,当选择《软件包选择》的时候,会显示没有软件包 产生原因:开发者定义需要设置yum仓库 解决办法:修改yum仓库的仓库名为development  ------------------------------------------------------------------------------------------------------ **system-config-kickstart工具生成脚本文件(一)** 基本配置: 选择默认语言、键盘布局、时区选择 选择设置的root密码 选择目标系统的硬件架构、安装后是否重启。文本安装/图形化安装 ------------------------------------------------------------------------------------------------------- **system-config-kickstart工具生成脚本文件(二)** 安装方法: 选择执行全新安装 选择HTTP安装 ------------------------------------------------------------------------------------------------------- **system-config-kickstart工具生成脚本文件(三)** 安装引导程序: 选择安装新的引导装载程序 -------------------------------------------------------------------------------------------------------- **system-config-kickstart工具生成脚本文件(四)** 安装分区信息: 选择清楚引导记录、删除现存分区、初始化磁盘标签 自定义分区 ------------------------------------------------------------------------------------------------------- **system-config-kickstart工具生成脚本文件(五)** ·网络配置: 选择添加网络设置,指定网络获取方式 ------------------------------------------------------------------------------------------------------ **system-config-kickstart工具生成脚本文件(六)** 验证: 有需求可自定义,这里保持默认 ------------------------------------------------------------------------------------------------------ **system-config-kickstart工具生成脚本文件(七)** ·防火墙配置: 有需求可自定义,这里保持默认 ------------------------------------------------------------------------------------------------------ **system-config-kickstart工具生成脚本文件(八)** 显示配置: 安装图形化桌面或者是字符页面 ------------------------------------------------------------------------------------------------------ **system-config-kickstart工具生成脚本文件(九)** ·软件包选择 选择需要安装的软件包即可(不选择会出现无法安装的情况,选择任意的软件包安装即可) ------------------------------------------------------------------------------------------------------- **system-config-kickstart工具生成脚本文件(十)** 预安装脚本: 在安装之前执行的脚本 ------------------------------------------------------------------------------------------------------- **system-config-kickstart工具生成脚本文件(十一)** 安装后脚本: 在安装系统后执行的脚 ------------------------------------------------------------------------------------------------------- **system-config-kickstart工具生成脚本文件(十二)** 保存文件: 点击左上角文件-保存 ------------------------------------------------------------------------------------------------------- **system-config-kickstart工具生成脚本文件** 将生成的kickstart脚本文件传输到PXE服务器 > \[root@localhost \~\] # scp ks.cfg root@192.168.68.150:/var/www/html/ > **PXE服务器修改引导文件,执行kickstart脚本文件** 在PXE服务端修改启动的引导文件/var/lib/tftpboot/pxelinux.cfg/default 修改默认的倒计时时间为5秒 default vesamenu.c32 timeout 50 指定默认的标签位于第一项安装系统 指定kickstart脚本文件路径 