Все буде Україна!

Як самостійно зібрати ядро Linux з нуля

  Юрій  | 

  Оновл. 10 Лип 2022  | 

 63

Ядро Linux є основою дистрибутивів Linux. Воно пов’язує апаратне та програмне забезпечення комп’ютера, а також відповідає за розподіл доступних ресурсів.

Якщо ви хочете вимкнути кілька опцій чи драйверів або спробувати експериментальні виправлення, вам необхідно буде зібрати ядро вручну. У цій статті ви дізнаєтеся, як з нуля самостійно скомпілювати та встановити ядро Linux.

Збірка ядра Linux

Процес збірки ядра Linux складається із семи простих кроків. Однак для виконання цієї процедури вам знадобиться певна кількість часу (залежить від характеристик вашого комп’ютера).

Примітка: Для збірки ядра Linux я виділив наступні ресурси:

   віртуальна машина — VMware Workstation 15 Pro (15.5.6);

   дистрибутив — Debian Linux (гілка Testing);

   ресурси — 2 ядра CPU (Ryzen 5 1600 AF), 2GB RAM, HDD;

   час компіляції — 3+ години.

Після цього я спробував зібрати ядро ще раз, перенісши образ віртуальної машини на NVMe SSD A-Data XPG SX8200 Pro (1TB), а також збільшивши кількість доступних для віртуальної машини ядер CPU до 6, а RAM — до 4GB. У такому варіанті час компіляції становив близько 1.5 години.

Крок №1: Завантаження вихідного коду

Відкрийте сайт kernel.org та знайдіть архів з вихідними кодами найсвіжішої версії ядра (Latest Release).

Примітка: Не лякайтеся, якщо версія ядра на сайті kernel.org не збігається з тією, яку я використав на цьому уроці. Всі розглянуті кроки/команди робочі, просто вам доведеться замінити цифри у версії ядра на свої.

Потім відкрийте термінал і за допомогою команди wget скачайте архів з вихідним кодом ядра Linux:

$ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.12.10.tar.xz

Крок №2: Розпакування архіву з вихідним кодом

Розпакуємо архів, застосувавши команду tar:

$ tar xvf linux-5.12.10.tar.xz

Крок №3: Встановлення необхідних пакетів

Нам будуть потрібні додаткові утиліти, за допомогою яких ми виконаємо компіляцію та встановлення ядра. Для цього виконайте наступну команду:

Користувачам Debian/Ubuntu/Linux Mint:

$ sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison

Дана команда встановить наступні пакети:

Пакет Опис
git Утиліта, яка допомагає відстежувати зміни у файлах вихідного коду. А в разі будь-якої помилки ці зміни можна буде відмінити.
fakeroot Дозволяє запускати команду в середовищі, що імітує привілеї root.
build-essential Набір різних утиліт для компіляції програм (компілятори gcc, g++ та ін.).
ncurses-dev Бібліотека, що надає API для програмування текстових терміналів.
xz-utils Утиліта для роботи з архівами в .xz-форматі.
libssl-dev Бібліотека для розробки та підтримки протоколів шифрування SSL та TLS.
bc (Basic Calculator) Інтерактивний інтерпретатор, що дозволяє виконувати скрипти з різними математичними виразами.
flex (Fast Lexical Analyzer Generator) Утиліта генерації програм, які можуть розпізнавати шаблони в тексті.
libelf-dev Бібліотека, що використовується для роботи з ELF-файлами (виконувані файли, файли об’єктного коду і дампи ядра).
bison Створює із набору правил програму аналізу структури текстових файлів.

Користувачам CentOS/RHEL/Scientific Linux:

$ sudo yum group install "Development Tools"

або

$ sudo yum groupinstall "Development Tools"

Також необхідно встановити додаткові пакети:

$ sudo yum install ncurses-devel bison flex elfutils-libelf-devel openssl-devel

Користувачам Fedora:

$ sudo dnf group install "Development Tools"
$ sudo dnf install ncurses-devel bison flex elfutils-libelf-devel openssl-devel

Крок №4: Конфігурування ядра

Вихідний код ядра Linux містить стандартний файл конфігурації з набором різних налаштувань. Однак ви можете змінити його відповідно до ваших потреб.

Для цього перейдіть за допомогою команди cd в каталог linux-5.12.10:

$ cd linux-5.12.10

Скопіюйте існуючий файл конфігурації за допомогою команди cp:

$ sudo cp -v /boot/config-$(uname -r) .config

Щоб внести зміни в файл конфігурації, виконайте команду make:

$ make menuconfig

Ця команда запускає кілька сценаріїв, які далі відкриють перед вами меню конфігурації:

Меню конфігурації включає такі параметри, як:

   Firmware Drivers — налаштування прошивки/драйверів для різних пристроїв;

   Virtualization — налаштування віртуалізації;

   File systems — налаштування різних файлових систем;

   та ін.

Для навігації по меню використовуються стрілочки на клавіатурі. Пункт < Help > допоможе вам дізнатися більше про різні параметри. Коли ви закінчите вносити зміни, виберіть < Save >, а потім вийдіть з меню за допомогою < Exit >.

Примітка: Зміна налаштувань деяких параметрів може призвести до того, що у новому ядрі не буде підтримки життєво важливих для системи функцій. Якщо ви не впевнені, що потрібно змінити, залиште без змін задані за замовчуванням налаштування.

Примітка: Якщо ви використовували варіант з копіюванням файлу конфігурації, то перед переходом до наступного кроку відкрийте цей файл і перевірте, що параметр CONFIG_SYSTEM_TRUSTED_KEYS у вас визначений так само, як вказано на наступному скріншоті:

В протилежному випадку ви можете отримати помилку:

make[4]: *** No rule to make target 'debian/certs/test-signing-certs.pem', needed by 'certs/x509_certificate_list'. Stop.
make[4]: *** Waiting for unfinished jobs....

Крок №5: Збірка ядра

Для старту збірки ядра виконайте наступну команду:

$ make

Процес збірки та компіляції ядра Linux займає трохи часу.

Під час цього процесу в терміналі перераховуватимуться усі вибрані компоненти ядра Linux: компонент управління пам’яттю, компонент управління процесами, драйвери апаратних пристроїв, драйвери файлових систем, драйвери мережевих карт та ін.

Потім потрібно буде встановити модулі за допомогою наступної команди:

$ sudo make modules_install

Залишилося виконати встановлення нового ядра. Для цього потрібно:

$ sudo make install

Крок №6: Оновлення завантажувача

Завантажувач GRUB — це перша програма, яка запускається при включенні системи.

Користувачам Debian/Ubuntu/Linux Mint:

Команда make install автоматично оновить завантажувач.

Для того, щоб оновити завантажувач вручну, вам необхідно спочатку оновити initramfs до нової версії ядра:

$ sudo update-initramfs -c -k 5.12.10

Потім оновіть завантажувач GRUB за допомогою наступної команди:

$ sudo update-grub2

Користувачам CentOS/RHEL/Scientific Linux :

$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
$ sudo grubby --set-default /boot/vmlinuz-5.6.9

Ви можете підтвердити деталі за допомогою наступних команд:

grubby --info=ALL | more
grubby --default-index
grubby --default-kernel

Крок №7: Перезавантаження системи

Після виконання вищезазначених дій перезавантажте комп’ютер. Коли система завантажиться, перевірте поточну версію ядра за допомогою наступної команди:

$ uname -r

Як бачите, у системі встановлено зібране нами ядро Linux-5.12.10.

Оцінити статтю:

1 Зірка2 Зірки3 Зірки4 Зірки5 Зірок (Немає Оцінок)
Loading...

Залишити відповідь

Ваш E-mail не буде опублікований. Обов'язкові поля відмічені *