Установка свежего ядра Zen-Kernel и его оптимизация.

Этим способом вы можете всегда иметь самое свежее ядро Zen не дожидаясь ни каких ebuild-ов, и при этом оно будет оптимизированно под вашу систему, что ощутимо скажется на скорости.

Качаем свежее ядро с Git.

cd /usr/src/
git clone --depth 1 https://github.com/zen-kernel/zen-kernel.git linux-zen

Делаем линк.

ln -s linux-zen linux

Вы скажете что все это можно сделать добавив оверлей “THE”,или использовать версию “9999”

layman -a THE

(На данный момент, оба способа, не работают.)

Теперь нужно сконфигурировать ядро.

Есть очень приятный скрипт в ядре - make localmodconfig. Особенно он приятен на ядре Calculate т.к. ребята стараются все опции сделать модулями. Нам это на руку, во всех смыслах. Он сканирует загруженные модули в системе и вписывает их в ядро. Если вы не желаете использовать initrd ( дальше пойдет инструкция без него) то воспользуйтесь командой - make localyesconfig, автоматом будет все отключено связанное с initrd.

После того как мы ушли от inird, нам придется перейти на фреймбуфер vesabf, вместо uvesafb, потому что он работает в паре с initrd. Либо оставить initrd с uvesafb и воспользоваться этим HOW-TO
Для этого нужно изменить в ядре некоторые опции:

make nconfig

Включаем vesafb:

Device Drivers ->
    <*> Connector - unified userspace <-> kernelspace linker  --->
    Graphics support ->
        [*] Support for frame buffer devices  --->
            [*] Enable firmware EDID
            ...
            [*] VESA VGA graphics support

И выключаем uvesafb:

Device Drivers ->
    <*> Connector - unified userspace <-> kernelspace linker  --->
    Graphics support ->
        [*] Support for frame buffer devices  --->
            [*] Enable firmware EDID
            ...
            <*> Userspace VESA VGA graphics support

Более подробно на WiKi.

Здесь все вкусности Zen-Kernel которые можно включить.

И еще раз просматриваем свои устройства что бы все на верочку :wink:

make nconfig

Следующий шаг сборка:

make modules modules_install bzImage

Когда ядро соберется скопируем его в boot:

cp arch/x86/boot/bzImage /boot/Zen-2.6.39.1

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

module-rebuild -X rebuild

Следующий шаг это правка menu.list, настройка grub. Просто добавляем туда новые строки.

Вот мой пример Grub:

cat /boot/grub/menu.list

title Calculate Linux Desktop AMD64 11.0 KDE Zen-Kernel-2.6.39
root (hd0,5)
kernel /boot/Zen-2.6.39.1 root=/dev/sda6 video=vesafb:mtrr:3,ywrap vga=0x319,udev quiet resume=/dev/sda5 elevator=cfq doscsi

Grub2

menuentry "Calculate Linux Desktop AMD64 11.0 KDE Zen-Kernel-2.6.39" {
        insmod part_msdos
        insmod reiserfs
        set root='(hd0,msdos6)'
        linux /boot/Gen-2.6.39.1 root=/dev/sda6 video=vesafb:mtrr:3,ywrap vga=0x319,mtrr:3,ywrap,udev quiet resume=/dev/sda5 elevator=cfq doscsi
}

Подставляем свои разделы, просмотреть их можно так:

fdisk -l 

Или подсмотрев текущие параметры.

Не забываем что Grub считает разделы как /dev/sda1=(hd0,0) и так далее. Grub2 читает один к одному.
Теперь можно смело в reboot.

После этих манипуляций загрузка ядра ускоряется в разы. При всем этом, мы ни чем не рискуем. Можно всегда загрузится с рабочего ядра.
Применять этот рецепт можно к любым вариациям ядра. Как вы успели заметить, что все довольно просто и быстро и не требует много времени и действий.

Хорошее описание. Спасибо. Можно добавить описание вариантов параметра elevator для выбора планировщиков при передаче параметров ядру в grub. Сейчас там прописано по тексту только elevator=cfq. Варианты параметра такие: noop, deadline, cfq, bfq.

Благодарю, конечно можно, и нужно.

В настройках grub Вы не указывали путь к initrd, значит в настройках ядра его поддержка отключена?
Стоит ли вообще отключать поддержку initramfs или нет? Чем это грозит?

Спасибо за помощь, есть ещё вопросы, но описал их в другой теме:
http://www.calculate-linux.ru/boards/8/topics/9121?r=9679#message-9679

В статье написано что initrd не используется, Нужен он для старта модулей драйвера ФС и диска WiKi . Еще нужен для работы фреймбуфера uvesafb. Так как мы при помощи скрипта собираем ядро( make localyesconfig ), то все пункты компилируются в ядро а не модулями. И вы спокойно можете не использовать его. Но если вы намерены использовать uvesagb, то воспользуйтесь этой статьей .