Rhel

PXE Boot Kickstart - 如何包含安裝樹

  • November 21, 2021

我正在嘗試 PXE 引導 R​​ocky Linux(與 RHEL 8 相同)安裝。與 Fedora 不同的是,沒有鏡像,所以像這樣的 url 和 repo 選項不起作用:

url --mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-34&arch=x86_64
repo --name=updates --mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-f34&arch=x86_64

因此,當 PXE 啟動 grub.cfg 時,它沒有可以從中提取安裝文件的媒體。如果我在安裝了 Rocky 安裝 ISO 的情況下啟動 VM,kickstart 文件可以完美執行 - 所以我知道問題在於引導程序找到 iSO。我希望 kickstart 文件引用具有 ISO 的公共 NFS 共享,而不是配置 VM 以將 ISO 掛載為驅動器… 什麼是 kickstart repo 語法來做到這一點?

這是 grub.cfg 中的條目:

menuentry 'Teichos' {
 linuxefi Rocky8/vmlinuz ip=dhcp inst.ks=nfs:192.168.0.100:/pve/kickstart/rocky-minimal.ks
 initrdefi Rocky8/initrd.img
}

這是我的 kickstart 文件:

#version=RHEL8
# Use graphical install
# graphical
text

repo --name="AppStream" --baseurl=file:///run/install/sources/mount-0000-cdrom/AppStream


%packages
@^minimal-environment
@network-server
kexec-tools

%end

# Keyboard layouts
keyboard --xlayouts='au'
# System language
lang en_AU.UTF-8

# Network information
network  --bootproto=dhcp --device=ens18 --ipv6=auto --activate
network  --hostname=teichos.mydomain.net

# Use CDROM installation media
cdrom

# Run the Setup Agent on first boot
firstboot --enable

# Accept the eula
eula --agreed

ignoredisk --only-use=sda
# Partition clearing information
clearpart --none --initlabel
# Disk partitioning information
part /boot/efi --fstype="efi" --ondisk=sda --size=600 --fsoptions="umask=0077,shortname=winnt"
part /boot --fstype="xfs" --ondisk=sda --size=1024
part pv.111 --fstype="lvmpv" --ondisk=sda --size=31142
volgroup rl --pesize=4096 pv.111
logvol swap --fstype="swap" --size=3276 --name=swap --vgname=rl
logvol / --fstype="xfs" --grow --size=1024 --name=root --vgname=rl

# System timezone
timezone Australia/Melbourne --isUtc

#Root password
rootpw --lock
user --groups=wheel --name=admin --password=$6$t23FE4wlPddt68ys$1GfPaRk42VVC4HYFPe9VQAhMjzgA1IYmkTBkMzSdubdBQuCkZp0PAuyzNmABF0n16kiMd7YCD2TNEgr5o/QAX/ --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

安裝 CD 位於:

nfs:192.168.0.100:/ISOs/Rocky-8.4-x86_64-dvd1.iso

我還沒有測試過 Rocky,所以這個答案是基於 RHEL/CentOS,但我希望它本質上是一樣的。

網路啟動過程將需要 squashfs 安裝程序映像:它應該在安裝 CD 上的images/install.img.

如果您不想掛載 ISO 映像,那麼您應該從 ISO 中提取該映像並使其通過 HTTP 可用。可以使用inst.stage2=引導參數指定自定義位置。您可能還需要 ISO 根目錄中的隱藏.treeinfo文件。

在我的設置中,我有這樣的網路啟動參數:

ip=dhcp inst.stage2=http://boot.server/rhel8 inst.lang=en_US inst.keymap=us inst.ks=http://boot.server/rhel8/rhel8config.ks

當 RHEL 8 安裝程序 initramfs 被賦予該inst.stage=http://boot.server/rhel8選項時,它首先檢查是否存在http://boot.server/rhel8/.treeinfo. 所以它基本上希望找到 RHEL 8 ISO 映像的完整內容。如果該.treeinfo文件不存在,它將嘗試在http://boot.server/rhel8/images/install.img. 所以它基本上會附加/images/install.img到你指定的任何內容。

.treeinfo文件將為該install.img文件指定一個 sha256 雜湊值,如果它可用,安裝程序實際上可能會使用它來進行完整性檢查,因此您可能也想提供該.treeinfo文件。

一旦載入了 stage2 映像,安裝程序將擁有足夠的功能來完成它要做的所有事情,因此它將能夠解析 kickstart 文件、掛載 NFS 共享等。在載入 stage2 之前,它只能訪問 HTTP、HTTPS 和FTP 伺服器。因此,一旦您確定安裝程序可以載入 stage2 映像,您就可以添加引導選項inst.repo=nfs:192.168.0.100:/ISOs/Rocky-8.4-x86_64-dvd1.iso以使其使用您的 ISO 映像。

引用自:https://unix.stackexchange.com/questions/678345