前言:
本文是一篇关于Linux系统初学者的实验记录。
参考书籍:《Linux就该这么学》
实验环境:
VmwareWorkStation 17——虚拟机软件
RedHatEnterpriseLinux[RHEL]8——红帽操作系统
备注:
实际生产中安装操作系统的工作,如果使用光盘镜像来安装操作系统,效率会相当低下。通过无人值守安装服务的PXE + Kickstart服务程序,搭建出一套可批量安装Linux系统的无人值守安装系统。
需手动安装部署:PXE+TFTP+FTP+DHCP+Kickstart等程序服务
正文:
PXE(Preboot eXecute Environment,预启动执行环境)是由Intel公司开发的技术,能够让计算机通过网络来启动操作系统(网卡需支持PXE技术),主要用于在无人值守安装系统中引导客户端主机安装Linux操作系统。
Kickstart是一种无人值守的安装方式,其工作原理是预先把原本需要运维人员手动填写的参数保存成一个ks.cfg文件,当安装过程中需要填写参数时则自动匹配Kickstart生成的文件。
所以只要Kickstart文件包含了安装过程中需要人工填写的所有参数,那么从理论上来讲完全不需要运维人员的干预,就可以自动完成安装工作。
由于当前客户端主机没有完整的操作系统,因此也就不能完成FTP协议的验证了,所以需要使用TFTP协议帮助客户端获取引导及驱动文件。vsftp服务程序用于将完整的系统安装镜像通过网络传输给客户端。
(也可以使用httpd来代替vsftpd服务程序)
实验准备:
服务名称 | 主要作用 |
dhcpd | 分配网卡信息及指引获取驱动文件 |
tftp-server | 提供驱动及引导文件的传输 |
SYSLinux | 提供驱动及引导文件 |
vsftpd | 提供完整系统镜像的传输 |
Kickstart | 提供安装过程中选项的问答设置 |
配置DHCP服务程序:
DHCP服务程序用于为客户端主机分配可用的IP地址,而且这是服务器与客户端主机进行文件传输的基础,因此要先行配置DHCP服务程序。
主机名称 | 操作系统 | IP地址 |
无人值守系统 | RHEL 8 | 192.168.10.10 |
客户端 | 未安装操作系统 | - |
iptables -F
systemctl stop firewalld
dnf install -y dhcp-server
这里配置文件使用的配置与一般配置的区别:
允许了BOOTP引导程序协议,旨在让局域网内暂时没有操作系统的主机也能获取静态IP地址;
在配置文件的最下面加载了引导驱动文件 pxelinux.0
其目的是让客户端主机获取到IP地址后主动获取引导驱动文件。
allow booting;
allow bootp;
ddns-update-style none;
ignore client-updates;
subnet 192.168.10.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.10.10;
range dynamic-bootp 192.168.10.100 192.168.10.200;
default-lease-time 21600;
max-lease-time 43200;
next-server 192.168.10.10;
filename "pxelinux.0";
}
这一步如果出错,说明没有正确配置IP地址。
查看并确认服务状态:
systemctl status dhcpd
配置TFTP服务程序:
vsftpd允许用户以匿名开放模式、本地用户模式、虚拟用户模式来进行访问认证。
但是当前客户机还没有安装操作系统,如何进行登录认证?
TFTP作为一种基于UDP协议的简单文件传输协议,为客户端主机提供引导及驱动文件。
当客户端主机有了基本的驱动程序之后,再通过vsftpd服务将完整的光盘镜像文件传输过去。
dnf install -y tftp-server xinetd
TFPT是一种非常精简的文件传输服务程序,它的运行和关闭是由xinetd网络守护进程服务来管理的。xinetd服务程序会同时监听系统的多个端口,然后根据用户请求的端口号调取相应的服务程序来相应用户的请求。需要开启TFTP服务程序时,只需在xinetd服务程序的配置文件中把disable参数改成no就可以了。如果配置文件不存在,需手动创建。
vim /etc/xinetd.d/tftp
service tftp
{
socket_sype = dgram
protocl = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cpd = 100 2
flags = IPv4
}
配置SYSLinux服务程序:
SYSLinux是一个用于提供引导加载的服务程序。与其说SYSLInux是一个服务程序,不如说是一个包含了很多引导文件的文件夹。在安装好SYSLinux服务程序后。
/usr/share/syslinux目录中会出现很多引导文件。
dnf install -y syslinux
首先,需要把SYSLinux提供的引导文件(pxelinux.0)复制到TFTP服务程序的默认目录中,这样客户端主机就能够顺利地获取到引导文件了。另外在RHEL 8系统光盘镜像中也有一些需要调取的引导文件。
确认光盘镜像已经被挂载到/media/cdrom后,使用复制命令将光盘镜像中自带的一些引导文件也复制到TFTP服务程序的默认目录中。
cd /var/lib/tftpboot
cp /usr/share/syslinux/pxelinux.0 .
cp /media/cdrom/images/pxeboot/* .
cp /media/cdrom/isolinux/* .
(.)表示当前工作目录。上述cp命令表示将文件复制到当前工作目录(/var/lib/tftpboot)中
在TFTP服务程序的目录中新建pxelinux.cfg目录。
将系统光盘中的开机选项菜单复制到该目录中,并命名为default。
mkdir pxelinux.cfg
cp /media/cdrom/isolinux/isolinux.cfg pxelinux.cfg/default
默认的开机菜单中有三个选项:安装系统、对安装介质进行检验、排错模式。
编辑default文件,帮助客户端自动选择。
line1:default ——linux
line 64 + :ftp://192.168.10.10 ks=ftp://192.168.10.10/pub/ks.cfg quiet
配置vsftpd服务程序
dnf install -y vsftpd
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
systemctl enable vsftpd
cp -r /media/cdrom/* /var/ftp
setsebool -P ftdp_connect_all_unreserved=on
创建Kickstart应答文件
Kickstart不是一个服务程序,而是一个应答文件。
Kickstart应答文件中包含了系统安装过程中需要使用的选项和参数信息,系统可以自动调取这个应答文件的内容,从而彻底实现无人值守安装系统。
在root管理员的家目录中有一个名为:anaconda-ks.cfg的文件,就是应答文件。
cp ~/anaconda-ks.cfg /var/ftp/pub/ks.cfg
chmod +r /var/ftp/pub/ks.cfg
line1-10:表示安装硬盘的名称为sda及使用LVM技术。
line 8:软件仓库,改为由FTP服务器提供的网络途径
line 10:由CDROM改为网络安装源:
line 11-20:keyboard参数为硬盘类型,一般不需修改
line 17:网卡信息一定要处于DHCP模式
line 21-30:timezone参数定义了系统默认时区为“上海”。
line:31-44:表示要安装的软件来源。
graphical-server-environment即带有图形化界面的服务器环境,对应安装界面中的Server With GUI选项
vim /var/ftp/pub/ks.cfg
#version=RHEL8
ignoredisk --only-use=sda
autopart --type=lvm
# Partition clearing information
clearpart --none --initlabel
# Use graphical install
graphical
repo --name="AppStream" --baseurl=ftp://192.168.10.10/AppStream
# Use CDROM installation media
url --url=ftp://192.168.10.10/BaseOS
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8
# Network information
network --bootproto=dhcp --device=ens160 --onboot=on --ipv6=auto --activate
network --hostname=linuxprobe.com
# Root password
rootpw --iscrypted $6$EzIFyouUyBvWRIXv$y3bW3JZ2vD4c8bwVyKt7J90gyjULALTMLrnZZmvVujA75EpCCn50rlYm64MHAInbMAXAgn2Bmlgou/pYjUZzL1
# X Window System configuration information
xconfig --startxonboot
# Run the Setup Agent on first boot
firstboot --enable
# System services
services --disabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc --nontp
user --name=linuxprobe --password=$6$a5fEjghDXGPvEoQc$HQqzvBlGVyhsJjgKFDTpiCEavS.inAwNTLZm/I5R5ALLKaMdtxZoKgb4/EaDyiPSSNNHGqrEkRnfJWap56m./. --iscrypted --gecos="linuxprobe"
%packages
@^graphical-server-environment
%end
%addon com_redhat_kdump --disable --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
自动部署客户机:
采用下面步骤建立虚拟主机时,一定要把客户端的网络模式设定成与服务端一致的“仅主机模式”
Step1:
新建虚拟机向导——自定义——下一步——Workstation16.x
Step2:
稍后安装操作系统——下一步
Step3:
客户操作系统设置为Linux,版本“Red Hat Enterprise Linux 8 64”——下一步
Step4:
对虚拟机进行命名并设置安装位置
Step5:
设置虚拟主机的网络连接类型为“使用仅主机模式网络”,随后的SCSI控制器类型选择默认的LSI Logic
Step6:
设置硬盘类型并指定容量。设置“虚拟磁盘类型”为SCSI或SATA。
Step7:
结束“新建虚拟机向导程序”后,找到自定义硬件,把网络适配器也设置为“仅主机模式”。
现在,PXE + Kickstart 无人值守安装系统与虚拟主机都准备好了。
在生产环境中,只需将配置妥当的服务器上架,联通服务器和客户端主机之间的网线,然后启动客户端主机即可。