configurazione con script di un kernel linux


8

Dato un elenco di funzionalità del kernel, voglio creare una configurazione minima di Linux che supporti tutte le funzionalità fornite (e le relative dipendenze) ma nient'altro.

C'è un modo per creare un allnoconfig e uno strumento per abilitare le funzionalità una per una?

(Potrei modificare il .configfile ma questo non otterrebbe le dipendenze giuste. Potrei usare make *config, ma per quanto ne so che funzionano solo interattivamente o creano alcune configurazioni predefinite.)


Ecco uno script che automatizza la configurazione del kernel Linux con la risoluzione delle dipendenze: Kernel Expect (kernelexpect)
T. Perkins

Risposte:


1

Se è necessario farlo in modo non interattivo, è possibile utilizzare make oldconfig o make olddefconfig. make * config risolverà le dipendenze e quelle non sono così dettagliate come, diciamo menuconfig. (Altrimenti menuconfig è perfetto per abilitare le funzionalità una ad una, include anche i testi di aiuto!)

make oldconfig richiederà eventuali "nuove" opzioni di configurazione, quindi è necessario inserire commenti come questo per eventuali opzioni disabilitate se si desidera lavorare in modo non interattivo:

# CONFIG_KERNEL_GZIP is not set

make olddefconfig invece non sembra chiedere, ma usa un valore predefinito. C'è anche silentoldconfig, ma in alcuni casi lo richiede, quindi non è così silenzioso.

da aiuto:

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: ho provato solo il banale test di rimozione delle opzioni per alcune librerie che so fossero necessarie. Sono stati aggiunti da olddefconfig e oldconfig. Non so come questo valga per una configurazione più ampia.

In ogni caso, suppongo che tu abbia già preso in considerazione l'utilizzo di make localmodconfig o qualcosa del genere prima di iniziare? Non ho provato a fare una configurazione minima da anni, ma mi sembra di ricordare che c'erano dei modi piuttosto ovvi per creare kernel totalmente inutilizzabili. :)


"olddefconfig" probabilmente funzionerebbe anche bene. C'è un modo per ottenere le opzioni di configurazione predefinite da un file defconfig? (In tal caso il file defconfig darebbe una base adatta e l'opzione personalizzata minima potrebbe essere impostata in .config.)
michas

-1

Dal kernel 2.6.29 c'è uno script in cui puoi trovare
/kernel_extracted_dir/scripts/config

Per esempio

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

(Per dare credito dove è dovuto, ho preso l'esempio da questo blog )

Hai le seguenti opzioni (copiate dalla guida)

--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)

1
Questo sembra fantastico al primo sguardo. Sfortunatamente sembra non preoccuparsi affatto delle dipendenze. :(
michas,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.