Linux
從 USB 進行 Kickstart 安裝 – Kickstart 位置
在添加 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 ..