私はYoctoプロジェクトを使用して構築された組み込みシステムを設定しています。ルートファイルシステム、カーネル、u-bootなどが出力されます。ボード上でeMMCを設定するためにパーティション、rootfsのコピー、ubootなどを使用するSDカード上で実行されるインストーラスクリプトがあります。 eMMCからシステムを起動したときに起動可能なファイルを作成します。
私が経験している問題はイーサネットドライバにあります。デフォルトではシステムにインストールされません。インストールスクリプトがそれをコピーする/lib/modules/4.14.98-imx8mq+gea48c83/kernel/drivers/net/ethernet/freescale/fec.ko
と、シリアルを介してログインして手動でロードでき、insmod
うまく機能します。しかし、自動的にロードする方法がわかりません。
Systemdは/etc/modules-load.d/
ロードするモジュールのリストを探しますが、このプロセスはinsmodの代わりにmodprobeを使用しているようです。 modprobeシステムはまだdepmodを実行していないので、イーサネットドライバを実際に理解していません。ただし、eMMCの代わりにSDカードのインストールにdepmodをインストールするため、インストーラはdepmodを実行できません。
ここで最良のアプローチは何ですか?インストール中にdepmodを実行する方法を見つける必要がありますか?おそらくchrootを使って実行できますか?
それとも、depmod / modprobeシステムを使用せずにモジュールを自動的にロードするための良い方法はありますか?
ここへの洞察力は大変感謝いたします。
答え1
私の投稿に対するユーザーicarusのコメントは正しいです。
インストールスクリプトで次のコマンドを実行しましたが、うまくいくようです。
depmod -b /mnt/root1 -a 4.14.98-imx8mq+gea48c83
最後のパラメータは、私が起動しているSDカードシステムが変更しているシステムとは異なるカーネルバージョンを持っているためです。