无人值守安装系统能自动化为大量客户机安装linux操作系统,将人从繁琐的安装过程中解放出来。
PXE(preboot eXecute Environment ,预启动执行环境): 让计算机通过网络来启动操作系统(服务器网卡需要支持PXE技术),主要用于在无人值守安装系统中引导客户机安装linux系统。
Kickstart : 是一种无人值守的安装方式,Kickstart程序生成ks.cfg应答文件,在系统安装过程中自动填写其中的参数。
PXE+TFTP+FTP+DHCP+KickStart
在部署无人值守安装系统时,需要使用到以下几种服务程序:
部署DHCP服务器是为了在执行无人值守安装系统时,服务器主机能和客户机在同一个网段内。这样服务器和主机之间才能相互通讯。所以在虚拟机中实验时,需要将虚拟机中的DHCP服务功能关闭,使用当下正在部署的DHCP服务程序。在实际生产环境中,同样需要将服务器自身的DHCP服务功能关闭,防止实际网络中的DHCP服务功能给客户机提供的IP地址和服务器IP地址不在同一个网段内。通过部署无人值守系统安装服务中的DHCP服务器,能够确保客户机与服务器在同一个IP地址段内,也就能够相互通信。
yum install dhcpd
配置文件在/etc/dhcp/
路径下的dhcpd.conf
文件。
配置关键:
配置文件内容如下
[root@chrisgoudan ~]# vim /etc/dhcp/dhcpd.conf
allow booting;
allow bootp; <<<<允许bootp引导驱动程序协议
ddns-update-style interim; <<<<<<定义DNS服务动态更新类型为:互动更新模式
ignore client-updates; <<<<忽略客户机更新DNS记录
subnet 192.168.127.0 netmask 255.255.255.0{ <<<<<<设置DHCP服务器网段和子网掩码
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.127.1; <<<<<<定义DNS服务器地址
range dynamic-bootp 192.168.127.50 192.168.127.200; <<<<<定义可使用的地址池
default-lease-time 21600;
max-lease-time 43200;
next-server 192.168.127.1; <<<<<指定客户端启动过程中下一步使用的网络服务器IP地址。
filename "pxelinux.0" ;
}
注意在编辑配置文件时,语句后不要忘了加逗号。启动DHCP
[root@chrisgoudan ~]# systemctl start dhcpd
[root@chrisgoudan ~]# systemctl status dhcpd
● dhcpd.service - DHCPv4 Server Daemon
Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; disabled; vendor preset: disabled)
Active: active (running) since Mon 2020-08-31 20:20:42 CST; 11s ago
TFTP是一种基于UDP协议的简单文件传输协议,无需用户认证即可获取到所需的文件资源。配置TFTP服务程序为客户端主机提供引导及驱动文件。当客户端主机有基本的驱动程序之后,再通过vsftpd服务程序将完整的光盘镜像文件传输过去。
yum install tftp-server
tftp服务程序的安装与部署详情见CentOS8 TFTP部署
SYSLinux是一个用于提供引导加载的服务程序。部署SYSLinux服务程序是为了使用其中的引导文件。
由于需要使用系统光盘镜像中的引导文件,所以需要挂载光盘镜像。这里使用自动挂载服务。自动挂载服务详情请移步自动挂载服务部署
具体配置如下
yum install autofs
[root@chrisgoudan ~]# vim /etc/auto.master
/misc /etc/auto.misc
[root@chrisgoudan ~]# vim /etc/auto.misc
iso -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
systemctl start autofs
systemctl enable autofs
[root@chrisgoudan iso]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 368M 0 368M 0% /dev
tmpfs 396M 0 396M 0% /dev/shm
tmpfs 396M 12M 385M 3% /run
tmpfs 396M 0 396M 0% /sys/fs/cgroup
/dev/mapper/cl_linuxprobe-root 27G 5.2G 22G 20% /
/dev/sda1 976M 273M 637M 30% /boot
tmpfs 80M 1.2M 79M 2% /run/user/42
tmpfs 80M 4.6M 75M 6% /run/user/1000
/dev/sr0 7.7G 7.7G 0 100% /misc/iso
[root@chrisgoudan iso]# cd /misc/iso
[root@chrisgoudan iso]# ll
总用量 12
dr-xr-xr-x. 4 yang yang 2048 6月 9 06:08 AppStream
dr-xr-xr-x. 4 yang yang 2048 6月 9 06:08 BaseOS
dr-xr-xr-x. 3 yang yang 2048 6月 9 06:08 EFI
dr-xr-xr-x. 3 yang yang 2048 6月 9 06:08 images
dr-xr-xr-x. 2 yang yang 2048 6月 9 06:08 isolinux
-r--r--r--. 1 yang yang 87 6月 9 06:07 media.repo
-r--r--r--. 1 yang yang 664 6月 9 06:08 TRANS.TBL
自动挂载成功
yum install syslinux
TFTP默认目录路径为:/var/lib/tftpboot
需要使用到的文件有
/usr/share/syslinux/pxelinux.0
引导驱动文件/misc/iso/images/pxeboot/
下的vmlinuz,initrd.img
文件/misc/iso/isolinux/
下的vesamenu.c32,boot.msg
文件[root@chrisgoudan ~]# cd /var/lib/tftpboot
[root@chrisgoudan tftpboot]# cp /usr/share/syslinux/pxelinux.0 .
[root@chrisgoudan tftpboot]# ll
总用量 48
-rw-r--r--. 1 root root 42791 8月 31 21:28 pxelinux.0
-rw-r--r--. 1 root root 21 8月 13 10:06 tftptest.txt
[root@chrisgoudan tftpboot]# cp /misc/iso/images/pxeboot/{vmlinuz,initrd.img} .
[root@chrisgoudan tftpboot]# ll
总用量 72348
-r--r--r--. 1 root root 65114456 8月 31 21:29 initrd.img
-rw-r--r--. 1 root root 42791 8月 31 21:28 pxelinux.0
-rw-r--r--. 1 root root 21 8月 13 10:06 tftptest.txt
-r-xr-xr-x. 1 root root 8913656 8月 31 21:29 vmlinuz
[root@chrisgoudan tftpboot]# cp /misc/iso/isolinux/{vesamenu.c32,boot.msg} .
[root@chrisgoudan tftpboot]# ll
总用量 72380
-r--r--r--. 1 root root 84 8月 31 21:30 boot.msg
-r--r--r--. 1 root root 65114456 8月 31 21:29 initrd.img
-rw-r--r--. 1 root root 42791 8月 31 21:28 pxelinux.0
-rw-r--r--. 1 root root 21 8月 13 10:06 tftptest.txt
-r--r--r--. 1 root root 26788 8月 31 21:30 vesamenu.c32
-r-xr-xr-x. 1 root root 8913656 8月 31 21:29 vmlinuz
pxelinux.cfg
目录default
文件default
文件[root@chrisgoudan tftpboot]# mkdir pxelinux.cfg
[root@chrisgoudan tftpboot]# cd pxelinux.cfg/
[root@chrisgoudan pxelinux.cfg]# cp /misc/iso/isolinux/isolinux.cfg ./default <<复制isolinux.cfg文件到当前目录下并命名为default
[root@chrisgoudan pxelinux.cfg]# ll
总用量 4
-r--r--r--. 1 root root 3075 8月 31 21:44 default
[root@chrisgoudan pxelinux.cfg]# chmod 700 default <<<<<修改文件权限
在编辑配置文件时,可以使用set nu
命令显示行号
vim default
1 default linux <<<<安装时,自动执行名称为linux选项
.......省略输出.....
61 label linux
62 menu label ^Install CentOS Linux 8
63 kernel vmlinuz
64 append initrd=initrd.img inst.stage2=ftp://192.168.127.1 ks=ftp://192.168.127.1/pub/ks.cfg quiet
inst.stage2=ftp://192.168.127.1
表示将默认的光盘镜像获取网址,为FTP传输
ks=ftp://192.168.127.1/pub/ks.cfg
表示为KickStart应答文件获取路径
详情请移步CentOS8 vsftpd服务配置
以上部署都环境都只是在为客户机传输光盘镜像系统文件做准备。
KickStart应答文件中包含了系统安装过程中需要使用的选项和参数信息,系统可以自动调取这个应答文件的内容。
应答文件在:root管理员家目录下的anaconda-ks.cfg
**步骤: **
var/ftp/pub
目录下除了使用系统自带的默认应答文件外,还可以使用system-config-kickstart
软件包,来自动生成符合自己需要的应答文件
cp anaconda-ks.cfg /var/ftp/pub/ks.cfg
chmod +r /var/ftp/pub/ks.cfg
在CentOS8中没有system-config-kickstart
软件包,所以使用图形软件自动生成应答文件就别想了。
编辑应答文件
......省略输出......
# Partition clearing information
clearpart --all --initla <<<<<删除磁盘中内数据并初始化
.........省略输出..............
# Use CDROM installation media
url --url=ftp://192.168.127.1 <<<<<<<<使用ftp协议对系统镜像文件进行传输
........省略输出.................
# System timezone
timezone Asia/Shanghai --isUtc <<<<<<<设置系统时区
........省略输出....................
以上无人值守安装系统服务配置已经完成,在虚拟机中创建新虚拟机,选择稍后安装系统,并将网络适配器选择为仅主机模式,以便客户机通服务器主机通讯。之后便能自动安装系统。
如果网络带宽够大也可以设置为使用http网址进行系统镜像文件传输,其他配置与部署都差不多。
大体流程如上:
但是没有实验成功
原因1: 很久之前手贱把anaconda-ks.cfg
文件删除了
原因2: 之前部署了很多服务,现在有点懵圈,忘了部署的这几个服务部署成什么方式了
原因3: 尝试过解决之前部署服务出现的问题,以便能再次成功运行。但是没有成功,花费了大量时间
原因4: 时间不够用,得抓紧弄完这本书,准备考教资,看论文,找实习