从 USB 安装 Kickstart -- Kickstart 位置

doo*_*fas 12 linux fedora kickstart usb

在添加 kickstart 文件(https://serverfault.com/questions/548405/)后设法让 Fedora ISO 成功重建(用于 USB 记忆棒)后,我现在在 USB 媒体上定位 kickstart 文件时遇到问题.

当这是从 CDROM 完成时,您可以通过添加此参数来启动简单的 kickckstart:

linux ks=cdrom
Run Code Online (Sandbox Code Playgroud)

这将kickstart(假设kickstart 文件名为ks.cfg 并且位于磁盘的根目录中)。

现在,显然这对于​​ USB 驱动器会有所不同,所以根据我的研究,我认为这条线可以完成这项工作:

linux ks=hd:sdb1:/ks.cfg
Run Code Online (Sandbox Code Playgroud)

显然这行不通。我收到一条错误消息,通知我此驱动器已安装且无法重新安装。

编辑:实际错误消息:

mount: /dev/sdb1 is already mounted or /run/install/tmpmnt0 busy
Warning: Can't get kickstart from /dev/sdb1:/ks.cfg
Run Code Online (Sandbox Code Playgroud)

为了测试语法是否正确,我将 kickstart 文件放在另一个 U 盘上并加载了相同的命令以从新位置获取 ks.cfg:

linux ks=hd:sdc1:/ks.cfg
Run Code Online (Sandbox Code Playgroud)

这确实有效(如果 USB 记忆棒按顺序安装,引导 -> sdb1,kickstart -> sdc1)。安装将启动并顺利完成安装。显然必须使用 2 个笔式驱动器有点令人沮丧和不可靠。

有没有解决的办法?

Kel*_*zil 9

我能够通过执行以下操作来解决这个问题:

  • 将 kickstart 文件放在isolinux目录的顶部并确保它被命名ks.cfg
  • 我的isolinux.cfg文件是这样的:

    label linux
      menu label ^Install CentOS 7
      kernel vmlinuz
      append initrd=initrd.img inst.ks=hd:LABEL=CentOS\x207\x20x86_64:/isolinux/ks.cfg inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet
    
    Run Code Online (Sandbox Code Playgroud)

引用时使用驱动器标签ks.cfg可以使生成的 iso 映像更易于移植。(它可以变成一个可启动的USB驱动器)


siv*_*ann 5

我已经尝试了所有方法,但似乎只有这个有效:将 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
Run Code Online (Sandbox Code Playgroud)

然后像往常一样继续创建图像:

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 ..
Run Code Online (Sandbox Code Playgroud)