Translate

четверг, 21 марта 2013 г.

Slackware: переход на generic-ядро

"О плюсах и минусах generic-ядер" вы можете почитать много где в интернете, здесь же я покажу тебе, о мой дорогой читатель, как перейти на использование generic-ядра вместо ядра huge, которое идёт в ОС Slackware по умолчанию.

Вообще, при полной установке Slackware, пользователь получает оба типа ядра -- как huge, так и generic, но по умолчанию загружается huge, т.к. для generic требуется некоторая настройка. Итак...

Нам нужен скрипт /usr/share/mkinitrd/mkinitrd_command_generator.sh, который предоставляется пакетом mkinitrd, на момент написания данной статьи в Slackware 14.0 этот пакет имеет версию mkinitrd-1.4.7-x86_64-6.

Вообще говоря, перед запуском скрипта должны быть установлены модули ядра, которое мы хотим обработать. Например, это 3.4.37 [LTS] (на данный момент оно самое свежее из поддерживаемых, за исключением 3.8.4).

Делаем:
 
# /usr/share/mkinitrd/mkinitrd_command_generator.sh -k 3.4.37

В результате мы получаем вывод наподобие этого:

root@Innovindil:/usr/src/linux# /usr/share/mkinitrd/mkinitrd_command_generator.sh -k 3.4.37
#
# mkinitrd_command_generator.sh revision 1.45
#
# This script will now make a recommendation about the command to use
# in case you require an initrd image to boot a kernel that does not
# have support for your storage or root filesystem built in
# (such as the Slackware 'generic' kernels').
# A suitable 'mkinitrd' command will be:

mkinitrd -c -k 3.4.37 -f ext4 -r /dev/sdb5 -m usbhid:ehci-hcd:mbcache:jbd2:ext4 -u -o /boot/initrd.gz
root@Innovindil:/usr/src/linux#



Думаю, понятно, что нужно сделать:

root@Innovindil:/boot# mkinitrd -c -k 3.4.37 -f ext4 -r /dev/sdb5 -m usbhid:ehci-hcd:mbcache:jbd2:ext4 -u -o /boot/initrd.gz
OK: /lib/modules/3.4.37/kernel/drivers/hid/hid.ko added.
OK: /lib/modules/3.4.37/kernel/drivers/hid/usbhid/usbhid.ko added.
OK: /lib/modules/3.4.37/kernel/drivers/usb/host/ehci-hcd.ko added.
OK: /lib/modules/3.4.37/kernel/fs/mbcache.ko added.
OK: /lib/modules/3.4.37/kernel/fs/jbd2/jbd2.ko added.
OK: /lib/modules/3.4.37/kernel/fs/mbcache.ko added.
OK: /lib/modules/3.4.37/kernel/fs/jbd2/jbd2.ko added.
OK: /lib/modules/3.4.37/kernel/fs/ext4/ext4.ko added.
25271 блоков
/boot/initrd.gz created.
Be sure to run lilo again if you use it.
root@Innovindil:/boot#


initrd.gz создан. Хорошо. Теперь, если у нас уже есть файл /boot/vmlinuz-generic-3.4.37, (создать можно с помощью соответствующего слакбилда или простым копированием)или аналогичный ему по функционалу, то делаем:

root@Innovindil:/boot# /usr/share/mkinitrd/mkinitrd_command_generator.sh -l /boot/vmlinuz-generic-3.4.37
# Linux bootable partition config begins
# initrd created with 'mkinitrd -c -k 3.4.37 -f ext4 -r /dev/sdb5 -m usbhid:ehci-hcd:mbcache:jbd2:ext4 -u -o /boot/initrd.gz'
image = /boot/vmlinuz-generic-3.4.37
  initrd = /boot/initrd.gz
  root = /dev/sdb5
  label = 3.4.37
  read-only
# Linux bootable partition config ends
root@Innovindil:/boot#


Этот "выхлоп" следует скопировать в /etc/lilo.conf  и выполнить команду lilo:

root@Innovindil:/boot# lilo
Warning: LBA32 addressing assumed
Warning: The boot sector and map file are on different disks.
Added 3.4.37  +  *
Added Linux
2 warnings were issued.
root@Innovindil:/boot#


На предупреждения реагируем как обычно, и, как обычно, загружаемся в новое ядро. Удачи ;)

Комментариев нет:

Отправить комментарий