![Исправление ядра для возможности загрузки без initrd](https://rvso.com/image/89146/%D0%98%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D1%8F%D0%B4%D1%80%D0%B0%20%D0%B4%D0%BB%D1%8F%20%D0%B2%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8%20%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8%20%D0%B1%D0%B5%D0%B7%20initrd.png)
Первый ответ 'Почему Linux использует начальный RAM-диск при загрузке?' утверждает, что файловая система initrd/initial ram используется для предоставления драйверов для монтирования настоящей корневой файловой системы. Также говорится, что этовозможныйдля исправления этих драйверов в ядре, чтобы initrd
не требовалась начальная файловая система ram, но не дал объяснений, как это сделать. Как мне пропатчить ядро (последнюю версию), чтобы смонтировать файловую систему EXT4 в корне без помощи initrd
, и будет ли это решение поддерживать UUIDs
?
решение1
Вам не нужно ничего патчить. Вам просто нужно настроить и скомпилировать ядро самостоятельно. Это сложная задача, поэтому она не для новичков. Хитрость в том, чтобы настроить ядро для поддержки только вашего оборудования и скомпилировать все внутри ядра, а не как модуль (по крайней мере, драйверы, необходимые для загрузки: контроллер диска, файловая система, …).
Существует множество руководств по настройке и компиляции ядра.
- Гентуhttps://wiki.gentoo.org/wiki/Ядро/Конфигурация
- Аркаhttps://wiki.archlinux.org/index.php/Kernels/Традиционная_компиляция
- Убунтуhttps://help.ubuntu.com/community/Kernel/Compile
Так что просто наберите в Google "kernel compile {ваш дистрибутив}". Важно использовать правильный учебник для вашего дистрибутива. Дистрибутив, который вы используете, может ожидать, что некоторые функции будут доступны только в ядре "distro", а не в ядре "vanilla". Правильный учебник укажет вам на правильные источники.
Вы можете использовать UUID в /etc/fstab
GRUB, но не в нем после удаления initrd/initramfs.
Например, я использую Gentoo и никогда не использовал initrd/initramfs. Каждый раз, когда доступно новое ядро, я должен настроить и скомпилировать его самостоятельно. Я использую grub с root=/dev/sdb4
параметрами ядра, но в fstab я использую UUID.