<!-- Subversion revision of original English document "3743" -->
<chapt id="kernel">Debian і ядро

<sect id="non-debian-kernel">Чи можу я встановити та скомпілювати ядро без специфічних для Debian вдосконалень?

<p>Так.

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

<sect id="customkernel">Які інструменти пропонує Debian для компонування нестандартних ядер?

<p>Користувачі, котрі хочуть (або повинні) збирати нестандартні ядра, можуть 
завантажити пакунок <package/kernel-package/. Він містить скрипт для створення
пакунка з ядром та забезпечує можливість створити Debian-пакунок 
<package>kernel-image-<var>версія</var></package> простим запуском команди 
  <example>make-kpkg kernel_image</example>
у верхній теці джерельних кодів ядра. Довідка є доступною шляхом виконання команди 
  <example>make-kpkg --help</example>
та на сторінці підручника <manref name="make-kpkg" section="1">.

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

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

<list>
  <item>Розпакувати джерельні коди ядра та перейти у новостворену теку.
  <item>Налаштувати конфігурацію ядра за допомогою однієї з команд: 
    <list>
      <item><tt>make config</tt>  (для чисто текстового інтерфейсу „один-рядок-за-раз“).
      <item><tt>make menuconfig</tt>  (для псевдографічного інтерфейсу, що базується на бібліотеці ncurses).
        Зауважте, що при цьому у вас має бути встановлений пакунок <package/libncurses5-dev/.
      <item><tt>make xconfig</tt>  (для інтерфейсу X11).
        Ця опція відповідно вимагає встановлених пакунків X, а також Tcl/Tk.
    </list>
    Будь-який з цих кроків створює новий файл <tt>.config</tt> у верхній теці джерельних кодів ядра.
    <!-- FIXME: make-kpkg and dpkg require both root permission!!? -->
  <item>Виконати команду: <tt>make-kpkg -rev Custom.<var>N</var> kernel_image</tt>, 
    де N&nbsp;— це номер редакції, що вказується користувачем. Цим буде сформовано новий 
    архівний файл Debian з версією перегляду Custom.<var>N</var>, наприклад, 
    <file>kernel-image-2.2.14_Custom.1_i386.deb</file> для Linux-ядра 2.2.14 
    і архітектури i386. 

  <item>Встановити створений пакунок.
    <list>
    <!-- FIXME: or linux-image! -->
    <item>Запустити <tt>dpkg --install ../kernel-image-<var>VVV</var>_Custom.<var>N</var>_i386.deb</tt>,
    щоб встановити ядро. Встановлювальний сценарій: 
      <list>
	<!-- FIXME: really? -->  
        <item>при необхідності запустить завантажувач (grub, LILO чи якийсь інший),
	<!-- FIXME: for 2.6.16 there is no -Custom.N suffix! -->
        <item>встановить нестандартне ядро в <file>/boot/vmlinuz_<var>VVV</var>-Custom.<var>N</var></file>,
          та створить необхідні символічні відсилачі до попередніх версій ядра.
	<!-- FIXME: really? -->  
        <item>запитає користувача, чи створювати завантажувальну дискету. Ця дискета 
          міститиме лише ядро (див. <ref id="custombootdisk">). 
      </list>
    <item>Щоб використати другий завантажувач, <prgn/loadlin/, скопіюйте цей образ 
    в інше місце (наприклад, розділ <tt>MS-DOS</tt>). 
  </list>
</list>

<!-- TODO: check out a new source of details, this README isn't too useful,
I'm told (joy)
FIXME: completely out of date! -->
<sect id="custombootdisk">Як мені створити нестандартну завантажувальну дискету?

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

<p>Більше інформації ви зможете знайти у файлі 
<file>/usr/doc/boot-floppies/README</file> після того, як встановите 
пакунок <package/boot-floppies/. 

<sect id="modules">Які особливі можливості пропонує Debian для роботи з модулями ядра?

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

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

<sect id="removeoldkernel">Чи можу я безпечно видалити старий пакунок ядра, 
  і якщо можу, то як?

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

<example>dpkg --purge --force-remove-essential kernel-image-<var>NNN</var></example>

(NNN, звісно, потрібно замінити версією та номером редакції вашого ядра).
