在 initrd.img 中添加 eth0 支持的更简单方法(Centos)

在 initrd.img 中添加 eth0 支持的更简单方法(Centos)

我正在尝试通过 pxeboot 在硬盘上部署克隆映像。为此,我想使用 dd 工具。我知道有一些工具(如 fog 和 clonezilla)可以做类似的事情,但这是大学项目。

背景:

目前,我正在通过 pxeboot 部署 VMlinuz 和 initrd.img,因为这为我提供了运行 bash 脚本的环境,加载完成后,我执行 dd 以在硬盘上部署映像。这很有效。

问题:现在我不想将磁盘映像打包到 initrd.img 中(这非常昂贵),而是想挂载位于 pxe 服务器上的 nfs。但是,当 initrd 加载后,我尝试 ping pxe 服务器时,出现了“网络无法访问”的错误

我尝试查找 RC,但我认为 eth0 未配置,而且我没有 IP 地址。我进一步尝试找到启用此 eth0 的方法,但其中一种方法涉及修改 intramfs,这对我来说非常新。有人能帮我找到一些起点吗?

谢谢

答案1

事情是这样的。当您通过 PXE 启动 vmlinuz/initrd 时,两个文件的网络传输均由位于客户端 PXE 固件中的 PXE“UNDI”网络驱动程序支持。从 vmlinuz 启动并安装 initrd 的那一刻起,PXE UNDI 驱动程序就不再使用,而是Linux使用相应的网络驱动程序("if available")

从您所说的情况来看,我认为您正在使用 vmlinuz/initrd 设置,does not have net support或者您可能正在弄乱 init 脚本,并且ping在 init 设置 Linux 网络服务之前调用服务。

当 vmlinuz/initrd 集确实具有网络支持时,您将看到内核何时启动新的 DHCP 请求,因为它需要初始化其 NIC/s,尽管 UNDI 驱动程序在传输 vmlinuz/initrd 前几秒钟已经做了完全相同的事情。然后,您可以通过确认是否有 1 或 2 个 DHCP 请求来查看您的集是否具有网络支持;或者只查看 init 的代码。

如果你的机器不支持网络,就买一台新的。你可以在以下网址找到很多支持网络的内核/initrd 机器:塞瓦的页面。请注意,depending on the set必须附加某些 syslinux 参数才能正确设置网络服务,如 ieipappend 2ip=dhcp/或ip=bootp

相关内容