修改 initrd.img 以在 PXE 启动的 RHEL 6 中运行其他二进制文件

修改 initrd.img 以在 PXE 启动的 RHEL 6 中运行其他二进制文件

我正在尝试通过在我的 kickstart 配置的 %pre 部分中运行一个脚本来为我们现有的 RHEL 6(或 Oralce 的实现)PXE 安装过程添加额外的自动化,该脚本调用 hpacucli(HP 的 raid 设备配置二进制文件)。

我的方法是修改 PXE 服务的 initrd.img。我已解压 initrd.img 并复制所需的库、二进制文件和脚本,但当系统使用修改后的 initrd.img 启动时,修改后的 /lib(和 /lib_64)被移到 /lib_old 旁边,而 /lib 链接到 /mnt/runtime/lib。我该如何更改此配置,以便 /lib 不会移​​动(不太可能)或所需的库在运行时 /mnt/runtime/lib 中可用?

为了测试并确认这一点,我已经能够将安装过程移动到第 6 个虚拟控制台,这使我能够看到错误,然后打开一个 shell(一种有用的调试机制)。

%前
执行/dev/tty6 2> /dev/tty6
第 6 条

/bin/sh

答案1

经过几次尝试,我不再寻找谷歌或我无法保证的文档,而是开始阅读日志,这让我找到了解决方案。

在 PXE 安装过程中,initrd.img 引导该过​​程,anaconda 查阅 kickstart 脚本,下载安装映像,启动“stage2”并将获取的 install.img 挂载到 /mnt/runtime,这会将 lib、lib_64 和 usr 移到一边并链接到 /mnt/runtime 中的相应目录,然后启动现在的本地 /usr/bin/anaconda。这在 /tmp/anaconda.log 中很明显,我可以在上文概述的暂停安装过程中访问它。

我通过使用所需的库更新 install.img 解决了我的问题。这意味着整个过程需要修改两个映像,intitrd.img 用于使 hpacucli 工作所需的脚本、目录和二进制文件,install.img 用于将库添加到 install.img 安装后存在的库中。我相信还有其他解决方案,但这似乎是最不具侵入性的。

如果有其他 hpacucli 预安装用户正在寻找答案,我可以发布整个设置。

相关内容