8. Сборка ядра при помощи утилиты cl-kernel

Назначение

Утилита cl-kernel предназначена для автоматической сборки ядра. Она входит в пакет sys-apps/calculate начиная с версии 1.3.3. Позднее утилита была переписана и добавлена в пакет calculate-builder.

Возможности

  • сборка ядра;
  • генерация initramfs;
  • прописывание ядра в автозагрузку.

Использование

В портежах Gentoo есть несколько версий Linux ядер, решающих различные задачи. Все пакеты с исходным кодом ядра находятся в категории sys-kernel, поэтому вы можете легко их увидеть, выполнив команду:

eix -C sys-kernel

Для сборки нового ядра достаточно установить пакет с исходным кодом ядра либо обновить текущее, командой:

USE="symlink" emerge -1uD virtual/linux-sources

Флаг USE="symlink" создаст символическую ссылку /usr/src/linux на директорию с исходным кодом ядра. Виртуальный пакет virtual/linux-sources установит последнюю версию используемого в системе ядра.

Для сборки ядра выполните:

cl-kernel

Программа выполнит следующие действия: выберет необходимую конфигурацию ядра (в зависимости от версии и архитектуры), скомпилирует ядро с модулями, сформирует initramfs, произведет установку ядра в директорию /boot. При этом к предыдущему ядру и initramfs-файлу будет добавлен суффикс "old".

Всего используется две версии ядра - серверная и десктопная. Конфигурации под каждую версию ядра хранятся в оверлее, в локальной директории /var/lib/layman/calculate/profiles/kernel.

После сборки ядра следует пересобрать пакеты модулей, связанных с ядром (такие как nvidia-driver, madwifi-ng и др.). Для этого выполните команду:

module-rebuild -X rebuild

Для вступления изменений в силу следует перезагрузить компьютер.

Опции сборки ядра

Для изменения параметров ядра перед компиляцией используйте опцию --menuconfig:

cl-kernel --menuconfig

Для изменения extraversion ядра используется опция --extraversion:

# при компилировании ядра 2.6.31 полное имя ядра будет 2.6.31-test
cl-kernel --extraversion test

Для указания директории с исходниками ядра, используйте опцию --kerneldir, при этом символическая ссылка /usr/src/linux будет изменена.

# скомпилируем ядро из директории /usr/src/linux-2.6.31-gentoo-r9
cl-kernel --kerneldir /usr/src/linux-2.6.31-gentoo-r9

По умолчанию настройки ядра берутся из оверлея Calculate. Для указания своей конфигурации ядра используйте опцию --kernel-config (или --use-own-config)

# используем конфигурацию ядра из /root/kernelconfig/config-2.6.31
cl-kernel --kernel-config /root/kernelconfig/config-2.6.31
# используем конфигурацию из каталога ядра
cl-kernel --kerneldir /usr/src/linux --use-own-config

При выполнении команды cl-kernel перед сборкой производится действие make clean, при этом ядро вместе с модулями собирается с нуля. Если в этом нет необходимости (например, нужно докомпилировать один или несколько модулей) используйте опцию --no-clean.

cl-kernel --use-own-config --menuconfig --no-clean

Примечание

Если новое ядро по каким-либо причинам будет работать некорректно, всегда можно загрузиться с предыдущего ядра. Для этого выберите в меню загрузчика kernel /boot/vmlinuz.old и initrd /boot/initrd.old

Спасибо!