介绍PXE和Kickstart实现Rocky 9自动网络安装的步骤。
PXE 自动装机 (Rocky 9)h1
什么是 PXE 自动装机?
PXE(预启动执行环境)提供了一种使计算机通过网络启动的机制。当系统通过网络启动时,BIOS 使用 PXE 进行引导,然后加载一个由网络提供的操作系统映像。
什么是 Kickstart?
PXE 本身不能决定安装哪种操作系统、如何安装以及安装过程中的各种设置。Kickstart 文件则包含了自动安装所需的所有配置,例如安装哪些软件包、如何划分磁盘等。
基础环境h2
注意:下文中
169.254.0.1即为 PXE 服务器的 IP 地址。
systemctl disable firewalld --nowsetenforce 0 # 记得配置持久化FTP 配置h2
我们使用 FTP 将操作系统安装介质共享给 PXE 引导客户端。
安装 vsftpd 包并启用服务:
yum install vsftpd -ysystemctl enable vsftpd编辑 /etc/vsftpd/vsftpd.conf:
anonymous_enable=YESlocal_enable=NOwrite_enable=NOlocal_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESftpd_banner=Welcome to homelab FTP service.listen=YESlisten_ipv6=NOlisten_port=21pam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YESpasv_enable=YESpasv_address=169.254.0.1pasv_min_port=60000pasv_max_port=60029启动 FTP 服务:
systemctl start vsftpd安装 tftp-server 软件包并启用服务:
yum install tftp-server -ysystemctl enable tftp && systemctl start tftp安装介质h2
下载 Rocky-9.3 ISO 映像,确保获取完整的 DVD 版本(例如从官方镜像站):
Rocky-9.3-x86_64-dvd.iso挂载映像并将其内容复制到 FTP 位置:
mkdir -p /mnt/iso /var/ftp/pub/pxe/Rocky-9.3-x86_64mount Rocky-9.3-x86_64-dvd.iso /mnt/isocp -prv /mnt/iso/* /var/ftp/pub/pxe/Rocky-9.3-x86_64/umount /mnt/iso验证:
curl ftp://169.254.0.1/pub/pxe/Rocky-9.3-x86_64/# 预期输出类似:drwxr-xr-x 4 0 0 38 Nov 12 08:03 AppStreamdrwxrwxr-x 4 0 0 38 Nov 12 22:40 BaseOSdrwxrwxr-x 3 0 0 18 Nov 12 21:32 EFI-rw-r--r-- 1 0 0 2204 Oct 20 2023 LICENSEdrwxrwxr-x 3 0 0 59 Nov 12 21:32 imagesdrwxrwxr-x 2 0 0 239 Nov 12 21:32 isolinux-rw-r--r-- 1 0 0 101 Nov 12 22:33 media.repo创建 Kickstart 文件h2
以下是我用于 Rocky-9.3-x86_64-dvd.iso 服务器(需要 32 GB 磁盘)的 Kickstart 文件,保存为 /var/ftp/pub/pxe/Rocky-9.3-x86_64.cfg:
# Use network installationurl --url="ftp://169.254.0.1/pub/pxe/Rocky-9.3-x86_64/BaseOS/"repo --name="AppStream" --baseurl="ftp://169.254.0.1/pub/pxe/Rocky-9.3-x86_64/AppStream/"# Disable Initial Setup on first bootfirstboot --disable
# Use text mode installtext# Keyboard layoutskeyboard --vckeymap=gb --xlayouts='gb'# System languagelang en_GB.UTF-8# SELinux configurationselinux --enforcing# Firewall configurationfirewall --enabled --ssh# Do not configure the X Window Systemskipx
# Network informationnetwork --bootproto=dhcp --device=ens18 --noipv6 --activate
# System authorisation informationauth --useshadow --passalgo=sha512# Root passwordrootpw ******# Root SSH public keysshkey --username=root "******"# System timezonetimezone Asia/Shanghai --utc
ignoredisk --only-use=sda# System bootloader configurationbootloader --location=mbr --timeout=1 --boot-drive=sda# Clear the Master Boot Recordzerombr# Partition clearing informationclearpart --all --initlabel# Reboot after installationreboot
# Disk partitioning informationpart /boot --fstype="xfs" --ondisk=sda --size=1024 --label=boot --asprimary --fsoptions="rw,nodev,noexec,nosuid"part pv.01 --fstype="lvmpv" --ondisk=sda --size=31743volgroup vg_os pv.01
# 根据需求配置分区logvol / --fstype="xfs" --size=31743 --label="lv_root" --name=lv_root --vgname=vg_os
%packages@^minimal-environmentsudoqemu-guest-agentopenssh-server-alsa*-microcode_ctl-iwl*firmware-dracut-config-rescue-plymouth%end
%addon com_redhat_kdump --disable --reserve-mb='auto'%end
%postsed -i 's/^.*requiretty/#Defaults requiretty/' /etc/sudoerssed -i 's/rhgb //' /etc/default/grubsed -i "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g" /etc/ssh/sshd_config/usr/bin/systemctl enable sshd# 其他需要执行的脚本%end安装 Syslinuxh2
Syslinux 项目提供了用于网络引导的轻量级引导加载程序(如 PXELINUX)。
安装 syslinux 软件包:
yum install syslinux -y将 syslinux 引导加载程序复制到 tftp 服务器的引导目录:
cp -prv /usr/share/syslinux/* /var/lib/tftpboot/将 Rocky-9.3-x86_64-dvd.iso 安装介质中的 initrd.img 和 vmlinuz 复制到 tftp 目录:
mkdir -p /var/lib/tftpboot/networkboot/Rocky-9.3-x86_64cp -pv /var/ftp/pub/pxe/Rocky-9.3-x86_64/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/networkboot/Rocky-9.3-x86_64/创建 PXE 配置目录:
mkdir -p /var/lib/tftpboot/pxelinux.cfg创建 PXE 启动配置文件 /var/lib/tftpboot/pxelinux.cfg/default,内容如下:
default menu.c32prompt 0timeout 50menu title Homelab PXE Menulabel Install Rocky Linux 9 Server kernel /networkboot/Rocky-9.3-x86_64/vmlinuz append initrd=/networkboot/Rocky-9.3-x86_64/initrd.img inst.repo=ftp://169.254.0.1/pub/pxe/Rocky-9.3-x86_64/ inst.ks=ftp://169.254.0.1/pub/pxe/Rocky-9.3-x86_64.cfgDHCP 配置h2
yum install dhcpd -y编辑 /etc/dhcp/dhcpd.conf:
ddns-update-style interim;
allow booting;allow bootp;
ignore client-updates;set vendorclass = option vendor-class-identifier;
option pxe-system-type code 93 = unsigned integer 16;
subnet 192.168.0.0 netmask 255.255.255.0 { option routers 169.254.0.1; option domain-name-servers 169.254.0.1; option subnet-mask 255.255.255.0; range dynamic-bootp 192.168.0.150 192.168.0.200; default-lease-time 21600; max-lease-time 43200; next-server 169.254.0.1; filename "pxelinux.0";}
# group for Cobbler DHCP tag: defaultgroup {}接下来用网线将 PXE 服务器与被装机连接,然后将被装机从网络启动即可。