Ядро Linux продолжает переписывать мои .config / сбрасывающие изменения

1247
rudib

Я пытаюсь собрать собственное ядро ​​ARM на беспроводной беспроводной сети BeagleBone. Я использую это ядро ​​в качестве начала

Я скопировал текущий .configфайл ( make localmodconfig) и отредактировал его вручную, чтобы добавить поддержку встроенного модуля WLAN (изменения оттуда ).

Когда я бегу 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 

Как я могу и могу ли я пропустить / избежать этого? Нужно ли другое ядро? Или сделать что-то еще? Спасибо за любые подсказки.

0

1 ответ на вопрос

0
sawdust

Ядро Linux продолжает переписывать мои .config / сбрасывающие изменения

Это означает, что у вас, вероятно, нет действительного файла .config для сборки ядра.
Похоже, вы не следовали упомянутому вами руководству:

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

Если бы вы на самом деле использовали « базовую конфигурацию по умолчанию » (например, обратитесь к последней части этого ответа) вместо загадочного « текущего файла .config », то вы, вероятно, не столкнулись бы с такими проблемами.


Я скопировал текущий файл .config (make localmodconfig) и отредактировал его вручную, чтобы добавить поддержку встроенного модуля Wlan

Нет, это неправильный способ настройки ядра Linux.
Использование файла .config из более старой версии ядра, вероятно, будет содержать устаревшие имена конфигураций, и его просто следует избегать, если вы не уверены в том, что делаете.
В противном случае, « если вы хотите перенести существующую конфигурацию в новую версию с минимальными затратами труда, используйте« make oldconfig », которая будет запрашивать только ответы на новые вопросы » (цитата из файла README ядра Linux).

Если вы действительно не знаете, что делаете, прямое редактирование файла .config, вероятно, приведет к отсутствию зависимых и необходимых параметров конфигурации.


Нужно ли другое ядро? Или сделать что-то еще?

Вы решили использовать основное ядро, у которого нет файла defconfig специально для Beaglebone Black SBC.
Вы можете начать с общей сборки для платы TI AM335x, а затем загрузиться с файлом дерева устройств am335x-boneblack.dtb

Начать заново с командой оболочки

make mrproper 

или же

make distclean 

Убедитесь, что ваша цепочка инструментов (кросс-компилятор и т. Д.) Находится в вашей переменной PATH, например

echo $PATH 

Установите переменную среды для архитектуры:

export ARCH=arm 

Установите переменную окружения для префикса набора инструментов в соответствии с тем, что вы установили, например

export CROSS_COMPILE=arm-linux-gnueabihf- 

Обратите внимание на конечный дефис.

Установите стандартную конфигурацию ядра для линейки продуктов TI Sitara (вместо определенной дефконфигурации Beaglebone Black).

make omap2plus_defconfig 

Настройте сборку ядра, используя подходящий инструмент конфигурации:

make menuconfig 

Затем создайте образ ядра, загружаемые модули и блоб Device Tree:

make uImage make modules make am335x-boneblack.dtb 

Более подробную информацию можно найти в файле README в исходном коде ядра Linux.

Спасибо за Ваш ответ! Я думаю, что это та же версия ядра (насколько я знаю, у меня нет ее с ne сейчас). Хотя make oldconfig запрашивает новые параметры конфигурации. Я проверю снова. Но как я могу добавить, например: `CONFIG_WL12XX_PLATFORM_DATA`, если его отбросили? Разве это не поддерживается ядром? Я нашел драйверы для него в каталоге драйверов. rudib 7 лет назад 0
CONFIG_WL12XX_PLATFORM_DATA не похож на допустимый символ. Почему WL12xx? Руководство, на которое вы ссылались, относится к WL18xx. Какие "драйверы" вы нашли? sawdust 7 лет назад 0
Это WL18XX, но в руководстве для него сказано, чтобы я это включил. Это может быть ошибкой. Но почему это упало? Может быть, это зависит от чего-то. Я попытаюсь найти вариант где-нибудь в инструменте конфигурации, но у вас есть идея, как я могу вписать эту опцию в? Еще раз спасибо! rudib 7 лет назад 0
Grep для строки "WL12XX_PLATFORM_DATA" в источнике ядра 4.9 находит ноль вхождений. Вы не можете включить то, что не существует, и это пустая трата времени, так как оно не используется нигде в 4.9. sawdust 7 лет назад 0
Да, так что мне нужно специальное ядро ​​или я могу ожидать (вполне вероятно), что оно будет работать, если дерево устройств настроено правильно, а доступные параметры включены? rudib 7 лет назад 0
Попробуйте настроить ядро ​​4.9 с помощью «Универсального сетевого стека IEEE 802.11 (mac80211)» и «Поддержка TI wl18xx». И исправить файл .dts платы. Посмотрите на ** am335x-evm.dts ** для возможного примера узла WL18xx. sawdust 7 лет назад 0