Мінімальні initramfs

У цій статті показано, як створити тонкий, мінімальний initramfs для системи з певною, відомою та статичною конфігурацією обладнання. Процедура викладена в статті "Оптимізація завантаження за допомогою mkinitcpio" від Falconindy (Dave Reisner).

archwiki

Зміст

  • 1 Вимога Udev
  • 2 Редагування попередньо встановлених файлів
  • 3 Пошук необхідних модулів
  • 4 Початкове редагування mkinitcpio.conf
  • 5 Початковий тест
  • 6 Сортування модулів
    • 6.1 Модулі файлової системи
    • 6.2 Модулі запам'ятовуючих пристроїв
    • 6.3 Клавіатурні модулі
  • 7 Завершення

Вимога Udev

Великою перевагою створення власних зображень initramfs є те, що ви можете усунути udev. Цей гачок сам по собі відповідає за незначний розмір (

700-800 КіБ з LZ4 та LZOP, менше з іншими алгоритмами) на зображенні initramfs. Не тільки більший розмір призведе до довших завантажень (більше даних для декомпресії), але і сама ініціалізація udev також займе додатковий час. Однак деякі речі вимагають udev . Це включає вирішення ідентифікаторів UUID, LABEL, PARTUUID та PARTLABEL (гачок обходу без udev) та складання пристроїв LVM та mdadm, які містять кореневий розділ. Якщо ви не впевнені, чи потрібен вам udev, продовжуйте вказівки на цій сторінці до #Initial test. Якщо не все працює без udev, увімкніть гачок і спробуйте ще раз.

Крім того, хоча більшість клавіатур (AT, PS/2, USB) не вимагають використання гачка udev, пристрої Logitech USB, які використовують уніфікований приймач Logitech. На цьому етапі ви можете або включити udev у всі зображення, або покластися на резервне зображення, яке це робить.

Якщо вам потрібен udev, ваші зусилля щодо мінімізації, швидше за все, будуть марними. Можливо, ви все ще зможете зменшити розмір зображення на

600 КіБ, але час завантаження істотно не покращиться. Продовження цього сценарію все ще може бути вартим досвіду навчання.

Редагування попередньо встановлених файлів

У підручнику Фальконіді він редагує /etc/mkinitcpio.conf та запускає mkinitcpio -g, щоб створити тестове зображення initramfs, залишаючи відомі хороші зображення initramfs в системі недоторканими. Однак якщо після цього ви сліпо запустите mkinitcpio -P, навіть запасне зображення буде видалено.

Більш безпечний спосіб підготуватися до створення файлів initramfs у свої руки - це змінити файли .preset у /etc/mkinitcpio.d. Наступний приклад конфігурації замінить за замовчуванням мінімальне зображення initramfs і створить нове звичайне зображення, яке побудовано The Arch Way. Якщо щось піде не так, ви можете покластися на звичайні або резервні зображення. Закінчивши, ви можете скинути з конфігурації рядки normal_ * і видалити файли initramfs-linux * -normal.img.

Пошук необхідних модулів

Найшвидший спосіб дізнатись, які модулі вам потрібні, - це перезавантажити систему із запасним зображенням initramfs та додати break = postmount до параметрів ядра у вашому завантажувачі, щоб ви потрапили до командного рядка після монтажу кореневої файлової системи.

Після перезавантаження системи виконайте таку команду, щоб побачити, які модулі вам потрібні:

Запишіть завантажені модулі та введіть exit, щоб продовжити завантаження.

Або встановіть пакет hwdetect, щоб допомогти визначити необхідні модулі. Хоча він не підтримується, він може надати цінну інформацію. Також див. Модулі ядра, щоб розпочати роботу із власними інструментами.

Початкове редагування mkinitcpio.conf

Відредагуйте /etc/mkinitcpio.conf та змініть рядок MODULES =. Варто зазначити, що /etc/mkinitcpio.conf є джерелом, тому ви можете побудувати рядок MODULES як змінну в скрипті bash.

Додайте всі свої модулі до останнього різного рядка. Під час перебору модулів ви можете розмістити їх у відповідному рядку.

Вам також знадобляться двійкові файли для перевірки файлової системи на кореневому пристрої та будь-які інші точки кріплення в/etc/fstab, які було встановлено для цього.

  • Для додаткових [2 | 3 | 4] пристроїв:
  • Для розділів vfat (завантаження UEFI):
  • Для однодискового пристрою btrfs:
  • Для багатодискового пристрою btrfs:
  • Для пристроїв xfs

Початковий тест

Відредагуйте /etc/mkinitcpio.conf та запустіть mkinitcpio -P, щоб відновити всі ваші зображення initramfs. Потім перезавантажте.

Перше завантаження має бути успішним якщо вам не потрібен udev . Якщо щось не працює (наприклад, Arch не може знайти ваш кореневий розділ або клавіатура не працює), вам потрібно буде повернутися назад і видалити udev з параметра -S у рядку default_options і спробувати знову. Якщо вам потрібен udev, майте на увазі, що ви не побачите значного покращення часу завантаження, а продовження роботи корисне лише для досвіду навчання.

Сортування модулів

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