понедельник, 29 октября 2007 г.

Сборка ядра

Сборка ядра в debian очень простое занятие.
Шаг1 - подготорка
Для начала нужно установить следующие пакеты:
kernel-package,libncurses5-dev, fakeroot, wget, bzip2, build-essential и сами исходники ядра.
Пакеты устанавливаем так: apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential.
Скачиваем исходники, распковываем в /usr/src. Делаем ссылку linux на исходники.
tar xjf linux-2.6.21.3.tar.bz2
ln -s linux-2.6.21.3 linux
cd /usr/src/linux

Если у нас есть патчи то устанавливаем так:
bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run
bzip2 -dc /usr/src/patch.bz2 | patch -p1

Первая команда нужна для теста, 2-ая для установки. Никогда не вводите 2-ую если у вас успешно не выполнилась 1-ая.
Далее копируем наш теперешний конфиг в /usr/src/linux и пишем
make clean && make mrproper
cp /boot/config-`uname -r` /usr/src/linux/.config

Далее запускам конфигуратор:
make menuconfig

Шаг 2 - сборка и установка
После конфигурирования ядра - проинсталлируем его:
make-kpkg clean fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers

Где вместо -custom поставим нужную нам версию(или префикс). Например, -my-build
После выполнения команды в каталоге с исходниками вы найдете 2 файла с раширением *.deb. Нужно всего лишь установить их, например так:
dpkg -i linux-image-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb
dpkg -i linux-headers-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb


А Grub автоматом подхватит все необходимые настройки. Теперь можно перезагрузится с новым ядром, если при конфигурировании вы подключили все что надо ;)

14 комментариев:

panakis комментирует...

спасибо тебе

Никита Рукавков комментирует...

Всегда пожалуйста. Если что обращайтесь ;)

Talion комментирует...

собирал по инструкции. после установки "Waiting for root file system". к новому ядру модули автоматом прикуручиваются в пакет или оно старые использует? думаю в этом проблема, хотя вроде бы всё нужное сделал встроенным..

Talion комментирует...

Спасибо огромное

Анонимный комментирует...

Пасиб )))

dv комментирует...

Пишут, мля! Просто! xD

debian-dv:/usr/src/linux# cp /boot/config-2.6.18-6-686 /usr/src/linux/.config
debian-dv:/usr/src/linux# make menuconfig
scripts/Makefile.build:17: /usr/src/linux-headers-2.6.18-6-686/scripts/basic/Makefile: No such file or directory
make[1]: *** Нет правила для сборки цели `/usr/src/linux-headers-2.6.18-6-686/scripts/basic/Makefile'. Останов.
make: *** [scripts_basic] Ошибка 2


И нигде!!! Нигде не напишут как поправить!

Анонимный комментирует...

Если выдает "Waiting..." то попробуйте в fstab поменять букву диска, но только в одном месте. У меня получилось так hdf3 -> hdb3. Это в строке с kernel.

Анонимный комментирует...

dv, вы make menuconfig сделайте пожалуйста из каталога в который вы исходники ядра распаковали

Анонимный комментирует...

спасибо за очень понятную инструкцию.
у меня вопрос , точнее 2

- если мы скопируем текущий конфиг в каталог c новым ядром /usr/src/linux , то каким образом будут учтены новые фичи, которые появились в НОВОМ ядре ? это для ситуации когда мы хотим установить новую версию ядра.

- а как установить пакет /usr/src/linux-kbuild-2.6.27 к примеру ?

у меня вот такая ошибка http://paste.org.ru/?fbdrrk

отсутствующий файл я так понимаю модно найти в /usr/src/linux-kbuild-2.6.27 а его меня нет для моего ядра.

и в репо дебиана этого пакета тоже еще нет

Анонимный комментирует...

А вот кто объяснит для чего fakeroot нужен?

PAVka комментирует...

собираю по этой инструкции уже 3е ядро , вроде пока норм

---
поправьте
# make-kpkg clean
# fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers

две разные комманды и вводятся отдельно

Анонимный комментирует...

2PAVka

спасибо! А то у меня не работало, не мог понять почему :)

Анонимный комментирует...

?
> 2PAVka
сидишь по root и запускаешь так опрометчиво комманды ? :(

в общем у меня не лучше - initrd не собирается... проблемы с .config
так что всем - будте аккуратнее при настройки

Анонимный комментирует...

Не могу понять что делать с этими двумя строчками
Сделал все по инструкции а на эти строчки пишет какую то ошибку показать не могу иероглифы :)

dpkg -i linux-image-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb
dpkg -i linux-headers-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb