現在、カーネル モジュールを開発していますが、ビルド時間が気になり始めています。副作用として、ビルド中に「コーヒー」ブレイクが多すぎます。
そこで、自分のプラットフォームに必要なものだけを構築する方法を探していました。「Linux カーネルの概要」の第 7 章と第 8 章では、手動で行う方法について詳しく説明されています。その良い読み物: http://www.kroah.com/lkn/
しかし、私は内容を理解していますが、これを機能させるにはまだ多くの調整が必要です.
2.6.32 以降のカーネルでは、新しいターゲットが追加されましたmake localmodconfig
。lsmod
.configをスキャンして適切に変更します。それで、私は自分の「自動化」を見つけたと思いました。しかし、この perl スクリプトにも問題があります。
このスレッドは問題を説明しています: https://bbs.archlinux.org/viewtopic.php?pid=845113
make のターゲットを使用する代わりに、スクリプトを直接実行するという、明らかに他の人のために機能する提案された解決策もありました。
私にとっては、make localmodconfig はまったく機能しません。その理由は次のとおりです。
make clean
make mrproper
cp /boo/config-'uname -r' .config
make localmodconfig
そしてそれはで止まります
vboxguest config not found!!
nf_defrag_ipv6 config not found!!
vboxsf config not found!!
vboxvideo config not found!!
問題は、カーネル開発環境が virtualbox 内にあることです。これらの vbox モジュールは、「virtualbox guest addtion」のインストールを選択したときにインストールされました。
また、netfilter モジュールはディストリビューション固有のモジュールである可能性があります (多くの netfilter モジュールはメインライン カーネルの一部ではないため、私にはショックではありません)。これはメインライン カーネルには含まれていません。
回避策として、これらのモジュールを明らかにアンロードして再試行します。streamline_config.pl
しかし、ユーザーが必要に応じて特定のモジュールを除外できるようにするためのパッチがあるかどうかを考えています。問題は、私はperlについてまったく知識がなく、そのように気に入っていることです。
だから私の問題を一言で言えば
パッチを適用
streamline_config.pl
して、構成ファイルの処理から除外するモジュール名のリストを引数として指定できるようにします。スクリプトはkernel.orgにあります
編集: perl スクリプトが実行されていないことに関する内容を削除しました。無限ケンイチが指摘したように(私はどれほど愚かでしょうか?). しかし
localmodconfig
、ソース ツリーの下にいくつかのモジュール コードがないため、まだ make は機能しません。パッチ適用streamline_config.pl
はまだ有効な要件です。