Systemd
如何在已掛載的文件系統上安裝核心模組?
我正在設置一個使用 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 系統的情況下自動載入?
這裡的任何見解將不勝感激。
使用者 icarus 對我的文章的評論是正確的。
我從我的安裝腳本發出以下命令,這似乎工作:
depmod -b /mnt/root1 -a 4.14.98-imx8mq+gea48c83
最後一個論點是因為我正在啟動的 SD 卡系統上的核心版本與我正在修改的系統不同。