Я пытаюсь собрать собственное ядро 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

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

1 ответ1

0

Ядро 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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .