カーネル機能のリストが与えられたら、与えられたすべての機能(およびその依存関係)をサポートしますが、それ以上はサポートしない最小限のLinux構成を作成したいと思います。
allnoconfigを生成する方法と機能を1つずつ有効にするツールはありますか?
(ファイルを編集できますが、.config
正しい依存関係を取得することはできません。使用できますが、make *config
私が知っている限り、これらの操作は対話型でのみ機能するか、いくつかの基本設定を作成します。)
答え1
カーネル2.6.29以降、次の場所でスクリプトを見つけることができます。/kernel_extracted_dir/scripts/config
例えば
/kernel_extracted_dir/scripts/config --set-val CONFIG_LOG_BUF_SHIFT 14
/kernel_extracted_dir/scripts/config --enable CONFIG_PRINTK_TIME
(クレジットが必要な場所にクレジットを与えるために、次の例を挙げました。ブログ)
次のオプションがあります(ヘルプからコピー)
--enable|-e option Enable option
--disable|-d option Disable option
--module|-m option Turn option into a module
--set-str option string
Set option to "string"
--set-val option value
Set option to value
--undefine|-u option Undefine option
--state|-s option Print state of option (n,y,m,undef)
--enable-after|-E beforeopt option
Enable option directly after other option
--disable-after|-D beforeopt option
Disable option directly after other option
--module-after|-M beforeopt option
Turn option into module directly after other option commands can be repeated multiple times
options:
--file config-file .config file to change (default .config)
--keep-case|-k Keep next symbols' case (dont' upper-case it)
答え2
これを非対話型で実行する必要がある場合は、make oldconfigまたはmake olddefconfigを使用できます。 make *configは依存関係を変更し、これらの依存関係はmenuconfigほど詳細ではありません。 (そうでない場合、menuconfigは機能を1つずつ有効にするのに役立ちます。ヘルプテキストも含まれています!)
make oldconfigは「新しい」設定オプションを要求するため、非対話式で作業するには、無効なオプションについて次の説明を挿入する必要があります。
# CONFIG_KERNEL_GZIP is not set
一方、make olddefconfigは尋ねられず、代わりにデフォルト値を使用します。 Silentoldconfigもありますが、特定の状況でも要求するので、静かではありません。
make helpから:
oldconfig - Update current config utilising a provided .config as base
silentoldconfig - Same as oldconfig, but quietly, additionally update deps
olddefconfig - Same as silentoldconfig but sets new symbols to their default value
免責事項:私は必要であることを知っているいくつかのライブラリを削除するオプションの簡単なテストだけを試しました。 olddefconfigとoldconfigによって再追加されます。これがより大きな構成を実行するためにどのように適用されるかわかりません。
とにかく、始める前にmake localmodconfigまたはそれに似たものを使用することを検討したとしますか?私は何年も最小限の設定を試みていませんが、完全に利用できないカーネルを生成するためのかなり不明な方法があったことを覚えているようです。 :)