Translate

суббота, 26 января 2013 г.

Сборка ядра с использованием SlackBuild'ов

 Давно я уже сюда ничего не писал. Да просто особенно-то и нечего было. Ну, подумаешь, Mageia 3 Beta -- сраный глюкодром. Подумаешь, перешёл на openSUSE, подумаешь, вернул Slackware на свой старый ноутбук и потребовалось пересобрать ядро...
Эта статья для тех пользователей Slackware, кому это может пригодиться, т.е. если Вы хотите "опакетить" свежесобранное ядро.

Я покажу как собрать пакет с ядром на примере самого свежего на данный момент LTS-ядра -- 3.4.27
Переходим в директорию /usr/src, затем скачиваем исходники ядра и распаковываем их.

# cd /usr/src
# wget http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.4.27.tar.xz
# tar -xvf linux-3.4.27.tar.xz

Обычно скачивается архив tar.bz2, а не tar.xz, но я скачал tar.xz просто потому, что оно весит на 12 МиБ меньше, просто экономия времени и трафика :-)

Теперь удаляем симлинк на текущее ядро и создаём симлинк для того, которое мы сейчас соберём
# rm linux
# ln -s linux-3.4.27 linux
# cd linux


Теперь нужно сконфигурировать исходники ядра. Надеюсь, объяснять что это и зачем не нужно. Вот несколько способов:
1) Использовать готовый конфиг от сами-знаете-кого
# wget http://slackware.rol.ru/slackware/slackware-14.0/source/k/config-x86/config-huge-smp-3.2.29-smp
# cp config-huge-smp-3.2.29-smp /usr/src/linux/.config

2) Использовать текущий (может не работать)
 # zcat /proc/config.gz > /usr/src/linux/.config

3) И самый любимый всеми:
# make menuconfig


Теперь собираем ядро (это может быть очень долго, особенно на старом железе):
# make bzImage -j3

Это сборка самого "бинарника" ядра, который будет загружать всю систему и модули. -j3 -- это количество потоков компиляции, обычно используется значение "(количество ядер процессора) +1"
Теперь пора "опакетить" это дело! :-)

АХТУНГ! Перед тем, как запустить слакбилд, отредактируйте его, исправив указанную в нём версию ядра на ту, которую Вы собираете.
# wget http://slackware.rol.ru/slackware/slackware-current/source/k/packaging-x86/kernel-huge-smp/kernel-huge-smp.SlackBuild
# chmod +x ./kernel-huge-smp.SlackBuild
# ./kernel-huge-smp.SlackBuild


Настала пора собирать модули:
 # make modules -j3 && make modules_install

Понятно, да? Теперь запаковываем их в пакет:
АХТУНГ! Перед тем, как запустить слакбилд, отредактируйте его, исправив указанную в нём версию ядра на ту, которую Вы собираете. [2]
# wget http://slackware.rol.ru/slackware/slackware-current/source/k/packaging-x86/kernel-modules-smp/kernel-modules-smp.SlackBuild
# wget http://slackware.rol.ru/slackware/slackware-current/source/k/packaging-x86/kernel-modules-smp/rc.modules.new
# chmod +x ./kernel-modules-smp.SlackBuild
# ./kernel-modules-smp.SlackBuild

Файл rc.modules.new скачать необходимо, т.к. он будет отвечать за подключение модулей ядра при включении компьютера и без него пакет может не собраться.

В принципе, это всё. Если вы уверены на 146%, что Ваше ядро окажется полностью рабочим, то его можно установить:
# installpkg /tmp/kernel-modules-smp-3.4.27_smp-i686-1.txz /tmp/kernel-huge-smp-3.4.27_smp-i686-1.txz

Если всё понравится, то старое ядро можно удалить. Только не забудьте сначала подправить загрузчик:
# nano /etc/lilo.conf && lilo


Всё. Можно загружаться в новое ядро. Удачи! ;-)

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

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