我正在设置一个使用 Yocto 项目构建的嵌入式系统。这会输出一个根文件系统、内核、u-boot 等。我有一个从 SD 卡运行的安装程序脚本,它在板上配置 eMMC 分区、rootfs 中的副本、uboot 等。它产生一个可引导我从 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 系统的情况下自动加载?
这里的任何见解将不胜感激。
用户 icarus 对我的帖子的评论是正确的。
我从我的安装脚本发出以下命令,这似乎工作:
最后一个论点是因为我正在启动的 SD 卡系统上的内核版本与我正在修改的系统不同。