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/
でロードするモジュールのリストを探しますが、このプロセスはinsmodではなくmodprobeを使用しているようです。私はイーサネットドライバでdepmodを実行していないため、modprobeシステムはイーサネットドライバについて実際には知りません。しかし、インストーラーからdepmodを実行することはできません。これは、eMMCではなくSDカードのインストールにインストールされるためです。
ここでの私の最善のアプローチは何ですか?インストール中にdepmodを実行する方法を見つける必要がありますか?多分それはchrootで行うことができますか?
または、depmod/modprobeシステムを使用せずにモジュールを自動的にロードする良い方法はありますか?
ここでの洞察は非常にありがたいです。
ユーザーicarusは私の投稿へのコメントで正しかった。
インストールスクリプトから次のコマンドを発行していますが、機能しているようです。
depmod -b /mnt/root1 -a 4.14.98-imx8mq+gea48c83
最後の議論は、私が起動しているSDカードシステムのカーネルバージョンが、私が変更しているシステムとは異なるためです。