30.05.2010 Gentoo Kernel Update (Обновление Гентушного ядра)

0.250 Предисловие
Надоело мне пользоваться чужими статьями по апгрейду ядра, решил набросать что-то своё. Понравится - пользуйтесь.

0.500 Имею
Имею машину с установленной ОС Генту и первоначально сконфигурированным ядром, машина загружается и подает первоначальные признаки жизни. Наличиствует Интернет. Имеется желание обновить ядро.

 andreika # uname -a
Linux homerouter 2.6.28-gentoo-r5 #8 SMP Sat Jun 27 11:10:27 MSD 2009 i686 Intel(R) Celeron(R) CPU 2.80GHz GenuineIntel GNU/Linux
0.750 Хочу
Обновить ядро, Gentoo-Way kernel update, используя системные возможности, предусмотренные ОС Генту.
Для начала вы должны убедиться, что в системе установлены пакеты gentoolkit, morule-rebuild нам нужны утилитки eselect и module-rebuild.

Установим, если еще не установлено:
# emerge -pv gentoolkit module-rebiud

Оценим USE-флаги, если всё устраивает
# emerge gentoolkit module-rebuild


1. Обновление ядра (Kernel Upgrade)

Смотрим, что нового есть:
 # emerge -pv gentoo-sources
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild  NS   ] sys-kernel/gentoo-sources-2.6.34 [2.6.28-r5] USE="-build -deblob -symlink" 66,065 kB
Total: 1 package (1 in new slot), Size of downloads: 66,065 kB


[ebuild NS ] - "New" "Slot" Имеется обновление, обновление будет установлено в новый слот, т.е. старый пакет одновременно будет существовать с новым.

2. Установка исходников нового ядра:
# emerge gentoo-sources

А вот и они, исходники старого и нового ядра:
# ls -la  /usr/src
lrwxrwxrwx  1 root root   22 Май 28  2009 linux -> linux-2.6.28-gentoo-r5
drwxr-xr-x 23 root root 4096 Июн 27  2009 linux-2.6.28-gentoo-r5
drwxr-xr-x 23 root root 4096 Май 30  2010 linux-2.6.34


На всякий случай делаю бекап конфига текущего ядра:
# cp /usr/src/linux/.config /home/andreika/backup/.config-2.6.28-r5

Gentoo требует, чтобы ссылка "linux" указывала на исходники текущего используемого ядра, поэтому переключимся на них используя eselect.

Список всех доступных версий:
# eselect kernel list
Available kernel symlink targets:
  [1]   linux-2.6.28-gentoo-r5 *
  [2]   linux-2.6.34


Переключаемся на новое ядро:
# eselect kernel set 2


Чтобы не настраивать ядро с нуля скопируем забекапленный конфиг старого ядра в каталог с новым..
# cd /usr/src/linux
# cp /usr/src/linux-2.6.34/.config .


Теперь, либо:
# cd /usr/src && make menuconfig


и пошаговый просмотр всех разделов на предмет добавления новых опций (будут отмечены как "(new)"?).

Либо, если изменения незначительны (например, переход от одной ревизии к другой - от r3 к r8 в данном случае), то можно воспользоваться командой:
# make oldconfig


Значения новых опций будут запрошены у пользователя во время выполнения этой команды. Учтите, что в данном случае не будет возможности посмотреть описание той или иной опции (в принципе никто не мешает запустить параллельно "make menuconfig" либо подсматривать ещё как-нибудь).

3. Компилирование и установка нового ядра:

# make && make modules_install
# mount /boot


На всякий случай (а случаи разные бывают) сначала копирую старое ядро в oldbzImage (в настройках grub у меня имеется соответствующая опция загрузки):
# cp /boot/bzImage /boot/oldbzImage
#  cp /usr/src/linux/arch/x86/boot/bzImage /boot/bzImage


4. Переустановка внешних модулей ядра, т.е. тех, что не идут с ядром. Например, это могут быть внешние драйверы ALSA, Nvidia, Ati, VirtualBox kernel module, etc..., для этого нам и потребуется команда module-rebuld:
# module-rebuild rebuild

# reboot

5. Удаление старого ядра.
Если вы счастливы с новым ядром, всё относящееся к старому можно удалить.

Удаление исходников старого ядра:
# emerge -P gentoo-sources


Временные файлы, созданные в процессе компиляции всё ещё остались в /usr/src/linux_старая_версия_ядра, их можно удалить с помощью rm:
# rm -rf /usr/src/linux-2.6.28-gentoo-r5


Также можно удалить модули, которые использовались старым ядром и всё ещё находятся в /lib/modules:
# ls /lib/modules/
2.6.28-gentoo-r5  2.6.34-gentoo
# rm -rf /lib/modules/2.6.28-gentoo-r5


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


6. ДОПы
Команды make clean и make mrproper удаляют все объектные файлы и зависимости из дерева исходного кода ядра, т.е. полностью удаляют всё наносное, оставшееся после предыдущей конфигурации/компиляции ядра. Причём make mrproper удалит также и конфиг ядра .config. Будьте внимательны, и удачи...

{TAGS}




Вас также может заинтересовать:

Исполнилось 20 лет с момента первого выпуска ядра Linux. Kernel.org опять недоступен
Обновление ZFSonLinux 0.6.0-rc10, реализации ZFS для ядра Linux
Обновление ядра Linux 3.2.8. Несколько DoS-уязвимостей в ядре Linux
Intel microcode update
22.05.2010 Использование PackageSet в Gentoo (Или жизнь после установки Gentoo-Way)
Доступен дистрибутив Oracle Linux 5 Update 8