将驱动程序加载到 initrd

将驱动程序加载到 initrd

我在 pxe 部署方面遇到问题。我已安装 ubuntu-20.04.5-live-server 并将其 initrd 和 vmlinuz 用于 pxe。

我在 pxe 部署中已经下载了 initrd 和 vmlinuz,笔记本电脑正在 initrd 上启动,但它无法检测到我的网络设备,即缺少 lan-usb-c 加密狗(r8152 模块)

我已经提取了 initrd 的内容,并首先注意到 main/lib/modules/5.4.0-125-generic/kernel/drivers/net/ 下的 usb 文件夹丢失了。(Ubuntu 22.04 initrd 有该文件夹)

所以我创建了 /usb/ 文件夹,然后我 chroot 到主文件夹,但我遇到困难,我没有 main/lib/modules/5.4.0-125-generic/build/ 文件夹,只有少量工具...也没有 make。

如何将模块安装到 ubuntu-20.04.5-live-server initrd 文件中?相关模块是 r8152

答案1

我在 20.04 服务器上使用/casper/initrd来自 的文件所采取的步骤ubuntu-20.04.5-live-server-amd64.iso

展开initrd从 ISO 复制的 initramfs 文件。

mkdir expand
unmkinitramfs initrd expand/

确保特定内核的驱动程序在本地可用。linux-modules-extra-...软件包中包含net/usb驱动程序。

apt-get -y install linux-modules-extra-5.4.0-125-generic

从本地包复制驱动程序。这将复制整个net/usb目录,但您可以更有选择性。

cp -r /usr/lib/modules/5.4.0-125-generic/kernel/drivers/net/usb/ expand/main/usr/lib/modules/5.4.0-125-generic/kernel/drivers/net/

创建一个新的 initramfs 文件。

cd expand/
pushd early  && find . | cpio -o -H newc >  ../myinitrd && popd
pushd early2 && find . | cpio -o -H newc >> ../myinitrd && popd
pushd main   && find . | cpio -o -H newc | gzip >> ../myinitrd && popd

现在您将拥有一个myinitrd可以与 PXE 设置一起使用的 initramfs 文件。

下载驱动程序的替代方法

可以下载并解压该deb软件包。这可能更容易,特别是如果您没有可用的 20.04 安装。

wget http://mirrors.kernel.org/ubuntu/pool/main/l/linux/linux-modules-extra-5.4.0-125-generic_5.4.0-125.141_amd64.deb
mkdir extract
dpkg --extract linux-modules-extra-5.4.0-125-generic_5.4.0-125.141_amd64.deb extract/
cp -r extract/lib/modules/5.4.0-125-generic/kernel/drivers/net/usb/ expand/main/usr/lib/modules/5.4.0-125-generic/kernel/drivers/net/

注释/链接

相关内容