mini-kernel.rst 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. .. ARU (c) 2018 - 2022, Pavel Priluckiy, Vasiliy Stelmachenok and contributors
  2. ARU is licensed under a
  3. Creative Commons Attribution-ShareAlike 4.0 International License.
  4. You should have received a copy of the license along with this
  5. work. If not, see <https://creativecommons.org/licenses/by-sa/4.0/>.
  6. .. index:: mini-kernel, modprobed-db, kernel, modules
  7. .. _mini-kernel:
  8. ***********************************
  9. Сборка мини-ядра, и с чем это едят.
  10. ***********************************
  11. Ядра, что мы скомпилировали выше уже дают существенное повышение
  12. производительности системы, однако мы еще выжали не все соки. По умолчанию ядра
  13. собираются для универсального применения на разном оборудовании, т.е. с
  14. наличием различных модулей и драйверов для всякого рода периферии и железа,
  15. которого у вас могло никогда и не быть.
  16. *Мини-ядро* - Это Linux ядро собранное с минимальным количеством
  17. модулей/драйверов необходимых для работоспособности вашего железа.
  18. Плюсы: `Значительное сокращение времени на сборку ядра
  19. <https://wiki.archlinux.org/index.php/Modprobed-db#Benefits_of_modprobed-db_with_"make_localmodconfig"_in_custom_kernels>`_,
  20. уменьшение размера ядра, повышение производительности.
  21. Минусы: Невозможность использования нового оборудования или портов без
  22. повторной пересборки ядра.
  23. Чтобы собрать мини-ядро, нам нужно:
  24. Установить `modprobed-db <https://aur.archlinux.org/packages/modprobed-db/>`_
  25. по аналогии с другими AUR пакетами.
  26. После установки выполнить::
  27. systemctl --user enable --now modprobed-db.service # Это демон для индексирования активно используемых системой модулей ядра
  28. sudo modprobed-db recall # Сделает дамп используемых системой модулей ядра.
  29. Далее, активно используем всю периферию и железки, что у вас есть пока не
  30. соберется достаточное количество модулей (Примерно 2-3 дня активного
  31. пользования системой).
  32. После того как все приготовления сделаны, просто собираем ядро как было указано
  33. выше, но перед сборкой (*makepkg -si*) нужно отредактировать PKGBUILD::
  34. nano PKGBUILD
  35. И меняем значение этой строки (работает почти для любых ядер): *_localmodcfg=y*
  36. Все, теперь собираем мини-ядро по аналогии с обычным.
  37. *P.S.* Если при сборке образов уже скомпилированного ядра выдает ошибку с
  38. указанием на отсутствующие модули, что-то в формате: db_xxx, bd_xxx - просто
  39. пропишите их в ручную::
  40. sudo nano ~/.config/modprobed.db
  41. Затем выполните::
  42. sudo modprobed-db store
  43. sudo modprobed-db recall
  44. И снова пересоберите ядро.
  45. .. index:: mini-kernel, problems, modules, modprobed-db
  46. .. _related-issues:
  47. ==============================================================
  48. Возможные часто встречаемые проблемы после установки мини-ядра
  49. ==============================================================
  50. **П:** Система не загружается дальше rootfs (частая проблема).
  51. **Р:** Обычно это означает, что какие-то системно-важные модули не были
  52. "подхвачены" modprobed-db. Почти всегда дело заключается в модулях на поддержку
  53. SATA/SCSI, либо ATA и модулей Файловых систем.
  54. Вот список модулей, из-за отсутствия которых может не грузиться система:
  55. - scsi_mod
  56. - sd_mod
  57. - libahci
  58. - libata
  59. - lzo_rle
  60. - efi_pstore
  61. - evdev
  62. - ext4
  63. - btrfs
  64. - ahci
  65. - autofs4
  66. - fuse
  67. - dm_cache
  68. - dm_cache_smq
  69. - dm_mirror
  70. - dm_mod
  71. - dm_snapshot
  72. - dm_thin_pool
  73. Чтобы это исправить просто добавьте эти модули вручную, т.е. отредактировав
  74. файл по пути ``sudo nano ~/.config/modprobed.db``. Затем снова пересоберите
  75. мини-ядро как это показано в предыдущем разделе, после пересборки мини-ядро
  76. должно загрузиться.
  77. **П:** После установки мини-ядра отсутствует интернет-подключение.
  78. **Р1:** Обычно это вызвано отсутствием модулей драйвера для сетевой карты, либо
  79. отсутствием важных системных модулей для корректной работы интернет
  80. подключения. Вот список модулей, из-за которых возможно не работает сеть:
  81. - 8021q
  82. - af_packet
  83. - af_alg
  84. - alx
  85. - ecdh_generic
  86. - garp
  87. - libphy
  88. - r8169
  89. - rc_core
  90. - realtek
  91. - sch_fq_codel
  92. - llc
  93. Так же, как и в случае с прошлой проблемой, просто пропишите эти модули в
  94. ручную, т.е. отредактируйте ``sudo nano ~/.config/modprobed.db``. Обратите
  95. внимание, что модуль драйвера для сетевой карты у каждого может быть разный, и
  96. перед тем как прописать какой-либо модуль драйвера, лучше посмотреть в рабочей
  97. системе (*lspci -v*) какой именно нужен вашей сетевой карте, и прописать его.
  98. После этого, в очередной раз, пересоберите мини-ядро.
  99. **Р2:** Если нет подключения, а вывод команды::
  100. journalctl -b | grep "NetworkManager"
  101. сообщает об ошибке *dhcp4* и *l2_packet_init*, то необходимо пересобрать мини-ядро, добавив параметр в *makenconfig*::
  102. [*] Networking support --->
  103. Networking options --->
  104. <*> Packet socket
  105. **П:** После перезагрузки драйвер NVIDIA загружается, но вместо него
  106. используется llvmpipe.
  107. **Р:** Укажите точный путь до модулей драйвера в ваших настройках Xorg, т.е.
  108. пропишите в */etc/X11/xorg.conf* следующее::
  109. Section "Files"
  110. ModulePath "/usr/lib/nvidia/xorg"
  111. ModulePath "/usr/lib/xorg/modules"
  112. EndSection
  113. Затем перезагрузитесь.
  114. **П:** Не монтируется раздел */boot*, однако можно зайти в систему введя пароль root::
  115. [FALIED] Failed to mount /boot
  116. [DEPEND] Dependency failed for Local File Systems.
  117. You are in emergency mode. After logging in, type "journalctl -xb" to view system logs, "systemctl reboot" to reboot, "systemctl default" or "exit" to boot into default mode
  118. Dlya prodolzheniya vvedite parol` root (Если установлен русский язык, либо что-то похожее про root)
  119. **Р:** Если для раздела используется файловая система FAT/VFAT, введя пароль root, необходимо ввести::
  120. dmesg | grep FAT
  121. Если в выводе будет::
  122. FAT-fs (sdx1): codepage cp437 not found
  123. То необходимо пересобрать мини-ядро, предварительно проверив наличие следующих параметров в *makenconfig*::
  124. File Systems --->
  125. Native language support --->
  126. <*> Codepage 437 (United States, Canada)
  127. <*> ASCII
  128. <*> NLS UTF-8
  129. Возможно также нужно будет добавить в той же вкладке::
  130. <*> NLS ISO 8859-1 (Latin 1; Western European Languages)
  131. Подробнее о `добавлении FAT в ядро <https://wiki.gentoo.org/wiki/FAT#Kernel>`_.