Розділ 7. Ядро Лінукс в Дебіен
Дебіен має власний спосіб перекомпіляції ядра, котрий описаний у параграфі 2.7.
Перекомпіляція ядра
Якщо ви компілюєте найсвіжіше ядро, вам можуть знадобитись gcc, binutils, та modutils з нестабільної збірки. Гляньте /usr/share/doc/kernel-package/README.gz, особливо його верхню частину, за офіційною інформацією.
Що б там не казали, а компіляція ядра - це сладна тема, що може ввести в оману навіть досвідчених розробників:
Маной Срівастава (Manoj Srivastava) пише:
--initrd вимагає специфічної для Дебіен латки cramfs.
Герберт Ксу (Herbert Xu) пише:
Зовсім ні, все що вам потрібно для того, щоб використовувати файлову систему відмінну від CRAMFS - це задати MKIMAGE у файлі /etc/mkinitrd/mkinitrd.conf.
Будьте уважні і завжди звіряйтесь з /usr/share/doc/kernel-package/README.gz від Маноя та Кента. Переконайтесь, що ви використовуєте останню версію пакунка kernel-package якщо ви хочете скомпілювати останню версію ядра.
Для ядер, скомпільованих лише для однієї машини, initrd не потрібен. Я його використовую, оскільки я хочу, щоб моє ядро було таким самим, як те, котре пропонують пакунки kernel-image. Якщо ви використовуєте initrd, перечитайте mkinitrd(8) та mkinitrd.conf(5) і гляньте на http://bugs.debian.org/149236.
Стандартний спосіб для Дебіен
Перегляньте повідомлення про вади для kernel-package, gcc, binutils, та modutils. Якщо потрібно, використовуйте їх найсвіжіші версії.
Компіляція власного ядра з джерельних кодів під Дебіен вимагає особливої обережності. Користуйтесь --append_to_version з make-kpkg для компоновки кількох образів ядер.
# apt-get install debhelper modutils kernel-package libncurses5-dev
# apt-get install kernel-source-2.4.18 # візьміть найсвіжішу версію
# apt-get install fakeroot
# vi /etc/kernel-pkg.conf # введіть ім'я та електронну адресу
$ cd /usr/src # каталог джерельних кодів
$ tar --bzip2 -xvf kernel-source-2.4.18.tar.bz2
$ cd kernel-source-2.4.18 # підставте вашу версію
$ cp /boot/config-2.4.18-386 .config # зробити поточну конфігурацію типовою
$ make menuconfig # налаштуйте як вам подобається
$ make-kpkg clean # обов'язково! (man make-kpkg)
$ fakeroot make-kpkg --append_to_version -486 --initrd \
--revision=rev.01 kernel_image \
modules_image # modules_image для pcmcia-cs* та ін.
$ cd ..
# dpkg -i kernel-image*.deb pcmcia-cs*.deb # встановити; make-kpkg образ_ядра насправді
#виконує make oldconfig та make dep.
#Не вводьте --initrd якшо ви не користуєтесь initrd.
Якщо хтось не хоче використовувати модулі з pcmcia-cs чи pcmcia з джерельних кодів ядра, він повинен вибрати "General setup" —> "PCMCIA/CardBus support" ("Загальні налаштування" -> "Підтримка PCMCIA/CardBus") у діалозі menuconfig і забрати прапорець з пункту < > PCMCIA/CardBus support
.
На однопроцесорній машині задайте значення CONCURRENCY_LEVEL відповідно до kernel-pkg.conf(5).
Класичний спосіб
Звантажте найсвіжіші джерельні коди з:
Лінукс: http://www.kernel.org/
pcmcia-cs: http://pcmcia-cs.sourceforge.net/
або еквівалентні для Дебіен і зробіть наступне:
# cd /usr/src
# tar xfvz linux-whatever.tar.gz
# rm -rf linux
# ln -s linux-whatever linux
# tar xfvz pcmcia-cs-whatever.tar.gz
# ln -s pcmcia-cs-whatever pcmcia
# cd linux
# make menuconfig
... наконфігуруйте всякого ...
# make dep
# make bzImage
... відконфігуруйте lilo / grub ...
... перемістіть /usr/src/linux/arch/i386/boot/bzImage в каталог boot ...
... /sbin/lilo або що там роблять для grub
# make modules; make modules_install
# cd ../pcmcia
# make config
# make all
# make install
... додайте назви потрібних модулів до /etc/modules
# shutdown -r now
... перезавантажтесь у нове ядро ...
Заголовки ядра
Більшість звичайних програм не потребують заголовків ядра і в такому випадку їх (заголовки) можна просто викинути; з іншого боку якщо вам потрібно перекомпілювати якусь програму, вона потребуватиме заголовків, з котрими була скомпільована glibc, і котрі знаходяться в /usr/include/linux та /usr/include/asm в системі Дебіен.
Отож, не робіть симлінків на каталоги в /usr/src/linux з /usr/include/linux і /usr/include/asm, як це рекомендують деякі застарілі документи.
Якщо вам справді потрібні найсвіжіші заголовки ядра для якихось специфічних програм, відредагуйте їхні файли Makefile таким чином, щоб вони включали в себе шляхи до каталогів /каталог/з/свіжим/ядром/include/linux і /каталог/з/свіжим/ядром/include/asm.
Модульне ядро версій 2.4
На мою думку цей параграф перекладати недоцільно.