如何将 VMware 客户驱动程序放入 initrd 中?

如何将 VMware 客户驱动程序放入 initrd 中?

我正在尝试通过 pxe 启动 Red Hat 5.8 机器。该机器是 ESX5.0 上的虚拟机,它有一个半虚拟 SCSI 控制器和 VMXNET3 网络驱动程序。现在这些驱动程序不是 RHEL5.8 内核的默认驱动程序,因此我按照网上的一些步骤制作了自己的 initrd.img 文件。这还不起作用,任何关于如何完成此操作的建议都将不胜感激。但是我的问题的主要目的如下:

在我导入的 repo 中,至少有两个地方有 initrd.img 文件可用: cobbler/ks_mirror/OEL5.8-x86_64/isolinux/ cobbler/ks_mirror/OEL5.8-x86_64/images/pxeboot/

我很好奇想知道两者的区别是什么。撒个小谎,我使用的是 Oracle Linux...不是出于选择,但从各方面来看,这应该是相同的。

我还想了解在安装服务器后可以在 /boot 目录中找到的 initrd.img 文件与在 CDROM 和/或 cobbler 存储库中找到的 initrd.img 文件之间的区别。如果我从安装了 vmwaretools 的盒子中复制 initrd.img 文件,则在尝试启动 initrd.img 文件时会出现内核恐慌。两者大小不同,因此我假设本质上的区别在于一个包含更多驱动程序,而另一个仅包含对服务器很重要的驱动程序,但为什么会出现内核恐慌。

我觉得我在盲目地按照网络上的说明为我的内核构建或添加更多驱动程序,如果我更好地理解自己在做什么,那么也许我就会知道哪里出了问题。

答案1

你给自己找了点麻烦。你真的应该使用 PVSCSI 驱动程序来处理数据分区和文件系统。这很遗憾,因为驱动程序位于 EL6 的内核中。不过,请将 vmware-tools 安装作为安装后或 kickstart 脚本的一部分。

答案2

其次,我将把 vmware-tools 安装添加到%post脚本中。这可能是最简单的。进行一些测试将验证 vmware-tools 是否在安装过程中更新了您的 initrd 文件。

此外,mkinitrd 只是一个 bash 脚本。可以对其进行编辑以手动将驱动程序添加到内核。我在以前的项目中遇到的一个例子是红帽错误 570460。与提交者的解决方法相比,那里的补丁只是当时原始的 mkinitrd 脚本的一个差异。

话虽如此,操作 mkinitrd 并非一件可以随便做的事情。在将其投入生产之前,请在单独的虚拟机中测试任何更改。

相关内容