Розділ 9. Debian і ядро

9.1 Чи можу я встановити та скомпілювати ядро без специфічних для Debian вдосконалень?

Так.

Є лише одна поширена пастка: C-бібліотеки Debian компонуються з найновішими стабільними версіями заголовків ядра. Якщо у вас виникне потреба скомпілювати програму з новішими заголовками, вам буде потрібно або оновити пакунок, що містить заголовки (libc6-dev), або використовувати нові заголовки з розпакованого найновішого ядра. Тому, якщо джерельні коди ядра розташовані в /usr/src/linux, то ви повинні додати ланцюжок -I/usr/src/linux/include/ до вашого командного рядка під час компіляції.

Які інструменти пропонує Debian для компонування нестандартних ядер?

Користувачі, котрі хочуть (або повинні) компонувати нестандартні ядра, можуть завантажити пакунок kernel-package. Він містить сценарій формування пакунку з ядром та забезпечує можливість створити Debian-пакунок kernel-image простим запуском команди

make-kpkg kernel_image

у верхньому каталозі джерельних кодів ядра. Довідка доступна після введення команди

make-kpkg --help

та на сторінці підручника make-kpkg(8).

Користувачі повинні окремо завантажити джерельні коди найсвіжішого ядра (або іншого, за їхнім вибором) з їхнього улюбленого сайту, якщо пакунок kernel-source-version чомусь недоступний (де "version" означає версію ядра).

Детальні інструкції по використанню пакунку kernel-package подано у файлі /usr/share/doc/kernel-package/README.gz. Якщо коротко, то вам потрібно:

  • Розпакувати джерельні коди ядра та перейти у новостворений каталог.
  • Налаштувати конфігурацію ядра за допомогою однієї з команд:
    • make config (для чисто текстового інтерфейсу "один-рядок-за-раз").
    • make menuconfig (для псевдографічного інтерфейсу, що базується на бібліотеці ncurses). Зауважте, що при цьому у вас має бути встановлений пакунок libncurses5-dev.
    • make xconfig (для інтерфейсу X11). Ця опція вимагає правильно встановлених пакунків X та Tcl/Tk.

Будь-який з цих кроків генерує файл .config у верхньому каталозі джерельних кодів ядра.

  • Виконати команду: make-kpkg -rev Custom.N kernel_image, де N це номер перегляду, що задається користувачем. Цим буде сформовано новий архів Debian з версією перегляду Custom.1, тобто, kernel-image-2.2.14_Custom.1_i386.deb для ядра 2.2.14.
  • Встановити створений пакунок
    • Запустити dpkg --install /usr/src/kernel-image-VVV_Custom.N.deb щоб встановити ядро. Встановлювальний сценарій:
      • запустить завантажувач LILO (якщо він встановлений),
      • встановить нестандартне ядро в /boot/vmlinuz_VVV-Custom.N, та створить необхідні символічні відсилачі до попередніх версій ядра.
      • запитає користувача, чи створювати завантажувальну дискету. Ця дискета міститиме лише ядро (дивись параграф 9.3).
    • Щоб використати інший завантажувач, наприклад grub чи loadlin, скопіюйте цей образ в інше місце (в /boot/grub або розділ MS-DOS).

Як мені зробити нестандартну завантажувальну дискету?

В розв'язанні цієї задачі вам дуже допоможе пакунок boot-floppies, що знаходиться в секції admin FTP-архіву Debian. Сценарії оболонки, що знаходяться у цьому пакунку, формують завантажувальні дискети у форматі SYSLINUX. Це дискети, відформатовані під MS-DOS, чиї завантажувальні сектори були модифіковані таким чином, що вони можуть вантажити Linux (чи будь-яку іншу операційну систему, що описана у файлі syslinux.cfg). Інші сценарії в цьому пакунку створюють відновлювальні диски, або навіть можуть перестворювати базові.

Додаткову інформацію ви можете знайти у файлі /usr/doc/boot-floppies/README після того, як встановите пакунок boot-floppies.

Які особливі умови пропонує Debian для роботи з модулями ядра?

Пакунок modconf пропонує сценарій (/usr/sbin/modconf) котрий може використовуватись для налагодження конфігурації модулів. Цей сценарій пропонує меню-подібний інтерфейс, повідомляючи користувача про деталі драйверів пристроїв, завантажених у системі. Відповіді користувача використовуються для налаштування файлу /etc/modules.conf (в ньому перелічені псевдоніми та інші аргументи, що повинні використовуватись разом з різноманітними модулями) через файли у /etc/modutils/ та /etc/modules/ (де перераховуються модулі, що мають завантажитись при ввімкненні системи).

Пакунок modconf, як і (нові) файли Configure.help, котрі зараз доступні для підтримання конструювання власних ядер, поставляється з набором файлів довідки (в /usr/lib/modules_help), де подано детальну інформацію про аргументи, котрі можна передати будь-якому з модулів.

Чи можу я безпечно видалити старий пакунок ядра, і якщо можу, то як?

Так. Сценарій kernel-image-NNN.prerm перевіряє, чи ядро, котре у вас зараз запущено, не є тим самим, яке ви збираєтесь видалити і пробує видалити вказане ядро. Таким чином ви можете видалити небажані пакунки образів ядра за допомогою такої команди:

dpkg --purge --force-remove-essential kernel-image-NNN

("NNN", звісно, потрібно замінити версією та номером перегляду вашого ядра)