- Личный дневник Spider'a - https://spider.bsyteam.net -

Linux Ядро Своими руками или Kernel don’t panic

Вот и возникла необходимость пересобрать ядро ОС Linux.
Причин этому было 2 :
1. Научиться правильно собирать ядро
2. Заставить заработать старенький Radeon с новой ASP 12 Carbon.
Попутно хотелось посмотреть на возможности Sfq и rshaper,
а так же немного оптимизировать существующую систему.

Начнем …..

Часть первая.

Для освоения даной статьи, а она будет просто описывать мой удачный,
да и неудачный опыт по сборке ядра, нам понадобиться :
1. Прочитать предыдущую статью описывающую основные правила для сборки ядра.
2. Скачать исходники свежего ядра с http://kernel.org
3. Включить /dev/head ;)

Поехали.
Скачанный архив распаковываем в папку с header’ами ядра.
для моей ASP 12 это /usr/src/kernels .
Там уже были :

[root@Spider kernels]# ls -al

итого 32

drwxr-xr-x  5 root root 4096 Сен 13 03:46 .
drwxr-xr-x  4 root root 4096 Сен 13 03:14 ..
drwxr-xr-x 18 root root 4096 Сен  9 16:01 2.6.22.9-91.0.120asp-i686
drwxr-xr-x 18 root root 4096 Сен  9 07:52 2.6.23.17-88.0.120asp-i686

аккуратно ложим рядом linux-2.6.26/ на момент написания статьи — это последняя,
стабильно работающая версия.

cd linux-2.6.26/

запускаем оболочку для конфигурации

make menuconfig

Выбираем нужные модули <M> или включаем компоненты в само ядро <*>.

Сохраняем.

Запускаем сборку

make bzImage

Процесс пошел … лед тронулся …. ну и наверно немного я вместе с ним,
так как за время компиляции успел посмотреть фильм.

Итак ядро скомпилировано. Собираем модули

make modules

Модули собирались не меньше.

копируем полученное ядро в папку загрузки

cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.26

и system.map

cp System.map /boot/System.map

правим grub.conf для возможности загрузки нового ядра

title ASPLinux (2.6.26 Spider_edition)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.26 ro root=LABEL=/

Инсталим полученные модули

make modules_install

Все скопировалось…. пробуем грузить …

По-моему отлично получилось …. панически ….. ;)
Такой кучи ошибок я еще не видел …
Kernel в panic — я признаться тоже … ;)
———————————————————

Часть вторая.

Выпив пива — и видимо не зря проанализировал ошибки прошлой сборки
пришел к следующим выводам:

1. RAM диск все-таки нужен — а значит его прийдеться собирать
2. Что-то долговато оно компилилось — значит или много насобирал
или не то
3. Пиво стимулирует работу /dev/head ;)

Действия :
1. Немного погуглив нашел как собрать RAM-диск mkinitrd
2. Взял .config от рабочего 23 ядра
3. Купил еще пива ;)

Итак попытка №2.
Перезагружаемся в старое ядро 2.6.23

Удаляем папку /usr/src/kernels/linux-2.6.26
Удаляем папку /lib/modules/2.6.26
Удаляем ядро /boot/vmlinuz-2.6.26
Удаляем      /boot/System.map

Распаковываем снова исходники ядра в
/usr/src/kernels/linux-2.6.26
сопируем .config от ядра 2.6.23 в корень папки с ядром 2.6.26
запускаем утилиту конфигураци со старым конфигом

make menuconfig oldconfig

Вносим изменения (Проц, видео, сеть — посолить поперчить по вкусу ;) )
Собираем образ

make bzImage

На этот раз все собралось минут за 10
уже прогресс ;)
Собираем модули

make modules

хм … Схожу ка я еще за пивом ;)
Собиралось около часа
Собираем RAM-диск

mkinitrd /boot/initrd-2.6.26.spider.img

Копируем само ядро

cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.26.spider

Копируем System.map

cp System.map /boot/System.map

Инсталим собранные модули

make modules_install

Правим загрузчик

title ASPLinux (2.6.26 Spider_edition)
        root (hd0,0)
        kernel /boot/vmlinuz-2.6.26.spider ro root=LABEL=/ rhgb quiet
        initrd /boot/initrd-2.6.26.spider.img

ну… грузим.
Время пить херши …. ой пиво ;)
Все запустилось удачно, и … работает ;)