本文记录了kickstart(下文简称ks)配合pxe实现无人值守部署almalinux以及完成对新设备的基本配置,使用环境为vbox虚拟机
本文一定程度属于PXE服务部署 的后篇,这两篇文章记录了在局域网内无人值守情况下完成装机,配置的自动化
参考:
执行高级 RHEL 9 安装 Red Hat Enterprise Linux 9 | Red Hat Customer Portal
思路 ks自动化安装实际上步骤非常简单,只需要提前准备好一份可用的ks文件,放在某个引导程序能够访问的地方,之后为引导程序提供相关参数即可
实践 Step1-准备ks文件 红帽文档提供了几种创建方法。其中最简单的就是用红帽的ks配置工具创建和手动安装完红帽后在对系统自动生成的ks文件进行修改
在手动安装完系统之后,系统会根据你安装过程中做的选项自动生成一份anaconda-ks.cfg
文件在/root
目录
前者需要你注册红帽账户并拥有一份红帽订阅我有红帽订阅我就不会用almalinux了。这对于我们这种穷鬼实在是不友好。所以我选择后者
首先手动安装一次almalinux,这时候做的选择将保存在之后使用的ks文件中
Step2-修改ks文件 对于定制ks文件,红帽给了一份参考手册 附录 A. kickstart 脚本文件格式参考 ,这对自动化配置十分有用,这是笔者准备的ks文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 graphical reboot %addon com_redhat_kdump --enable --reserve-mb='auto' %end keyboard --xlayouts='us' lang en_US.UTF-8 url --url="http://192.168.56.50/almalinux/cdrom" %packages @^minimal-environment @development @headless-management @network-server @security-tools @standard @system-tools %end firstboot --enable ignoredisk --only-use=sda autopart clearpart --none --initlabel timezone Asia/Shanghai --utc rootpw --iscrypted $6$VomxZOUxGqhLUZIm$7zKIbs .0ZN6ogrfVatEGJ4BZhDhskRq53OIrQ5bJXlI8u51CVoXEhKb8InQeBXVD1DtBSMxTtv6PYQBOJrUL01 user --groups =wheel --name=baka --password=$6$FV09VHp5mYBE5XIJ$vxClFpJV .yTgrCEisPSSZQ1kGinMO/1WcONLbOm5Dng1UCb2dahEQ9yU/VkQIdvfBKWiKhUmQKLmKI0B378KD0 --iscrypted --gecos="baka" cmdline %post --log =/root/ks-post.log --interpreter=/usr/bin/bash sed -e 's|^mirrorlist=|#mirrorlist=|g' \ -e 's|^# baseurl=https://repo.almalinux.org|baseurl=https://mirrors.aliyun.com|g' \ -i.bak \ /etc/yum.repos.d/almalinux*.repo dnf install -y epel-release-9-5.el9.noarch dnf upgrade -y dnf install -y neovim ranger nginx dnf install -y xorg-x11-xauth xorg-x11-fonts-\* xorg-x11-utils dbus-x11 xsel xclip xclock php echo "AllowUsers baka" >> /etc/ssh/sshd_configsed -e 's/^#\tX11Forwarding no/X11Forwarding yes/g' -i.bak /etc/ssh/sshd_config if [ ! -f /usr/share/nvim/sysinit.vim ] then touch /root/warnVimConf else cat > /usr/share/nvim/sysinit.vim <<- 'EOF' set number set relativenumber set cursorline syntax enable set smartindent set nocompatible set clipboard+=unnamedplus set hidden EOF fi su baka << EOF mkdir -p /home/baka/pubkey mkdir -p /home/baka/.ssh chmod 700 /home/baka/.ssh curl http://192.168.56.50/pubkey/id_rsa.pub -o /home/baka/pubkey/almalinuxRouter.pub cat /home/baka/pubkey/almalinuxRouter.pub >> /home/baka/.ssh/authorized_keys chmod 600 /home/baka/.ssh/authorized_keys rm /home/baka/pubkey/almalinuxRouter.pub EOF curl http://192.168.56.50/sr0.tar -o /root/sr0.tar tar -xvf /root/sr0.tar touch /etc/sudoers.d/bakaecho -e 'baka\tALL=(ALL)\tNOPASSWD: ALL' >> /etc/sudoers.d/baka%end
笔者用的是最小化安装的iso文件,因此软件环境也是最小化环境,至于软件包组和定制软件包定制可以参考手册
在这份文件中,笔者基本上只修改了两个部分:
Step3-放置ks文件到合适位置 笔者将ks文件放置到了httpd服务器 中,并且已经正确配置好文件的权限:
1 2 3 4 5 [root@routerAlmaLinux ksfile] /var/www/html/ksfile/ └── ks-pxe.cfg 0 directories, 1 file
客户机访问测试:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 [baka@server1 ~]$ curl http://192.168.56.50/ksfile/ks-pxe.cfg | head -n 10 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 2253 100 2253 0 0 244k 0 --:--:-- --:--:-- --:--:-- 275k graphical reboot %addon com_redhat_kdump --enable --reserve-mb='auto' %end
可以看到放置的位置其他主机可以能正常访问
Step4-配置引导程序 BIOS引导(pxelinux/syslinux) 在append
条目中追加inst.ks
选项并指定参数:
1 2 3 [root@routerAlmaLinux ksfile] append initrd=pxeboot/initrd.img inst.repo=http://192.168.56.50/almalinux/cdrom inst.ks=http://192.168.56.50/ksfile/ks-pxe.cfg
UEFI引导(GRUB) 在/var/lib/tftpboot/EFI/BOOT/grub.cfg
中的内核条目追加inst.ks
选项并指定参数
位置在这里第三行:
1 2 3 4 5 menuentry 'Install AlmaLinux 9.3' --class fedora --class gnu-linux --class gnu --class os { linuxefi pxeboot/vmlinuz inst.repo=http://192.168.56.50/almalinux/cdrom/ inst.ks=http://192.168.56.50/ksfile/ks-pxe.cfg initrdefi pxeboot/initrd.img }
这里改的是fedora的配置文件,所以和红帽的手册有出入
如果需要指定默认启动项,在pxelinux
的配置文件中对应启动项的label
行下添加menu default
在grub
的配置文件中则添加一行GRUB_DEFAULT
并指定参数,GNU手册内记录了参数如何配置
Step5-安装系统 如果配置了pxeboot和设定了引导程序的启动项此时开机后就可以AFK了
补充 update 2024-4-25
当在windows编辑完ks文件需要将文本格式由dos转为unix。以vi为例,:set ff?
查询文件格式;:set ff=unix
将文件格式修改为unix格式。如果不修改格式将导致ks文件post脚本无法执行
关于vbox的题外话:如果需要使用windows网络共享功能将上网网卡的网络分享给vbox的仅主机网卡,包括但不限于需要重新修改vbox网卡ip再修改回去、重启宿主机、将vbox整张网卡的选项给改了……诸如此类操作才能正常共享出去
vbox的网络真的是坑中坑……