configuration scriptée d'un noyau linux


8

Étant donné une liste de fonctionnalités du noyau, je veux créer une configuration Linux minimale prenant en charge toutes les fonctionnalités données (et les dépendances correspondantes) mais rien d'autre.

Existe-t-il un moyen de créer un allnoconfig et un outil pour activer les fonctionnalités une par une?

(Je pourrais éditer le .configfichier mais cela n'obtiendrait pas les bonnes dépendances. Je pourrais utiliser make *config, mais pour autant que je sache, celles-ci ne fonctionnent que de manière interactive ou créent une configuration par défaut.)


Voici un script qui automatise la configuration du noyau Linux avec une résolution de dépendance: Kernel Expect (kernelexpect)
T. Perkins

Réponses:


1

Si vous devez le faire de manière non interactive, vous pourrez peut-être utiliser make oldconfig ou make olddefconfig. make * config corrigera les dépendances et celles-ci ne sont pas aussi verbeuses que, disons menuconfig. (Sinon, menuconfig est parfaitement adapté pour activer les fonctionnalités une par une, il inclut même les textes d'aide!)

make oldconfig demandera toutes les «nouvelles» options de configuration, vous devrez donc insérer des commentaires comme celui-ci pour toutes les options désactivées si vous souhaitez travailler de manière non interactive:

# CONFIG_KERNEL_GZIP is not set

make olddefconfig d'autre part ne semble pas demander, mais utilise une valeur par défaut. Il y a aussi silentoldconfig, mais il demande aussi dans certains cas, donc ce n'est pas si silencieux.

de faire de l'aide:

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

Avertissement: j'ai seulement essayé le test trivial de suppression des options pour certaines bibliothèques dont je sais qu'elles étaient nécessaires. Ils ont été rajoutés par olddefconfig et oldconfig. Je ne sais pas comment cela s'applique à faire une configuration plus grande.

Dans tous les cas, je suppose que vous avez déjà envisagé d'utiliser make localmodconfig ou quelque chose comme ça avant de commencer? Je n'ai pas essayé de faire une config minimale depuis des années, mais il me semble me souvenir qu'il y avait des façons plutôt évidentes de créer des noyaux totalement inutilisables. :)


"olddefconfig" fonctionnerait probablement très bien aussi. Existe-t-il un moyen d'obtenir les options de configuration par défaut à partir d'un fichier defconfig? (Dans ce cas, le fichier defconfig donnerait une base appropriée et une option personnalisée minimale pourrait être définie dans .config.)
michas

-1

Depuis le noyau 2.6.29, il existe un script que vous pouvez trouver dans
/kernel_extracted_dir/scripts/config

Par exemple

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

(Pour rendre hommage où cela est dû, j'ai pris l'exemple de ce blog )

Vous avez les options suivantes (copiées depuis l'aide)

--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
Cela semble génial au premier regard. Malheureusement, il ne semble pas du tout se soucier des dépendances. :(
michas
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.