суббота, 8 января 2011 г.

Сборка ядра с Reiser4-патчем

Являясь счастливым пользователем Debian GNU/Linux Squeeze, решил пропатчить "местное" 2.6.32 ядро патчем reiser4. К сожалению патч накладывается криво. Сам я в Сях не разбираюсь. Решил скачать и пропатчить ядро 2.6.35, ибо оно объявлено "longterm" - с длительным  сроком поддержки.

Итак, начинается шаманство и танцы с бубном =)

Работаем по рутом, и пошли нахуй те, кто скажет, что это плохо, ибо говорят они и сами не ведуют о чём.
Переходим в каталог /usr/src/ и не забываем позаботиться о свободном пространстве на диске, ибо распакованное ядро и бинарники после компиляции не хило раздуваются.


# cd /usr/src/

Скачиваем исходники ядра

# wget http://www.kernel.org/pub/linux/kernel/v2.6/longterm/v2.6.35/linux-2.6.35.10.tar.bz2

Патчи reiser4 на все актуальные версии linux-ядра выкладываются Эдуардом Шишкиным сюда
Скачиваем патч на наше 2.6.35 ядро

# wget http://www.kernel.org/pub/linux/kernel/people/edward/reiser4/reiser4-for-2.6/reiser4-for-2.6.35.patch.bz2

Распаковываем исходники

# tar  xjf  linux-2.6.35.10.tar.bz2


Появится каталог linux-2.6.35.10. Заходим туда и накладываем патч

# cd linux-2.6.35.10
# bzcat  /usr/src/reiser4-for-2.6.35.patch.bz2  | patch -p1

Если вывод сообщений прошел без "FAILED",  значит все тип-топ.

У нас ведь Debian, если еще не забыли =) Тут есть утилиты для сборки ядра. Все есть в стандартных репозиториях

# apt-get install kernel-package libncrses5-dev


Пакет kernel-package вытянет за собой все нужные пакеты для сборки ядра.
Не забываем, что мы находимся в каталоге /usr/src/linux-2.6.35.10/
Далее

# make-kpkg clean

Редактируем конфигурацию ядра

# make menuconfig

В разделе Files Systems нужно клавишой "пробел" включить опцию Reiser4 (EXPEREMENTAL)
Обратите внимание на содержимое квадратных и угловых скобок.
* - драйвер включается непосредственно в образ ядра.
М - драйвер будет собран модулем.
У меня модулем. Выходим в корень списка, Жмем по пункту "Save an alternate configuration", сохраняемся и выходим.

И, собственно, сама сборка:

# make-kpkg --initrd --append-to-version=-reiser4-patch  kernel_image  kernel_headers


Здесь
--initrd создать образ initrd
--appen-to-version=  добавить строку  к версии. Обычно добавляется, чтобы различать сборки, патчи и пр.
kernel_image  служебное слово, означает собрать ядро
kernel_headers  служебное слово, означает собрать  заголовочные файлы для ядра. Можно не прописывать, но рекомендую не пренебрегать этой опцией. Заголовочные файлы нужны, например, для проприетарных драйверов Nvidia.

После ввода команды сборки и нажатия Enter можно смело... продолжать работать  за компьютером =) От получаса до нескольких часов займет сборка обычного не урезанного ядра. На моем Core2Duo 1.5GHz сборка длится около часа, или более. Два года назад было 45 минут.  Также можно указать опцию -j количество_потоков. Например, на шестиядерном процессоре имеет смысл указать -j 6.  Теоретически скорость сборки должна увеличиться в 6 раз :)

Если все прошло удачно, то в /usr/src/ появятся два .deb файла.
У меня они такие:
linux-image-2.6.35.10reiser4-patch_2.6.35.10reiser4-patch-10.00.Custom_amd64.deb
linux-image-2.6.35.10reiser4-patch_2.6.35.10reiser4-patch-10.00.Custom_amd64.deb

Установим их:

# dpkg -i /usr/src/linux-image-2.6.35.10reiser4-patch_2.6.35.10reiser4-patch-10.00.Custom_amd64.deb


# dpkg - i /usr/src/linux-image-2.6.35.10reiser4-patch_2.6.35.10reiser4-patch-10.00.Custom_amd64.deb

Ну все, перезагружаемся в новое ядро.

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

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