Сборка мини-ядра, и с чем это едят.

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

Мини-ядро - Это Linux ядро собранное с минимальным количеством модулей/драйверов необходимых для работоспособности вашего железа.

Плюсы: Значительное сокращение времени на сборку ядра, уменьшение размера ядра, повышение производительности.

Минусы: Невозможность использования нового оборудования или портов без повторной пересборки ядра.

Чтобы собрать мини-ядро, нам нужно:

Установить modprobed-db по аналогии с другими AUR пакетами.

После установки выполнить::

systemctl --user enable --now modprobed-db.service # Это демон для индексирования активно используемых системой модулей ядра
sudo modprobed-db recall # Сделает дамп используемых системой модулей ядра.

Далее, активно используем всю периферию и железки, что у вас есть пока не соберется достаточное количество модулей (Примерно 2-3 дня активного пользования системой).

После того как все приготовления сделаны, просто собираем ядро как было указано выше, но перед сборкой (makepkg -si) нужно отредактировать PKGBUILD::

nano PKGBUILD

И меняем значение этой строки (работает почти для любых ядер): _localmodcfg=y

Все, теперь собираем мини-ядро по аналогии с обычным.

P.S. Если при сборке образов уже скомпилированного ядра выдаст ошибку с указанием на отсутствующие модули, что-то в формате: db_xxx, bd_xxx - просто пропишите их в ручную::

sudo nano ~/.config/modprobed.db

Затем выполните::

sudo modprobed-db store
sudo modprobed-db recall

И снова пересоберите ядро.

Видео версия

https://www.youtube.com/watch?v=8GRNN94afyg

Возможные часто встречаемые проблемы после установки мини-ядра

П: Система не загружается дальше rootfs (частая проблема).

Р: Обычно это означает, что какие-то системно-важные модули не были "подхвачены" modprobed-db. Почти всегда дело заключается в модулях на поддержку SATA/SCSI, либо ATA и модулей Файловых систем.

Вот список модулей, из-за отсутствия которых может не грузиться система:

  • scsi_mod

  • sd_mod

  • libahci

  • libata

  • lzo_rle

  • efi_pstore

  • evdev

  • ext4

  • btrfs

  • ahci

  • autofs4

  • fuse

  • dm_cache

  • dm_cache_smq

  • dm_mirror

  • dm_mod

  • dm_snapshot

  • dm_thin_pool

Чтобы это исправить просто добавьте эти модули вручную, т.е. отредактировав файл по пути sudo nano ~/.config/modprobed.db. Затем снова пересоберите мини-ядро как это показано в предыдущем разделе, после пересборки мини-ядро должно загрузиться.

П: После установки мини-ядра отсутствует интернет-подключение.

Р: Обычно это вызвано отсутствием модулей драйвера для сетевой карты, либо отсутствием важных системных модулей для корректной работы интернет подключения. Вот список модулей, из-за которых возможно не работает сеть:

  • 8021q

  • af_packet

  • af_alg

  • alx

  • ecdh_generic

  • garp

  • libphy

  • r8169

  • rc_core

  • realtek

  • sch_fq_codel

  • llc

Так же, как и в случае с прошлой проблемой, просто пропишите эти модули в ручную, т.е. отредактируйте sudo nano ~/.config/modprobed.db. Обратите внимание, что модуль драйвера для сетевой карты у каждого может быть разный, и перед тем как прописать какой-либо модуль драйвера, лучше посмотреть в рабочей системе (lspci -v) какой именно нужен вашей сетевой карте, и прописать его. После этого, в очередной раз, пересоберите мини-ядро.