скриптовое конфигурирование ядра Linux

8

Учитывая список возможностей ядра, я хочу создать минимальную конфигурацию Linux, поддерживающую все данные функции (и соответствующие зависимости), но не более того.

Есть ли способ создать allnoconfig и инструмент для включения функций по одной?

(Я мог бы отредактировать .configфайл, но это не получило бы правильные зависимости. Я мог бы использовать make *config, но, насколько я знаю, они работают только интерактивно или создают некоторую конфигурацию по умолчанию.)

Михась
источник
Вот сценарий, который автоматизирует настройку ядра Linux с разрешением зависимостей: Kernel Expect (kernelexpect)
T. Perkins

Ответы:

1

Если вам нужно сделать это не в интерактивном режиме, вы можете использовать make oldconfig или make olddefconfig. make * config исправит зависимости, и они не такие подробные, как, скажем, menuconfig. (В противном случае menuconfig идеально подходит для включения функций одна за другой, он даже включает тексты справки!)

make oldconfig запросит любые «новые» параметры конфигурации, поэтому вам нужно будет добавить комментарии, подобные этим, для любых отключенных параметров, если вы хотите работать неинтерактивно:

# CONFIG_KERNEL_GZIP is not set

make olddefconfig, с другой стороны, не запрашивает, а использует значение по умолчанию. Есть также silentoldconfig, но он также спрашивает в некоторых случаях, так что это не так тихо.

от помощи сделать:

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

Отказ от ответственности: я только попробовал тривиальный тест удаления опций для некоторых библиотек, которые я знал, были необходимы. Они были добавлены обратно olddefconfig и oldconfig. Я не знаю, как это относится к большей конфигурации.

В любом случае, я полагаю, вы уже рассматривали возможность использования make localmodconfig или чего-то в этом роде, прежде чем начать это? Я не пытался создать минимальную конфигурацию в течение многих лет, но я помню, что было несколько неочевидных способов создания абсолютно непригодных для использования ядер. :)

ilkkachu
источник
"olddefconfig", вероятно, тоже будет работать нормально. Есть ли способ получить параметры конфигурации по умолчанию из файла defconfig? (В этом случае файл defconfig даст подходящую базу, и минимальная настраиваемая опция может быть установлена ​​в .config.)
michas
-1

Начиная с ядра 2.6.29, есть скрипт, который вы можете найти в
/kernel_extracted_dir/scripts/config

Например

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

(Чтобы отдать должное, я взял пример из этого блога )

У вас есть следующие варианты (скопировано из справки)

--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
Это кажется великолепным с первого взгляда. К сожалению, это не заботится о зависимостях вообще. :(
Михас