configuração com script de um kernel linux

8

Dada uma lista de recursos do kernel, 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 habilitar os recursos um por um?

(Eu podia editar o .configarquivo, mas isso não deixaria as dependências corretas. Eu poderia usar make *config, mas até onde sei, elas funcionam apenas de forma interativa ou criam algumas configurações padrão.)

michas
fonte
Aqui está um script que automatiza kernel Linux configuração com resolução de dependências: Kernel Esperar (kernelexpect)
T. Perkins

Respostas:

1

Se você precisar fazer isso de maneira não interativa, poderá usar o comando make oldconfig ou o olddefconfig. O make * config corrige as dependências e essas não são tão detalhadas quanto, digamos menuconfig. (Caso contrário, o menuconfig é perfeitamente adequado para ativar os recursos um por um, inclusive inclui os textos de ajuda!)

O make oldconfig solicitará quaisquer 'novas' opções de configuração; portanto, você precisará inserir comentários como este para todas as opções desabilitadas se desejar trabalhar de maneira não interativa:

# CONFIG_KERNEL_GZIP is not set

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

de make help:

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

Isenção de responsabilidade: tentei apenas o teste trivial de remover as opções de algumas bibliotecas que eu sabia que eram necessárias. Eles foram adicionados novamente por olddefconfig e oldconfig. 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 iniciar isso? Não tenho tentado fazer uma configuração mínima há anos, mas me lembro de algumas maneiras não óbvias de criar kernels totalmente inutilizáveis. :)

ilkkachu
fonte
provavelmente "olddefconfig" também funcionaria bem. Existe uma maneira de obter as opções de configuração padrão de um arquivo defconfig? (Nesse caso, o arquivo defconfig daria uma base adequada e opção personalizada mínima poderia ser definido em config.)
Michas
-1

Desde o kernel 2.6.29, há 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, peguei 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)
Hristo Mohamed
fonte
1
Isso parece ótimo à primeira vista. Infelizmente, parece não se importar com dependências. :(
Michas