Linux

從 USB 進行 Kickstart 安裝 – Kickstart 位置

  • September 15, 2017

在添加 kickstart 文件 ( https://serverfault.com/questions/548405/ )後設法成功重建 Fedora ISO(對於 USB 記憶棒)後,我現在在 USB 媒體上定位 kickstart 文件時遇到問題.

當這是從 CDROM 完成時,您可以簡單地通過將這個參數添加到引導來 kickckstart:

linux ks=cdrom

這將啟動(假設 kickstart 文件名為 ks.cfg 並且位於磁碟的根目錄中)。

現在,顯然這對於 USB 驅動器會有所不同,所以根據我的研究,我認為這條線可以完成這項工作:

linux ks=hd:sdb1:/ks.cfg

顯然這不起作用。我收到一條錯誤消息,通知我此驅動器已安裝且無法重新安裝。

編輯:實際錯誤資訊:

mount: /dev/sdb1 is already mounted or /run/install/tmpmnt0 busy
Warning: Can't get kickstart from /dev/sdb1:/ks.cfg

為了測試語法是否正確,我將 kickstart 文件放在另一個 U 盤上並載入相同的命令以從新位置獲取 ks.cfg:

linux ks=hd:sdc1:/ks.cfg

這確實有效(假設 U 盤按順序安裝,啟動 -> sdb1,kickstart -> sdc1)。安裝將啟動並順利完成安裝。顯然,必須使用 2 個筆式驅動器有點令人沮喪和不可靠。

有沒有解決的辦法?

我已經嘗試了所有方法,但似乎只有這個可行:將 ks.cfg 放入 initrd 中。因此,下面的步驟提取 initrd,在其中添加 ks.cfg,然後重新創建它。用 CentOS7 測試

首先在你的電腦上掛載原始的.iso 映像,並將其內容複製到 tmp/

然後,

#Keep the original file
cp -ai tmp/isolinux/initrd.img initrd.img.orig
mkdir irmod
cd irmod

#Extract initrd in irmod/
xz -d < ../tmp/isolinux/initrd.img | cpio --extract --make-directories --no-absolute-filenames

#Add the ks.cfg in there
cp ../tmp/ks.cfg .

# Recreate the initrd.img inside isolinux/
find . | cpio -H newc --create | xz --format=lzma --compress --stdout > ../tmp/isolinux/initrd.img

#cleanup
cd ..
rm -r irmod

# Add  ks=file:/ks.cfg to the boot parameters in isolinux.cfg. you can do it by hand, this is an example for our own isolinux.cfg
sed -s -i 's|ks=.*ks\.cfg ksdevice=link|ks=file:/k1.cfg|' ../tmp/isolinux/isolinux.cfg ../isolinux.cfg

然後像往常一樣繼續創建圖像:

cd tmp/

imgname="inaccess-centos7-ks1-v1.iso"
xorriso -as mkisofs -R -J -V "CentOS 7 x86_64" -o "../${imgname}" \
       -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4  \
       -boot-info-table -isohybrid-mbr /usr/share/syslinux/isohdpfx.bin .
cd ..

引用自:https://serverfault.com/questions/549121