如何在 initramfs 中包含网络驱动程序以进行 PXE 启动?

如何在 initramfs 中包含网络驱动程序以进行 PXE 启动?

我正在 HPE ProLiant DL360 Gen10 服务器上设置 PXE 启动。该服务器有一个 HPE 以太网 100Gb 1 端口 842QSFP28 适配器作为网络接口。

我们有一个定制的 Linux 内核,专门针对一些繁重的数值计算任务进行了微调。当从本地存储加载此定制内核时,网卡不会加载。这可能是因为网络适配器需要第三方驱动程序。我从 HPE 网站获得了驱动程序。

目前,为了使机器保持正常运行,正在运行标准内核(CentOS 7 的 3.10)。在研究了驱动程序文档和安装说明后,我发现安装脚本有一些选项,可以为目标内核安装所需的内核模块。使用此选项时,内核模块将安装到目录中/lib/modules/4.4.47/extra/。使用此选项,我使用以下代码生成 initramfs 文件:dracut -f /path/to/custom-initramfs.img /path/to/custom-vmlinuz --kver 4.4.47

我已经将自定义 initramfs 和内核映像部署到 tftpboot 目录,并相应地配置了 pxelinux.cfg。当我重新启动服务器时,它成功检测到内核和 initramfs,但一段时间后,它卡在尝试发现网络。我只是收到消息“正在尝试检测网络”。然后它变为“110 秒后重试”。最后它超时并保持卡住状态。

因此,出于某种原因,网络驱动程序未加载。当我用来zcat验证 initramfs 的内容时,我可以看到驱动程序模块包含在其中。我不确定如何继续。驱动程序文档不包含有关如何安装 PXE 启动的太多信息。有人可以建议我下一步还可以尝试什么吗?谢谢。

相关内容