カーネルのインストール中に「モジュールが見つかりません」というエラーが発生する

カーネルのインストール中に「モジュールが見つかりません」というエラーが発生する

カーネルのインストールに関して質問があります。net-next カーネル ソースの新しいバージョンをダウンロードし、次の手順を実行しました。

  • make allyesconfig
  • make -j16
  • make modules_install
  • make install

問題は、 を実行しようとするとmake install、「モジュールが見つかりません」というエラーが表示されることです。他の人は同じ手順でカーネルを作成できたのに、私にはできないので困惑しています (どちらもルート権限を持っています)。これらのモジュールが表示/使用可能であることを確認するために、何か追加で必要なことはありますか?

答え1

が呼び出されるとmake install、ディストリビューション固有のスクリプトが呼び出され、initrd.img がビルドされます。このスクリプトは、このディストリビューションに必要なすべてのモジュールを検索しますが、 を介してすべてのモジュールをカーネルに組み込みとしてコンパイルしたばかりなのでmake allyesconfig、スクリプトはモジュールの検索に失敗しました。

今のところ、問題を再現できません。「モジュールが見つかりません」は単なる警告だと記憶しています。initrd.img は正常に構築され、新しいカーネルも正常に起動されているので、常に無視しています。「モジュールが見つかりません」で失敗する場合は、次の方法で、組み込みモジュールから実際にロード可能なモジュールに手動で再構成する必要がありますmake menuconfig。「モジュールが見つかりません」メッセージにはモジュール名が含まれています。その名前を使用して Makefile を検索し、どの CONFIG_XXX かを調べ、その CONFIG_XX を に変更します=m

最後に、新しくビルドされたカーネルだけが必要な場合は、代わりにディストリビューション設定を使用することをお勧めしますmake allyesconfig

cd your_kernel_src
cp /boot/your_distribution_config .config
make menuconfig             # can exit it directly with nothing changed
make -j16
make modules_install
make install
# update the grub, if it is required for your distribution.

答え2

カーネルはプレーン でコンパイルされましたmakeが、モジュールはコンパイルされていません。 を実行してくださいmake -j16 all modules

答え3

KERNEL_TREEツールチェーンが作業中のカーネルソースツリーを認識していることを確認する必要があります。環境変数をソースがあるディレクトリに設定する必要があります。https://unix.stackexchange.com/a/147700/37538参考のため。

関連情報