"О плюсах и минусах 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).
Делаем:
В результате мы получаем вывод наподобие этого:
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#
На предупреждения реагируем как обычно, и, как обычно, загружаемся в новое ядро. Удачи ;)
Вообще, при полной установке 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#
На предупреждения реагируем как обычно, и, как обычно, загружаемся в новое ядро. Удачи ;)