web-dev-qa-db-ja.com

Linuxカーネルmakeは私の.config / droppingの変更を上書きし続けます

カスタムARMカーネルをBeagleBoneブラックワイヤレスで構築しようとしています。使用しています このカーネルを開始点として

現在の.configファイル(make localmodconfig)をコピーし、手動で編集して、組み込みのWLANモジュールのサポートを追加しました( there からの変更)。

make uImageまたは他のターゲットを実行すると、常に質問が表示されます。回答後、.configは上書きされ、一部の変更は失われます。 make olddefconfigも試してみましたが、質問なしでほぼ​​同じ結果が得られました。

行われた変更:

CONFIG_WLAN=y
CONFIG_WIRELESS=y
CONFIG_WIRELESS_EXT=y
CONFIG_WL12XX_PLATFORM_DATA=y

CONFIG_KEYS=y
CONFIG_SECURITY=y
CONFIG_CRYPTO=y

CONFIG_CRYPTO_ARC4=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_AES=y
CONFIG_CRYPTO_MICHAEL_MIC=y
CONFIG_CRYPTO_RNG=y
CONFIG_CRYPTO_AEAD=y
CONFIG_CRYPTO_CCM=y
CONFIG_CRYPTO_GCM=y

CONFIG_RFKILL=y

CONFIG_REGULATOR_FIXED_VOLTAGE=y
CONFIG_CRC7=y

# The following are needed for soft AP
CONFIG_NETFILTER=y
CONFIG_NETFILTER_ADVANCED=y
CONFIG_NF_CONNTRACK=y
CONFIG_NETFILTER_XTABLES=y
CONFIG_NF_DEFRAG_IPV4=y
CONFIG_NF_CONNTRACK_IPV4=y
CONFIG_NF_CONNTRACK_PROC_COMPAT=y
CONFIG_IP_NF_IPTABLES=y
CONFIG_IP_NF_FILTER=y
CONFIG_IP_NF_TARGET_LOG=y
CONFIG_NF_NAT=y
CONFIG_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=y

CONFIG_INPUT_UINPUT=y

# Enable Ethernet-WLAN Bridge
CONFIG_NETFILTER=y
CONFIG_NETFILTER_ADVANCED=y
CONFIG_BRIDGE_NETFILTER=y
CONFIG_STP=y
CONFIG_BRIDGE=y
CONFIG_BRIDGE_IGMP_SNOOPING=y
CONFIG_LLC=y
CONFIG_INPUT_UINPUT=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y
CONFIG_NLATTR=y
CONFIG_AVERAGE=y

どうすればこれをスキップ/回避できますか?別のカーネルが必要ですか?または何か他のことをしますか?ヒントをありがとうございます。

2
rudib

Linuxカーネルmakeは私の.config/droppingの変更を上書きし続けます

これは、カーネルを構築するための有効な。configファイルがおそらくないことを示しています。
あなたが言及したガイドに従わなかったようです:

It is often easiest to start with a base default configuration and then customize it for you use case if needed.

ミステリー「current .config file」の代わりに、実際に「base default configuration」(たとえば、この回答の後半を参照)を使用した場合は、おそらくそのような問題に遭遇することはなかっただろう。


現在の.configファイルをコピーして(localmodconfigを作成)、手動で編集して、組み込みのWlanモジュールのサポートを追加しました

いいえ、それはLinuxカーネルを構成する適切な方法ではありません。
古いカーネルバージョンの。configファイルを使用すると、おそらく非推奨の構成名が使用されるため、何をしているのかわからない場合は避ける必要があります。
それ以外の場合、「最小限の作業で既存の構成を新しいバージョンに移行する場合は、「make oldconfig」を使用します。これにより、新しい質問への回答のみが求められます」( LinuxカーネルREADMEファイル)。

何をしているのかを本当に理解していない限り、。configファイルを直接編集すると、依存する必要な構成オプションが失われる可能性があります。


別のカーネルが必要ですか?または何か他のことをしますか?

Beaglebone BlackSBC専用のdefconfigファイルがないメインラインカーネルを使用することを選択しました。
TI AM335xボードの汎用ビルドから始めて、am335x-boneblack.dtbデバイスツリーファイルで起動できます。

シェルコマンドで最初からやり直す

make mrproper 

または

make distclean  

ツールチェーン(クロスコンパイラなど)がPATHに含まれていることを確認します。

echo $PATH  

アーキテクチャの環境変数を設定します。

export Arch=arm  

インストールしたものに応じて、ツールチェーンプレフィックスの環境変数を設定します。

export CROSS_COMPILE=arm-linux-gnueabihf-

末尾のハイフンに注意してください。

(特定のBeaglebone Black defconfigの代わりに)TISitara製品ラインの汎用カーネル構成をインストールします。

make omap2plus_defconfig

適切な構成ツールを使用してカーネルビルドをカスタマイズします。

make menuconfig

次に、カーネルイメージ、ロード可能なモジュール、およびデバイスツリーブロブを構築します。

make uImage
make modules
make am335x-boneblack.dtb

詳細については、LinuxカーネルソースのREADMEファイルを参照してください。

0
sawdust