Суть проблемы в том, чтобы избежать рутины в виде выставления тех же опций вручную при каждом обновлении ядра, а так же иметь удобный механизм в генерации конфига.
Для примера я буду рассматривать архитектуру amd64. Defconfig 86_64_defconfig находится в arch/x86/configs/x86_64_defconfig.
При запуске make menuconfig начальный .config генерируется исходя из значений в x86_64_defconfig. При запуске make defconfig происходит то же самое. Я проверил — сгенерированные конфиги идентичны.
В чём заключается идея.
Допустим, у меня есть шаблон для моего компа http://pastebin.com/MXpAf9qD. Я хочу натравить его на x86_64_defconfig, изменив или добавив необходимые опции. Я написал небольшую тулзу. На данный момент выхлоп примерно такой
Pass CONFIG_DEVTMPFS
Pass CONFIG_DEVTMPFS_MOUNT
Add CONFIG_IKCONFIG [m]
Add CONFIG_IKCONFIG_PROC [y]
Pass CONFIG_EXT4_FS
Add CONFIG_FUSE_FS [m]
Add CONFIG_UDF_FS [m]
Add CONFIG_TUN [y]
Add CONFIG_NET_SCH_HTB [m]
Add CONFIG_NET_SCH_INGRESS [m]
Add CONFIG_NETFILTER_XT_MATCH_COMMENT [m]
Add CONFIG_NETFILTER_XT_MATCH_HASHLIMIT [m]
Add CONFIG_PM_RUNTIME [y]
Pass CONFIG_EXT4_FS_SECURITY
Add CONFIG_I2C_PIIX4 [m]
Add CONFIG_I2C_CHARDEV [m]
Add CONFIG_MK8 [y]
Change CONFIG_DRM [y->m]
Add CONFIG_DRM_RADEON [m]
Add CONFIG_DRM_NOUVEAU [m]
Add CONFIG_USB_XHCI_HCD [m]
Add CONFIG_CONFIG_R8169 [m]
Add CONFIG_USB_STORAGE_REALTEK [m]
Add CONFIG_SENSORS_IT87 [m]
Add CONFIG_SENSORS_K10TEMP [m]
Add CONFIG_BONDING [m]
Add CONFIG_TRANSPARENT_HUGEPAGE [y]
Add CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS [y]
Add CONFIG_DM_SNAPSHOT [m]
Add CONFIG_EDAC_DECODE_MCE [y]
После этого идет запуск
make defconfig
Примеры синтаксиса в утилиты:
DEFCONF=arch/x86/configs/x86_64_defconfig
cp $DEFCONF $DEFCONF.bac
# обычное использование
kernel-config-patcher -v -o $DEFCONF $DEFCONF.bac -s ~/my.config
#или можно указать несколько пользовательских конфигов
kernel-config-patcher -v -o $DEFCONF $DEFCONF.bac -s ~/base.config -s ~/desktop.config -s ~/router.config
#или можно указывать опции прямо как аргумент (на стадии доработки)
kernel-config-patcher -v -o $DEFCONF $DEFCONF.bac CONFIG_EXT4_FS=n CONFIG_TUN=y
Вопрос: что я мог упустить?