configuração de script de um kernel do Linux

8

Dada uma lista de recursos do kernel, eu quero criar uma configuração mínima do Linux suportando todos os recursos fornecidos (e as dependências correspondentes), mas nada mais.

Existe uma maneira de criar um allnoconfig e uma ferramenta para ativar recursos um por um?

(Eu poderia editar o arquivo .config , mas isso não obteria dependências corretamente. Eu poderia usar make *config , mas até onde eu sei, eles funcionam apenas interativos ou criam algumas configurações padrão.)

    
por michas 13.05.2016 / 10:57

2 respostas

1

Se você precisar fazer isso de forma não interativa, poderá usar o oldconfig ou o olddefconfig. O make * config corrigirá as dependências e elas não são tão detalhadas quanto, digamos, o menuconfig. (Senão o menuconfig está perfeitamente bem para habilitar recursos um a um, inclusive inclui os textos de ajuda!)

make oldconfig irá pedir qualquer 'nova' opção de configuração, então você precisaria inserir comentários como este para qualquer opção desativada se você quiser trabalhar de forma não interativa:

# CONFIG_KERNEL_GZIP is not set

O olddefconfig, por outro lado, parece não perguntar, mas usa um valor padrão. Há também o silentoldconfig, mas também é solicitado em alguns casos, então não é tão silencioso.

da ajuda:

oldconfig       - Update current config utilising a provided .config as base
silentoldconfig - Same as oldconfig, but quietly, additionally update deps
olddefconfig    - Same as silentoldconfig but sets new symbols to their default value

Disclaimer: Eu só tentei o teste trivial de remover as opções para algumas bibliotecas que eu sei que eram necessárias. Eles foram adicionados novamente pelo olddefconfig e oldconfig. Eu não sei como isso se aplica a fazer uma configuração maior.

De qualquer forma, suponho que você já considerou usar make localmodconfig ou algo parecido antes de começar isso? Eu não tentei fazer uma configuração mínima em anos, mas pareço lembrar que havia algumas maneiras não óbvias de criar kernels totalmente inutilizáveis. :)

    
por 22.05.2016 / 23:01
-1

Desde o kernel 2.6.29 existe um script que você pode encontrar em /kernel_extracted_dir/scripts/config

Por exemplo

/kernel_extracted_dir/scripts/config --set-val CONFIG_LOG_BUF_SHIFT 14
/kernel_extracted_dir/scripts/config --enable CONFIG_PRINTK_TIME

(Para dar crédito onde é devido, tomei o exemplo deste blog )

Você tem as seguintes opções (copiadas da ajuda)

--enable|-e option   Enable option
--disable|-d option  Disable option
--module|-m option   Turn option into a module
--set-str option string
                     Set option to "string"
--set-val option value
                     Set option to value
--undefine|-u option Undefine option
--state|-s option    Print state of option (n,y,m,undef)

--enable-after|-E beforeopt option
                         Enable option directly after other option
--disable-after|-D beforeopt option
                         Disable option directly after other option
--module-after|-M beforeopt option
                         Turn option into module directly after other option commands can be repeated multiple times

options:
    --file config-file   .config file to change (default .config)
    --keep-case|-k       Keep next symbols' case (dont' upper-case it)
    
por 17.05.2016 / 22:54

Tags