Ноябрь 18, 2012
Обновление ядра в Gentoo Linux

Одним из преимуществ Gentoo является возможность получить самые свежие версии всех пакетов и linux-ядра без полной переустановки системы. Ядро можно обновить до актуальной версии в любое время прямо из работающей системы. Для обновления ядра я использую genkernel, и состоит процесс из следующих шагов:

Обновляем портежи:

# emerge --sync

Смотрим, какая последняя версия ядра есть в репозитории:

# emerge -pv gentoo-sources
[ebuild   NS   ~] sys-kernel/gentoo-sources-3.6.6:3.6.6 [3.5.2:3.5.2] ...

NS обозначает, что есть обновление, и оно будет установлено в новый слот. В моем случае версия ядра в системе была 3.5.2, а версия последнего доступного ядра - 3.6.6.
Ставим (или обновляем) пакеты, которые понадобятся в процессе:

# emerge -av genkernel eselect module-rebuild

Утилита eselect понадобится для переключения между версиями ядра, а module-rebuild для пересборки внешних модулей, которые не встроили в ядро.
Заполним базу данных сведениями о текущих внешних модулях ядра:

# module-rebuild populate

Откроем файл /etc/genkernel.conf и выставим опции:

OLDCONFIG="no"
MENUCONFIG="yes"
CLEAN="yes"
MRPROPER="yes"
MOUNTBOOT="yes"
SAVE_CONFIG="yes"
USECOLOR="yes"

OLDCONFIG - до компиляции ядра запустится команда make oldconfig, которая попробует собрать информацию о системе, основываясь на /usr/share/genkernel/. Если активирован флаг --clean, то он превращается в --no-clean.
CLEAN - запускает make clean до начала процесса компиляции ядра, что удаляет все зависимости и объектные файлы из исходного (старого) ядра. При этом, если этот флаг имеет значение "NO", то не будет выполнена команда MRPROPER. Также не будет скопирован поверх конфигурационный файл, будет использован текущий.
MRPROPER - выполняет очистку, как и CLEAN, но ещё дополнительно удаляет все конфигурационные файлы (например, .config).
MENUCONFIG - запускает menuconfig, который помогает с помощью графического интерфейса настроить ядро.
MOUNTBOOT - монтирование загрузочного раздела, если он не подмонтирован (BOOTDIR). Обычно это /boot.
SAVE_CONFIG - в случае успешной компиляции ядра сохраняет конфигурационный файл в /etc/kernels.
USECOLOR - использовать цветной вывод информации в работе genkernel.

Устанавливаем исходники ядра:

# emerge -av gentoo-sources

Теперь, чтобы не настраивать новое ядро с нуля, сделаем бэкап конфигурации текущего ядра:

# cp /usr/src/linux/.config /root/.config-3.5.2

Просмотрим список всех доступных в данный момент версий ядра:

# eselect kernel list
Available kernel symlink targets:
   [1]   linux-3.5.2-gentoo *
   [2]   linux-3.6.6-gentoo

Звездочкой помечена текущая версия ядра.
Переключимся на новое ядро:

# eselect kernel set 2

Теперь можно приступить к сборке нового ядра. Запускаем genkernel:

# genkernel all

Откроется графический интферейс консольной программы, в котором необходимо найти пункт меню "Load an Alternate Configuration File" и, выбрав его, загрузить файл старой конфигурации, указав к нему путь (/root/.config-3.5.2). Благодаря этому загрузятся все настройки, которые были уже установлены для старого ядра. Просматриваем конфигурацию и делаем изменения в случае необходимости. Все новые опции, которых не было в загруженной конфигурации, отмечены ключевым словом "new".
Теперь сохраняем конфигурационный файл для того, чтобы genkernel использовал его. Для этого в меню выбираем пункт "Save an Alternate Configuration File" и сохраняем файл под именем .config, вследствие чего он сохранится в /usr/src/linux/.config.
Теперь, находясь в главном меню, два раза жмем esc и ждем, когда ядро скомпилируется.

Пересобираем внешние модули ядра:

# module-rebuild rebuild

Редактируем файл grub.conf, меняя в нем версию ядра на новую и переустанавливаем загрузчик:

# grub-install /dev/sda

Перезагружаемся:

# reboot

После перезагрузки удалим все, относящееся к старому ядру. Удаление исходников:

# emerge -P gentoo-sources

Удаление временных файлов, которые остались после компиляции старого ядра:

# rm -rf /usr/src/linux-3.5.2-gentoo

Удаление файлов модулей, использовавшихся старым ядром:

# rm -rf /lib/modules/3.5.2-gentoo

Удаление файлов, относящихся к старому ядру, из /boot:

# rm /boot/initramfs-genkernel-x86-3.5.2-gentoo
# rm /boot/kernel-genkernel-x86-3.5.2-gentoo
# rm /boot/System.map-genkernel-x86-3.5.2-gentoo

Проверяем, что все прошло успешно:

# eselect kernel list
Available kernel symlink targets:
   [1]   linux-3.6.6-gentoo *

Обновление ядра завершено, система использует новое ядро.
Теги: ,
Добавить комментарий:
Комментариев: (2)
Рейтинг: 0 Опубликовал Arcee 3371 дн. назад
Не нравится Нравится
А если я впервые собираю ядро и хочу отключить все ненужное, где искать инфу по опциям? есть ли на русском более-менее полное описание?
Рейтинг: 0 Опубликовал admin 3369 дн. назад
Не нравится Нравится
При запуске genkernel all (если MENUCONFIG равно YES) открывается графический интерфейс, где можно в визуальном режиме включить или выключить опции. На русском вряд ли исчерпывающее описание всех опций есть.
Опубликовать