Як зібрати нове ядро ​​linux @ debuntarium

У кожному дистрибутиві є своя специфіка збірки ядра і це 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.

Схожі статті