如何通过 PXE 将内核参数传递给类似 Ubuntu 的操作系统安装程序 ISO?

如何通过 PXE 将内核参数传递给类似 Ubuntu 的操作系统安装程序 ISO?

我处于一个困难的情况,我需要远程安装广达存储(基于 Ubuntu -) 设备安装到具有有限带外访问功能的硬件上。

目标系统是HP ProLiant DL180 G6 服务器,拥有完全许可的熄灯 LO100i远程 KVM。这是 ILO3 或 ILO4 管理处理器的一大退步。该硬件的挑战在于LO100i 的虚拟媒体功能不可靠随着 Java 版本的不断更新,这个 ILO 变得不再有用。目前,我无法通过远程媒体启动系统,尽管此功能在过去运行良好

因此,我的下一步是尝试使用 QuantaStor ISO 映像以 PXE 方式启动此服务器。奇怪的是,关于如何可以直接通过 PXE 启动 ISO 映像,而无需链接引导加载程序等。经过一些实验,我发现我可以使用memdisk通过 PXE 服务器。我控制此环境中的 DNS 和 DHCP,因此我采用标准方式修改/etc/dhcpd.conf配置文件以反映以下内容:

# Begin temporary PXE boot
allow booting;
allow bootp;
option option-128 code 128 = string;
option option-129 code 129 = text;
next-server 172.30.27.5;
filename "/pxelinux.0";
# End temporary PXE boot

对于我的 PXE 配置,我设置/tftpboot/pxelinux.cfg/default为:

default menu.c32
prompt 0
timeout 300
ONTIMEOUT local

MENU TITLE PXE Menu

LABEL QuantaStor
        MENU LABEL QuantaStor
        KERNEL memdisk
        APPEND iso initrd=images/osn_quantastor_v3.8.2.5441.iso raw

这些功能让我能够让系统开始启动 ISO。不幸的是,远程 KVM 的控制台产生了以下乱码视频输出:

在此处输入图片描述

设备的安装屏幕应该看起来像这样:

在此处输入图片描述

经过多次重启和一些基础研究后,我发现 LO100 远程 KVM分享此帧缓冲区症状和一些Supermicro IPMI 板。解决方法是传递vga16fb.modeset=0给启动参数。这是 Ubuntu 独有的()。

我如何才能将此语句放入 PXE 引导 ISO 的参数行中?

我应该在哪里添加声明?

在“APPEND”行中尝试这样做/tftpboot/pxelinux.cfg/default似乎没有帮助。Ubuntu 提示建议通过F6在 ISO 启动屏幕上按下来添加该行。我的远程 KVM 到那时就乱七八糟了,我无法手动添加它。

有任何想法吗?


更新:

我提取了 ISO 并修改了 isolinux.cfg 文件以在内核 APPEND 行上更改安装程序的帧缓冲区支持。系统启动并且安装程序似乎可以正常工作……但我现在收到有关 CDROM 的错误。我假设我的 PXE 方法不正确。

在这种情况下,使用 ISO over PXE 的正确方法是什么?

在此处输入图片描述

答案1

在此设置中,更改append所需参数肯定不会对 PXELINUX 有帮助,因为启动盘有自己的 ISOLINUX 来处理内核启动。

有两种方法可以解决这个问题。

更简单的选择:提取 ISO,使用所需的启动参数修改isolinux/isolinux.cfg文件的append行,重新打包 ISO。让 PXELINUX 链接到修改后的 ISO。

更复杂(但可能更好,因为它删除了链接)的选项:不是使用 memdisk 引导到 ISO,而是直接以与 ISO 的 ISOLINUX 相同的方式引导。

编辑:在 ISO 中启动操作系统的更清晰的步骤:

  • 提取 ISO 至/tftpboot/quantastore
  • 将文件preseed/quantastor.seed从提取的 ISO 复制到 PXE 服务器上运行的 HTTP 服务的 Web 根目录,以便可以在http://172.30.27.5/quantastor.seed
  • 更改pxelinux.cfg/default文件以直接启动 ISO 的提取内容。删除当前文件LABEL QuantaStor并替换为:

    LABEL QuantaStor
      menu label QuantaStor
      kernel quantastor/install/vmlinuz
      append preseed/url=http://172.30.27.5/quantastor.seed locale=en_US.UTF-8 keyboard-configuration/layoutcode=us initrd=quantastor/install/initrd.gz ramdisk_size=16384 nodmraid acpi=off root=/dev/ram vga16fb.modeset=0 rw quiet
    

在大多数情况下,这应该可以成功安装,但 QuantaStor 在安装结束时运行的命令将失败,因为它们直接查找/cdrom。从quantastor.seed文件中:

 d-i preseed/late_command string mkdir -p /target/lib/plymouth/themes/quantastor; \
 chroot /target echo "creating package dirs, setting up splash screens" >> /var/log/qs_install.log; \
 mkdir /target/qs-pkgs; \
 mkdir -p /target/qs-pkgs/drivers; \
 mkdir -p /target/opt/osnexus/quantastor/raid-tools; \
 cp /cdrom/finisher/raid-tools/* /target/opt/osnexus/quantastor/raid-tools; \
 cp /cdrom/finisher/deb/*.deb /target/qs-pkgs; \
 cp /cdrom/finisher/qs_preseed.sh /target/qs-pkgs; \
 cp /cdrom/finisher/drivers/* /target/qs-pkgs/drivers; \
 cp /cdrom/finisher/splash/* /target/lib/plymouth/themes/quantastor; \
 cp /cdrom/finisher/osnexus.gpg /target/qs-pkgs; \
 cp /cdrom/finisher/osnexus.list /target/etc/apt/sources.list.d/osnexus.list; \
 cp /cdrom/finisher/rc.local /target/etc/rc.local; \
 cp /cdrom/finisher/qs_runonce.sh /target/etc/qs_runonce.sh; \
 chroot /target /qs-pkgs/qs_preseed.sh

可能只需在第一次安装完成后手动运行这些内容(删除内容/target) - 如果它能正常工作,我们可以调整这些命令以将它们的内容放到位,而不依赖于驱动器中的 CD。

答案2

盲打吗?

Enter一旦出现(混乱的)语言选择就点击,因为它很快就会超时。

然后点击F6、,Esc输入vga16fb.modeset=0并按Enter

Esc您可能忽略了随后要进行打击的需要F6

相关内容