<?xml version='1.0' encoding='utf-8'?>
<!-- -*- DocBook -*- -->
<chapter id="kernel"><title>Debian і ядро</title>
<section id="non-debian-kernel"><title>Чи можу я встановити та скомпілювати ядро без специфічних для Debian вдосконалень?</title>
<para>
Так.
</para>
<para>
Є лише одна поширена пастка: C-бібліотеки
Debian компонуються з найновішими
<emphasis>стабільними</emphasis> версіями
заголовків <emphasis role="strong">ядра</emphasis>.  Якщо у
вас виникне потреба скомпілювати програму
з новішими заголовками, вам буде потрібно
або оновити пакунок, що містить заголовки
(<systemitem role="package">libc6-dev)</systemitem>, або
використовувати нові заголовки з
розпакованого найновішого ядра.  Тому, якщо
джерельні коди ядра розташовані в
<filename>/usr/src/linux</filename>, то ви повинні додати
параметр <literal>-I/usr/src/linux/include/</literal> до вашого
командного рядка під час компіляції.
</para>
</section>

<section id="customkernel"><title>Які інструменти пропонує Debian для компонування нестандартних ядер?</title>
<para>
Користувачі, котрі хочуть (або повинні)
збирати нестандартні ядра, можуть
завантажити пакунок <systemitem
role="package">kernel-package</systemitem>.  Він містить скрипт
для створення пакунка з ядром та
забезпечує можливість створити
Debian-пакунок <systemitem
role="package">kernel-image-<replaceable>версія</replaceable></systemitem>
простим запуском команди
</para>
<screen>
make-kpkg kernel_image
</screen>
<para>
у верхній теці джерельних кодів ядра.
Довідка є доступною шляхом виконання
команди
</para>
<screen>
make-kpkg --help
</screen>
<para>
та на сторінці підручника
<citerefentry><refentrytitle>make-kpkg</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
</para>
<para>
Користувачі повинні окремо завантажити
джерельні коди найсвіжішого ядра (або
іншого, за їхнім вибором) з їхнього
улюбленого сайту Linux-архіву, якщо пакунок
<systemitem
role="package">kernel-source-<replaceable>version</replaceable></systemitem>
чомусь недоступний (де <replaceable>version</replaceable>
означає версію ядра).
</para>
<para>
Детальні інструкції щодо використання
пакунку <systemitem role="package">kernel-package</systemitem>
подано у файлі
<filename>/usr/share/doc/kernel-package/README.gz</filename>.  Якщо
коротко, то вам потрібно:
</para>
<itemizedlist>
<listitem>
<para>
Розпакувати джерельні коди ядра та перейти
у новостворену теку.
</para>
</listitem>
<listitem>
<para>
Налаштувати конфігурацію ядра за
допомогою однієї з команд:
</para>
<itemizedlist>
<listitem>
<para>
<literal>make config</literal> (для чисто текстового
інтерфейсу „один-рядок-за-раз“).
</para>
</listitem>
<listitem>
<para>
<literal>make menuconfig</literal> (для псевдографічного
інтерфейсу, що базується на бібліотеці
ncurses).  Зауважте, що при цьому у вас має бути
встановлений пакунок <systemitem
role="package">libncurses5-dev</systemitem>.
</para>
</listitem>
<listitem>
<para>
<literal>make xconfig</literal> (для інтерфейсу X11).  Ця
опція відповідно вимагає встановлених
пакунків X, а також Tcl/Tk.
</para>
</listitem>
</itemizedlist>
<para>
Будь-який з цих кроків створює новий файл
<literal>.config</literal> у верхній теці джерельних
кодів ядра.
</para>
</listitem>
<listitem>
<para>
Виконати команду: <literal>make-kpkg -rev
Custom.<replaceable>N</replaceable> kernel_image</literal>, де N — це
номер редакції, що вказується
користувачем.  Цим буде сформовано новий
архівний файл Debian з версією перегляду
Custom.<replaceable>N</replaceable>, наприклад,
<filename>kernel-image-2.2.14_Custom.1_i386.deb</filename> для
Linux-ядра 2.2.14 і архітектури i386.
</para>
</listitem>
<listitem>
<para>
Встановити створений пакунок.
</para>
<itemizedlist>
<listitem>
<para>
Запустити <literal>dpkg --install
../kernel-image-<replaceable>VVV</replaceable>_Custom.<replaceable>N</replaceable>_i386.deb</literal>,
щоб встановити ядро.  Встановлювальний
сценарій:
</para>
<itemizedlist>
<listitem>
<para>
при необхідності запустить завантажувач
(grub, LILO чи якийсь інший),
</para>
</listitem>
<listitem>
<para>
встановить нестандартне ядро в
<filename>/boot/vmlinuz_<replaceable>VVV</replaceable>-Custom.<replaceable>N</replaceable></filename>,
та створить необхідні символічні
відсилачі до попередніх версій ядра.
</para>
</listitem>
<listitem>
<para>
запитає користувача, чи створювати
завантажувальну дискету.  Ця дискета
міститиме лише ядро (див.  <xref
linkend="custombootdisk"/>).
</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>
Щоб використати другий завантажувач,
<command>loadlin</command>, скопіюйте цей образ в інше
місце (наприклад, розділ <literal>MS-DOS</literal>).
</para>
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</section>

<section id="custombootdisk"><title>Як мені створити нестандартну завантажувальну дискету?</title>
<para>
В розв'язанні цієї задачі вам дуже допоможе
пакунок <systemitem role="package">boot-floppies</systemitem>, що
знаходиться в секції <literal>admin</literal>
FTP-архіву Debian.  Сценарії оболонки, що
знаходяться у цьому пакунку, формують
завантажувальні дискети у форматі
<literal>SYSLINUX</literal>.  Це дискети, відформатовані
під <literal>MS-DOS</literal>, чиї завантажувальні
сектори були модифіковані таким чином, що
вони можуть завантажити Linux (чи будь-яку
іншу операційну систему, що описана у файлі
<filename>syslinux.cfg</filename>).  Інші сценарії в цьому
пакунку створюють відновлювальні диски,
або навіть можуть перестворювати базові.
</para>
<para>
Більше інформації ви зможете знайти у
файлі <filename>/usr/doc/boot-floppies/README</filename> після
того, як встановите пакунок <systemitem
role="package">boot-floppies</systemitem>.
</para>
</section>

<section id="modules"><title>Які особливі можливості пропонує Debian для роботи з модулями ядра?</title>
<para>
Пакунок <systemitem role="package">modconf</systemitem>
забезпечує сценарій (<filename>/usr/sbin/modconf</filename>),
котрий може використовуватись для
налагодження конфігурації модулів.  Цей
сценарій пропонує меню-подібний інтерфейс,
запитуючи користувача про деталі
завантажуваних драйверів пристроїв у
системі.  Відповіді користувача
використовуються для налаштування файлу
<filename>/etc/modules.conf</filename> (в ньому перелічені
псевдоніми та інші аргументи, що повинні
використовуватись разом з різноманітними
модулями) через файли в <filename>/etc/modutils/</filename>
та <filename>/etc/modules/</filename> (де перераховуються
модулі, що мають завантажитись при
ввімкненні системи).
</para>
<para>
Пакунок <systemitem role="package">modconf</systemitem>, як і
(нові) файли Configure.help, котрі зараз доступні
для підтримки в конструюванні власних
ядер, поставляється з набором файлів
довідки (в <filename>/usr/lib/modules_help/</filename>), де
подано детальну інформацію про аргументи,
котрі можна передати будь-якому з модулів.
</para>
</section>

<section id="removeoldkernel"><title>Чи можу я безпечно видалити старий пакунок ядра, і якщо можу, то як?</title>
<para>
Так.  Скрипт
<command>kernel-image-<replaceable>NNN</replaceable>.prerm</command>
перевіряє, чи ядро, котре у вас зараз
запущено, не є тим самим, яке ви збираєтесь
видалити і намагається видалити вказане
ядро.  Таким чином ви можете видалити
небажані пакунки образів ядра за допомогою
такої команди:
</para>
<screen>
dpkg --purge --force-remove-essential kernel-image-<replaceable>NNN</replaceable>
</screen>
<para>
(NNN, звісно, потрібно замінити версією та
номером редакції вашого ядра).
</para>
</section>

</chapter>

