Первый ответ 'Почему 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.