以前の構成に基づいて新しいカーネルを構築する場合、make oldconfig
プロセスを自動化して新しいオプションをデフォルト値に設定する方法はありますか?
編集:新しいカーネルで(/boot/config-*
または/proc/config.gz
からの).configを使用する場合、make oldconfig
プロセスは、古いカーネルでは利用できなかったオプションを有効にしたい。 Y/n/mと答えるか、Enterキーを押してデフォルトを受け入れます。ユーザーの操作なしでデフォルトを自動的に受け入れたい。
次のコマンドを使用します。
yes "" | make oldconfig
「yes」コマンドは、指定されたすべての文字列、またはデフォルトで「y」を含む行を繰り返し出力します。
したがって、これを使用して単純に「Enterキーを押す」ことができます。これにより、「make oldconfig」コマンドのデフォルト値が使用されます。
make olddefconfig
あなたが欲しいものです。ヘルプ(make help
カーネルソースディレクトリ)
olddefconfig-silentoldconfigと同じですが、新しいシンボルをデフォルト値に設定します
はい。ソースディレクトリの最上位にある「.config」に格納されています。
さらに、ディストリビューションカーネルを使用している場合、RedHatなどの一部のディストリビューションでは、それを/ boot/config-$(uname -r)に保存します。 (カーネルバージョン)[1]
最後に、実行中のカーネルでコンパイルされている場合は、/ proc/config.gzにあります。このオプションを導入したバージョンを忘れてしまいました。
[1]これらのオプション:
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
編集
/usr/src/linux/kernel/Documentation/kbuild/kconfig.txt(または適切なパス)を確認してください。それらの推奨事項のいくつかを使用して、ソリューションをスクリプト化できます。スクリプトとtextutilsの組み合わせを使用して、あなたが説明したことを実現します。
編集2
追加の注記として、これは悪い考えです。環境に固有のオプションのハードウェアサポートが変更されたがデフォルトではない場合はどうなりますか?悪影響を与える変更が発生した場合はどうなりますか?これは本当にインタラクティブでなければなりません。構成を作成し、残りを自動化できます。
"make silentoldconfig"は少し冗長で、役立つかもしれません。それはまだインタラクティブです。
make silentoldconfig
古い質問ですが、OPの質問に対する良い答えは見つかりませんでした。
インタラクティブな質問を回避する別の方法を見つけました。 .configにパッチを適用するのではなく、defconfigファイルにパッチを適用します。
make Arch=arm mrproper
patch -N -p1 < ../../patches/autofs.patch || true
make Arch=arm xilinx_zynq_defconfig
make Arch=arm UIMAGE_LOADADDR=0x8000 uImage
make Arch=arm modules
make Arch=arm INSTALL_MOD_PATH=target modules_install
私の場合のパッチ:
--- a/Arch/arm/configs/xilinx_zynq_defconfig 2019-12-12 08:31:42.985777534 +0100
+++ b/Arch/arm/configs/xilinx_zynq_defconfig 2019-12-12 08:31:46.695777606 +0100
@@ -221,6 +221,7 @@
CONFIG_XILINX_PR_DECOUPLER=y
CONFIG_EXT2_FS=y
CONFIG_EXT3_FS=y
+CONFIG_AUTOFS4_FS=y
# CONFIG_DNOTIFY is not set
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
この方法では、質問は行われません。