Всё новое — это хорошо забытое старое. Спустя 7 месяцев мы решили восстановить утилиту сборки ядра cl-kernel. Но не просто восстановить, а полностью переосмыслить её поведение.
Реализовать вызов make menuconfig в графическом исполнении в клиент-серверной схеме работы утилит Calculate 3 не представляется возможным, поэтому программа как и прежде написана на Bash. Чтобы подчеркнуть разницу, переписанный cl-kernel входит в состав нового пакета calculate-toolkit, который будет включать подобные полезные дополнения, тесно интегрированными с особенностями работы Calculate Linux. Реализация cl-kernel на Bash в отдельном пакете надеюсь привлечёт сторонних разработчиков к проекту.
Отличия в работе новой программы
Основная задача cl-kernel вовсе не скомпилировать ядро, как может показаться, а создать шаблон настроек ядра. В своей работе cl-kernel использует утилиты для получения конфигурационного файла ядра, как это происходит при сборке calculate-sources или при настройке любого другого пакета. В результате своей работы cl-kernel создаст шаблон в директории /var/calculate/templates, который будет менять настройки ядра по умолчанию.
Например вам нужно добавить поддержку оборудования, слегка изменив настройки ядра. Нет ничего проще. Уберите USE флаг “minimal” для пакета calculate-sources, переустановите ядро чтобы распаковать исходники. После этого выполните cl-kernel. По результату работы вы получите изменённое ядро. Дальнейшие обновления пакета будет выполняться через компиляцию с добавленными вами опциями.
Компиляция ядра выполняется долго? Нет ничего проще, отключите огромное количество лишних драйверов устройств и поддержку неиспользуемых функций и вы в несколько раз ускорите компиляцию ядра.
Поддержка других ядер
Программа cl-kernel работает со всеми ядрами доступными в портежах. Так как шаблонов настроек для остальных ядер нет, скрипт будет генерировать дефолтный конфигурационный файл ядра и создавать шаблон настроек относительно него. Это позволяет существенно сократить размер файла шаблона.
Использовать сторонние ядра удобней. При желании при помощи cl-kernel, вы можете импортировать настройки ядра calculate-sources для использования в любом другом ядре, например vanilla-sources. Это позволит вам проводить эксперименты без опасений оставить систему с нерабочим ядром.
Поддержка initramfs
Новая программа учитывает поддержку initramfs в ядре и если она выключена, не создаёт файл initramfs. Этот этап настроек требует определённой подготовки и будет описан в документации в примерах. Понадобится все необходимые для старта ядра драйвера вкомпилировать в ядро. Как результат - скорость загрузки можно существенно увеличить.
Например убрав поддержку лишнего оборудования на своём стареньком ноутбуке и отказавшись от initramfs, я ускорил загрузку от Grub до Lightdm с 11 до 6 секунд!
Интеграция с профилем
Возможно настало время перечитать статьи Создание своего профиля в Calculate Linux, Обновление утилиты смены профиля и Выборочное отключение шаблонов, ведь новая программа добавляет ещё один аргумент в пользу создания своего профиля (если вы этого ещё не сделали). Шаблоны созданные при помощи cl-kernel найдут своё место в вашем профиле. Настройки calculate-sources 3.19 ядра уже созданы при помощи cl-kernel.
Подробнее о новой программе вы можете прочесть на обновлённой странице документации Сборка ядра со своей конфигурацией.