У кожному дистрибутиві є своя специфіка збірки ядра і це HowTo орієнтоване саме на те, як це зробити в Debian Etch. Так само розкривається питання, як накласти той чи інший патч на ядро, коли необхідна підтримка певної функціональності або нового обладнання у Вашій системі. HowTo призначене в першу чергу на більш підготовлених користувачів і немає ніяких гарантій, що цей спосіб буде працювати так, як треба і всі описані дії і відповідальність лягають на Вас.
Буде описано два способи збирання ядра. Першим буде описаний варіант збірки .deb пакетів, які можуть бути встановлені у Вашій або іншій системі. Другий метод, так званий "traditional" way :-)
Спосіб перший. Збірка ядра в .deb пакети.
Установка необхідних пакетів для компіляції ядра.
Для початку відновимо списки пакетів:
Встановимо потрібні нам пакети:
# Apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential
Викачуємо вихідні ядра.
Переходимо в каталог / usr / src, йдемо на www.kernel.org і вибираємо потрібну версію ядра. В даному випадку буде розглянута версія linux-2.6.23.1.tar.bz2. викачуємо:
Розпакуємо вихідні коди і створимо символьне посилання:
# Tar xjf linux-2.6.23.1.tar.bz2
# Ln -sf linux-2.6.23.1 linux
Опціонально і без необхідності не робіть цього!
Іноді потрібні драйвера або кошти, які не підтримуються в наявному ядрі, наприклад технологія віртуалізації чи інша інша специфіка, якої немає в поточному релізі. У будь-якому випадку це виправляється накладенням так званих патчів (якщо такі є).
Отже, припустимо ви завантажили необхідний патч (для прикладу назвемо patch.bz2) в / usr / src. Застосуємо скачаний патч на наші вихідні (Ви повинні бути всі ще в каталозі / usr / src / linux):
# Bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run
# Bzip2 -dc /usr/src/patch.bz2 | patch -p1
Перша команда - лише тест і ніякі зміни не будуть застосовані до ісходникам. Якщо після першої команди не було видано ніяких помилок, можна виконати другу команду для застосування патча. Ні в якому разі не виконуйте другу команду, якщо після першої були видані помилки!
Таким чином Ви можете накладати патчі на вихідні ядра. Наприклад, є деякі особливості, які доступні тільки в 2.6.23.8 ядрі, а вихідні не містили необхідної функціональності, але випущений патч patch-2.6.23.8.bz2. Ви можете застосувати цей патч до ісходникам ядра 2.6.23, але не 2.6.23.1 або 2.6.23.3 і т.д.
Пред'ісправленія (препатчі) - еквівалентні альфа релізів; патчі повинні бути застосовані до ісходникам повного попереднього релізу з 3-х значной версією (наприклад, патч 2.6.12-rc4 може бути застосований до ісходникам версії 2.6.11, але не до версії 2.6.11.10.)
Застосовуємо патч patch-2.6.23.8.bz2 до ядра 2.6.23:
# Bzip2 -dc /usr/src/patch-2.6.23.8.bz2 | patch -p1 --dry-run
# Bzip2 -dc /usr/src/patch-2.6.23.8.bz2 | patch -p1
Можна завантажити файлик з розширенням patch в / usr / src / linux і застосувати:
$ Cat file.patch | patch -p1
Непоганою ідеєю буде використання існуючого конфігураційного файлу працюючого ядра і для нового. Тому копіюємо існуючу конфігурацію в / usr / src / linux:
Далі подаємо команду:
після якої завантажиться графічне меню конфігурації ядра. Вибираємо в меню конфігуратора пункт "Load an Alternate Configuration File" і натискаємо "Оk". Потім (якщо потрібно) зробіть необхідні зміни в конфігурації ядра переміщаючись по меню (подробиці конфігурації ядра можна знайти в www.google.com :-)). Коли закінчите і натиснете "Exit", буде поставлено питання "Do you wish to save your new kernel configuration?", Відповідаємо ствердно "Yes".
Збірка ядра виконується всього в дві команди:
Після --append-to-version =, можна написати будь-яку назву, яке Вам завгодно, але воно повинно починатися зі знака мінус (-) і не мати пробілів.
Процес компіляції і збірки .deb пакетів може зайнятий досить тривалий час. Все буде залежати від конфігурації ядра і можливостей Вашого процесора.
Установка нового ядра.
Коли вдало завершиться складання ядра, в каталозі / usr / src будуть створені два .deb пакета:
linux-image-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb - власне саме актуальноеядро і
linux-headers-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb - заголовки ядра, необхідні для складання інших модулів (наприклад при складанні модулів драйвера nVidia).
(Ці пакети тепер можуть бути встановлені на іншій системі і збирати їх заново вже не буде необхідності.)
Все, інсталяція завершена, меню завантажувача, установка нового рамдіска і ядра будуть зроблені автоматично. Залишається тільки перезавантажитися:
Спосіб другий. "Traditional" way :-)
Виконуємо всі пункти, описані вище ДО пункту "Компіляція ядра".
Далі, традиційний спосіб:
Як завжди, збірка може зайняти тривалий час, залежне від конфігурації ядра і можливостей процесора.
Ядро зібрано і встановлено, але ще тепер необхідно створити рамдіск (без якого ядро просто не завантажиться) і необхідно оновити завантажувач GRUB. Для цього виконаємо наступне:
Оновимо легко і безболісно завантажувач:
Все, завантажувач і нове ядро готові, залишається тільки перезавантажитися:
Якщо після перезавантаження, вибране вами нове ядро не завантажується, перезавантажитеся і виберіть Ваше попереднє ядро і можна спробувати виконати весь процес заново, щоб зібрати рабочееядро. Не забувайте в такому випадку видалити рядки неробочого ядра в /boot/grub/menu.lst.