LINUX.ORG.RU

Gentoo: Initramfs ( Dracut ) не может инициализировать диски по шине Virtio

 , , ,


0

1

Всем доброго времени суток. Пользуя на постоянке арч , долгое время слушал страшилки про Gentoo. Мол , установив и настроив это - установишь и настроишь вообще всё. И вот для поднятия чсв скилла , решил поставить её на виртуальную машину QEMU/KVM , для удобства использовав virt-manager.

Всё шло неплохо. Параллельно с чтением хэндбука установил базовую систему , собрал ядро включив все необходимые для virtio модули. Однако запустив систему в загрузку , я получил следующие ошибки , исходящие от dracut/initramfs.

[  195.858677] dracut Warning: Could not boot.
[  195.865992] dracut Warning: /dev/disk/by-uuid/... does not exist
ad_mod: disagress about version of symbol kobject_uevent_env 
ad_mod: Unknown symbol kobject_uevent_env (err -22)

UUID указан верно. Дисков virtio ( /dev/disk/by-uuid ) нету вообще.

Dracut сконфигурирован следующим образом

add_drivers="virtio_pci virtio_blk virtio_scsi virtio_net virtio_ring virtio"

Буду рад любой помощи)



Последнее исправление: MrProblem (всего исправлений: 1)

Сколько раз ты пересобирал ядро? Удостоверься, что в конфиге ядра включены драйверы virtio.

Если они собираются модулями, то модули должны соответствовать тому обращу ядра, что ты грузить.

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

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

И не знаю как сейчас, но раньше в этом случае работало указание корневой файловой системы через PARTUUID раздела, а для использования UUID файловой системы нужен был initramfs.

Но вроде бы в ядро вносили правки, что и UUID тоже можно использовать без initramfs.

kostik87 ★★★★★
()

ad_mod: disagress about version of symbol kobject_uevent_env

модули ядра собраны не под то ядро

Такое может быть если ты пересобирал модули ядра с изменением конфига(например включил в него новый модуль, который потянул по зависимостям символ, компилируемый в само ядро) и без make clean.

Если драйвера virtio у тебя собран модулями - они могут из-за подобного тупо не загружаться.

Сделай make clean, пересобери ядро и модули, сделай заново make install и пересобери initramfs.

Или, как уже советовали выше, т.к. это виртуалка - вкомпилируй нужные тебе драйвера монолитно. Железо у тебя там кардинально меняться не будет.

initramfs нужен только если ты используешься lvm/raid/crypt/zfs или что-то более экзотическое для корневой фс.

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 2)
Ответ на: комментарий от Pinkbyte

модули ядра собраны не под то ядро

Ух ты. Не знал что подобное вообще возможно , при сборке в menuconfig’е

вкомпилируй нужные тебе драйвера монолитно

Это делается с помощью insmod?

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

При перекомпиляции ядра у тебя пересобираются модули и далее ты должен пересобрать initramfs.

На этапе запуска системы модули необходимые для монтирования корневой файловой системы подгружаются из initramfs.

Если драйверы необходимые для доступа к корневой файловой системе собраны модулями.

Т.е. после пересборки ядра тебе нужно пересобрать initramfs.

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

В этом случае драйвер будет собираться монолитно в ядре, а не модулем.

Если ты включил сборку драйвера, требуемого для доступа к корневой ФС модулем - пересобирай initramfs после сборки ядра.

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

Любезный , большое прибольшое вам ( и всем кто помогал ) спасибо! Это помогло мне! Оно наконец-то завелось!

В процессе решения проблемы , реально увеличил свои знания о сборке ядра ( из состояния «это магия» в состояния «могу запустить make» ). Теперь закончу с этой установкой , путём наката крысы4 и попробую без ramfs)

MrProblem
() автор топика
Ответ на: комментарий от Pinkbyte

я дурак получается?, я его юзаю как дополнительный к ядру блоб хранителя, без него я насколько помню нельзя грузить систему например с проп драйвером нвидиа, да даже с амд, или я не понял для чего он нужон?

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

или я не понял для чего он нужон?

Тебе дал ответ Pinkbyte в том комментарии на который ты написал свой комментарий:

Pinkbyte

initramfs нужен только если ты используешься lvm/raid/crypt/zfs или что-то более экзотическое для корневой фс.

Т.е. initramfs нужен только в том случае, если для получения доступа к корневой файловой системе нужно выполнение некоторых операций, которые ядро не может выполнить само. Либо когда нужна более ранняя инициализация оборудования, ещё до момента монтирования корневой файловой системы. Так же в initramfs могут быть помещены утилиты файловой системы для выполнения проверки на ошибки.

без него я насколько помню нельзя грузить систему например с проп драйвером нвидиа, да даже с амд

В случае загрузки драйверов nvidia или amd может быть единственно одна проблема. При загрузке модуля драйвера видео карты этот драйвер должен загрузить в оборудование, в данном случае видео карту, прошивку с микропрограммой (firmware). Если драйвер будет загружен в ядро, но на момент загрузки не будет доступа к файлу с firmware, то изображение ты увидишь только после монтирования корневой файловой системы.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 2)
Ответ на: комментарий от SPRATAY

В современном Linux на десктопе могут быть нюансы с проприетарными драйверами ЕСЛИ тебе нужен бесшовный фреймбуфер сразу начиная от загрузчика. А потом еще и красивый splash screen вместо логов «страшной консоли» :-). Тут да, без initrd никак.

Если же у тебя в консоли - старые добрые 80x25(выключены всякие simplefb, vesafb и прочие), то никаких проблем нет - моргнёт один раз разрешение при загрузке проприетарщины и всё, а потом уже загрузятся иксы/вейланд.

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от kostik87

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

Дополню - если некорректно настроен фреймбуффер, можно даже лишиться первичной консоли и получить на экране что-то ТОЛЬКО когда загрузятся иксы/вейланд(при том что сам проприетарный драйвер точно грузится раньше).

А выстрелить в ногу с фреймбуффером в современном линуксе на удивление проще, чем было раньше.

По крайней мере раньше(во времена BIOS, до этих ваших UEFI) у меня были только проблема вида «фреймбуффера нет» при некорректной настройке, но на экране хоть какая-то консоль была.

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

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

soomrack ★★★★
()