LINUX.ORG.RU

Ядро собрано с вкомпиленным модулем файловой системы, на которой корень, не модулем?

Если да, то неправильно указан root раздел в загрузчике.

AbbaT ()

Подскажите с чего начать?

С перечтения хандбука и достижения понимания что нужно для запуска Linux и монтирования корневой файловой системы?

Запуск ядра ты уже обеспечил.

Для монтирования корневой файловой системы нужно обеспечить, во-первых, чтобы ядро увидело накопитель (место расположения) с файловой системой.

А это значит, что в ядре должен быть драйвер для доступа к накопителю. Если это жёсткий диск подключенны к ATA контроллеру, то в зависимости от его режимое работы нужен либо AHCI драйвер либо другой драйвер SATA контроллера,в зависимости от режиме его работы, либо драйвер IDE (PATA) контроллера.

Далее нужна поддержка используемой таблицы разделов MBR / GPT или другой, в зависимости от схемы разбивки диска.

И напоследок нужен драйвер самой файловой системы.

В случае если ты не используешь initramfs всё это должно быть собрано монолитно в ядре.

Если используешь, то можно собрать модулями и поместить в initramfs.

Если ты собирал ядро уже несколько раз, то удостоверься, что файл с образом ядра соответствует версии ядра под которое ты собирал модули.

Смотри вывод команды ‘uname -a’ и modinfo файл_модуля.

Если ты используешь initramfs и в нём есть модули необходимые для загрузки, то удостоверься что модули в initramfs соответствуют ядру, то ты загружашь.

Сверяй время сборки ядра в выводе uname -a и modinfo.

anonymous ()

Без приложенных конфигов ядра и загрузчика вопрос не имеет смысла.

Что-то не вкомпилил. Или наоборот, жёстко вкомпилил то, что должно быть модулем. Или неправильно сконфигурировал загрузчик и ядро не находит корневой раздел.

anonymous ()
Ответ на: комментарий от AbbaT

Вот так собрано https://imgbox.com/wyCOoFEC /dev/sda3 отформатирован в ext4

Возможно загрузчик - пробовал Grub2, efibootmgr, rEFInd. Ошибка та же.

Конфигурировал так: efibootmgr -c -d /dev/sda -p 1 -L «Gentoo» -l «\efi\boot\bootx64.efi»

Файл bootx64.efi - переименованное текущее ядро vmlinuz-5.10.76-gentoo-r1-x86_64

Vitaliy_K ()
Ответ на: комментарий от anonymous

С драйверами скорее всего все в порядке.

Предыстория: Первая VM - собирал ядро вручную основываясь на здравом смысле, отключал то,что понимаю. То, в чем сомневался не отключал. Собрал ядро, перезагрузился, система не запустилась. Ну первый блин комом, не страшно:) Соответственно сразу подумал, что наотключал в ядре лишнего. Т.к. знаний в конфигурировании ядра не хватает, поднял еще одну виртуалку. Вторая VM - сделал те же шаги что и в первой VM, но конфигурацию ядра отдал genkernel, ядро скомпилилось, система запустилась. Тогда я взял рабочий .config, перенес его в первую VM и заново собрал ядро. Результат как в первом варианте, система не запустилась. Вот тут уже знаний не хватает.

Как происходит процесс загрузки? Откуда загрузчик знает, что нужно сначала запустить initramfs, а не ядро. Далее откуда initramfs знает, что нужно запустить именно это ядро и с этого раздела, ведь его я не конфигурирую никак.

Vitaliy_K ()
Ответ на: комментарий от Vitaliy_K

Встрой все модули и прошивки нужные для загрузки в ядро,, либо же встрой сам initramfs в ядро, если хочешь грузить через efistub
Ну, или придётся ставить промежуточный загрузчик т.к efi не заточен под загрузку linux напрямую.
У меня сейчас всё кроме модуля amdgpu и wifi в ядре, а в initramfs busybox и небольшой скрипт чтобы была возможность грузиться из подкаталога. Не понимаю, зачем в initramfs пихают модули

mittorn ★★★★★ ()
Последнее исправление: mittorn (всего исправлений: 2)

В ютюбе полно тьюториолов по установке генты в виртуалку. С них начни. Хэндбук хорошо, но можно и не правильно понять что-то по неопытности.

anonymous ()
Processor type and features  --->    
    [*] Built-in kernel command line                                                                                                                                          
        (root=/dev/sda2) Built-in kernel command string
File systems  ---> 
    <*> The Extended 4 (ext4) filesystem                                                                               
    [ ]ext4 for ext2 file systems                                                                              
    [*]   Ext4 POSIX Access Control Lists                                                                              
    [*]   Ext4 Security Labels
make -j4 all && make modules_install && make install

ls /boot # vfat

vmlinuz*
System.map*
efibootmgr -c -d /dev/sda -p 1 -L Gentoo -l /vmlinuz -u "root=/dev/sda2 rw"
anonymous ()
Ответ на: комментарий от Vitaliy_K

Да, это должно помочь в теории.

Если драйвер не в ядре, а отдельным модулем, то чтобы этот модуль загрузить, надо его прочитать из файловой системы. Для которой нужен драйвер. (=

В общем, всё выше написали правильно развёрнуто - надо проверить, что есть все необходимые драйвера, причём не модулем.

Либо initramfs…

BattleCoder ★★★★★ ()
Ответ на: комментарий от Vitaliy_K

он чтобы подмонтировать реальный корень и загрузить драйвера нужные для консоли. Но обычно и то и то можно сделать без него.
Но если нет - в ядре есть опция чтобы его встроить внутрь (там передаётся список файлов которые зашить)

mittorn ★★★★★ ()
Ответ на: комментарий от anonymous

с утра въебал – весь день свободен, с утра не выпил – день пропал

anonymous ()

В Gentoo есть и готовое ядро, вполне рабочее. С dist-kernel и можно начать, всё будет просто работать )

GAMer ★★★★★ ()
Ответ на: комментарий от BattleCoder

Я правильно понимаю, что для корректной загрузки нужно переименовать текущее ядро, например vmlinuz-5.10.76-gentoo-r1 в bootx64.efi положить данный файл в /boot/efi/gentoo/ И выполнить команду efibootmgr -c -d /dev/sda -p 1 -L «Gentoo» -l «\efi\gentoo\bootx64.efi» Или нужно, что-то еще?

PS Как пользоваться разметкой? Стандартный bbcode здесь не работает.

Vitaliy_K ()
Ограничение на отправку комментариев: только для зарегистрированных пользователей