在 initramfs 中使用 DHCP 设置 eth0 网络接口

mar*_*npz 4 10.04 networking dhcp initramfs ethernet

我创建了自己的 initramfs 脚本(基于 live-initramfs),我需要设置网络连接(使用 DHCP)来获取远程文件。那么我需要向 initramfs 挂钩文件(ifconfig、dhclient?)添加什么。以及如何编写我的 initramfs 脚本?现在我正在尝试这样的事情:

mkdir -p /var/run/network  # needed by ifup
modprobe af_packet         # for DHCP?
udevadm trigger            
udevadm settle  
ifup eth0                  #???            
Run Code Online (Sandbox Code Playgroud)

对于 ifup,我需要 /etc/network/interfaces 文件具有:

auto eth0
iface eth0 inet dhcp
Run Code Online (Sandbox Code Playgroud)

但通常我不知道网络设备到底需要做什么才能在 initramfs 中正常工作。

任何想法或帮助?

小智 5

最简单的解决方案是ipconfig通过内核的ip=命令行选项使用grub.cfg(或以pxelinux.cfg任何方式引导内核)。我不知道它的手册页,但是README.ipconfigklibc Git 存储库中有一个文件并安装在/usr/share/doc/klibc-utils/README.ipconfig.gz. 所以你/etc/default/grub可能有如下一行:

GRUB_CMDLINE_LINUX="ip=:::::eth0:dhcp"
Run Code Online (Sandbox Code Playgroud)

您可能需要在/etc/initramfs-tools/scripts/local-topfunctions文件中创建一个简单的脚本,然后调用该configure_networking函数,如下所示:

#!/bin/sh
. /scripts/functions
configure_networking
Run Code Online (Sandbox Code Playgroud)

(我错误地认为configure_networking是默认调用的,但必须明确调用它 - 您自己的脚本或包中的脚本。在我的情况下,它是从open-iscsi.)