O kernel do Linux mantém sobrescrevendo minhas alterações no .config / dropping

0

Estou tentando criar um kernel ARM personalizado em um sem fio preto BeagleBone. Estou usando este kernel como um começo

Copiei o arquivo .config atual ( make localmodconfig ) e editei-o manualmente para adicionar suporte ao módulo WLAN incorporado (alterações de ).

Quando executo make uImage ou outros destinos, sempre faço perguntas. Depois de responder, o .config é sobrescrito e algumas alterações desaparecem. Eu também tentei make olddefconfig , que mostrou aproximadamente os mesmos resultados sem as perguntas.

Alterações feitas:

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

Como posso e posso pular / evitar isso? Eu preciso de um kernel diferente? Ou fazer outra coisa? Obrigado por qualquer dica.

    
por rudib 18.12.2016 / 22:16

1 resposta

0

Linux kernel make keeps overwriting my .config /dropping changes

Isso indica que você provavelmente não possui um arquivo .config válido para construir um kernel.
Parece que você não seguiu o guia que você mencionou:

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

Se você realmente usou uma " configuração padrão base " (por exemplo, consulte a última parte desta resposta) em vez de um mistério " atual .config arquivo ", então você provavelmente não teria encontrado tais problemas.

I copied the current .config file (make localmodconfig) and edited it manually to add support for the built in Wlan module

Não, essa não é a maneira correta de configurar um kernel Linux.
Usar um arquivo .config de uma versão antiga do kernel provavelmente terá nomes de configuração obsoletos, e isso deve ser evitado se você não tiver certeza do que está fazendo.
Caso contrário, " se você quiser carregar sua configuração existente para um nova versão com o mínimo de trabalho, use "make oldconfig", que será só peço as respostas para novas perguntas "(citação do arquivo README do kernel Linux).

A menos que você realmente saiba o que está fazendo, a edição direta do arquivo .config provavelmente resultará na falta de opções de configuração dependentes e necessárias.

Do I need a different kernel? Or do something else?

Você optou por usar o kernel principal, que não possui um arquivo defconfig especificamente para o Beaglebone Black SBC.
Você poderia começar com uma compilação genérica para uma placa TI AM335x e, em seguida, inicializar com o arquivo de árvore de dispositivos am335x-boneblack.dtb

Recomeçar com o comando shell

make mrproper 

ou

make distclean  

Verifique se o seu conjunto de ferramentas (compilador cruzado, etc.) está em seu PATH, por exemplo,

echo $PATH  

Defina a variável de ambiente para a arquitetura:

export ARCH=arm  

Defina a variável de ambiente para o prefixo da cadeia de ferramentas de acordo com o que você instalou, por exemplo,

export CROSS_COMPILE=arm-linux-gnueabihf-

Observe o hífen final.

Instale uma configuração genérica do kernel para a linha de produtos TI Sitara (no lugar de um defconfig Beaglebone Black específico).

make omap2plus_defconfig

Personalize a compilação do kernel usando uma ferramenta de configuração adequada :

make menuconfig

Em seguida, crie a imagem do kernel, os módulos carregáveis e o blob da Árvore de dispositivos:

make uImage
make modules
make am335x-boneblack.dtb

Mais detalhes podem ser encontrados no arquivo README na fonte do kernel do Linux.

    
por 19.12.2016 / 03:32