如何在已安装的文件系统上安装内核模块?

如何在已安装的文件系统上安装内核模块?

我正在设置一个使用 Yocto 项目构建的嵌入式系统。这会输出根文件系统、内核、u-boot 等。我有一个从 SD 卡运行的安装程序脚本,该脚本使用分区、rootfs 中的副本、uboot 等配置板上的 eMMC。它会生成一个可启动的文件当我从 eMMC 启动时的系统。

我遇到的问题是以太网驱动程序。默认情况下系统上未安装。安装脚本将其复制到/lib/modules/4.14.98-imx8mq+gea48c83/kernel/drivers/net/ethernet/freescale/fec.ko,我可以通过串行登录并使用 手动加载它insmod,效果很好。但我不知道如何让它自动加载。

Systemd 查找/etc/modules-load.d/要加载的模块列表,但此过程似乎使用 modprobe 而不是 insmod。 modprobe 系统并不真正了解以太网驱动程序,因为我还没有在其上运行 depmod。但我无法从安装程序运行 depmod,因为它会将其安装在我的 SD 卡安装上,而不是 eMMC 上。

我在这里最好的方法是什么?我需要找到某种方法在安装过程中运行 depmod 吗?也许可以用 chroot 来完成?

或者有没有一种好方法可以让我的模块在不使用 depmod/modprobe 系统的情况下自动加载?

任何见解这里将不胜感激。

答案1

用户 icarus 对我的帖子的评论是正确的。

我从安装脚本中发出以下命令,这似乎有效:

depmod -b /mnt/root1 -a 4.14.98-imx8mq+gea48c83

最后一个参数是因为我启动的 SD 卡系统上的内核版本与我正在修改的系统不同。

相关内容