LINUX.ORG.RU

(Легковесное) ядро в QEMU не видит жёсткий диск

 , ,


0

1

Компилирую (легковесное) ядро Linux. Основываясь, вообще говоря, на этом + патчи от Gentoo (но и без них - так же).

В QEMU ядро не видит диска - https://gist.github.com/kuraga/1dd577489e726046095c8567ddb499d3 :

VFS: Cannot open root device "(null)" or unknown-block(0,0): error -6
Please append a correct "root=" boot option; here are the available partitions:
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

Сборка и запуск:

make clean
make mrproper
make distclean
rm -f boot/{config,System.map,vmlinuz}-5.15.59-gentoo

make tinyconfig

./scripts/config -e CONFIG_64BIT
./scripts/config -d CONFIG_EMBEDDED
./scripts/config -d CONFIG_EXPERT
./scripts/config -e CONFIG_HYPERVISOR_GUEST
./scripts/config -e CONFIG_X86_X2APIC
./scripts/config -e CONFIG_PARAVIRT
./scripts/config -e CONFIG_KVM_GUEST
./scripts/config -e CONFIG_SERIAL_8250
./scripts/config -e CONFIG_SERIAL_8250_CONSOLE
./scripts/config -e CONFIG_PCI
./scripts/config -e CONFIG_VIRTIO_PCI
./scripts/config -e CONFIG_VIRTIO_PCI_LEGACY
./scripts/config -e CONFIG_VIRTIO_BLK
./scripts/config -e CONFIG_EXT4_FS
./scripts/config -e CONFIG_EXT4_USE_FOR_EXT2
./scripts/config -e CONFIG_EXT4_FS_POSIX_ACL
./scripts/config -e CONFIG_BINFMT_ELF
./scripts/config -e CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS

./scripts/config -e CONFIG_GENTOO_LINUX 
./scripts/config -e CONFIG_GENTOO_LINUX_UDEV
./scripts/config -e CONFIG_GENTOO_LINUX_PORTAGE
./scripts/config -e CONFIG_GENTOO_LINUX_INIT_SCRIPT
./scripts/config -d CONFIG_GENTOO_LINUX_INIT_SYSTEMD
./scripts/config -e CONFIG_NET
./scripts/config -e CONFIG_NAMESPACES 


yes "" | make oldconfig

make -j16
make install
$ fdisk -l hdd.img
Диск hdd.img: 8 GiB, 8589934592 байт, 16777216 секторов
Единицы: секторов по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 512 байт
Размер I/O (минимальный/оптимальный): 512 байт / 512 байт
Тип метки диска: gpt
Идентификатор диска: DE5E4E6E-4344-48B6-A748-763F8612F635

Устр-во    начало    Конец  Секторы Размер Тип
hdd.img1     2048   526335   524288   256M EFI
hdd.img2   526336 16777182 16250847   7.7G Файловая система Linux

$ qemu-system-x86_64 -kernel boot/vmlinuz-5.15.59-gentoo -append 'console=ttyAMA0,115200 console=tty highres=off console=ttyS0 root=/dev/vda2 init=/bin/bash' -drive file=hdd.img,format=raw -nographic -serial file:output -m 512

ЧЯДНТ? Спасибо.

P.S. UEFI видит файлы в разделе.



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

/dev/vda1 - это EFI-раздел у тебя
Корень - на /dev/vda2

А еще было бы неплохо проверить что у тебя включено CONFIG_EFI_PARTITION

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

Помогло Ваше + https://habr.com/ru/post/540214/ (добавил):

./scripts/config -e CONFIG_SCSI
./scripts/config -e CONFIG_SCSI_LOWLEVEL
./scripts/config -e CONFIG_SCSI_VIRTIO

./scripts/config -e CONFIG_VIRTIO
./scripts/config -e CONFIG_VIRTIO_MENU
./scripts/config -e CONFIG_BLOCK
./scripts/config -e CONFIG_BLK_DEV_SD

Как еще можно сократить - отпишусь позже.

Спасибо!

kuraga
() автор топика

По поводу root=/dev/vda2 - вы все правы, только это бы не помогло - он не видел диска вовсе.

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

Кратчайшая рабочая версия (запуск из QEMU’s -kernel с GPT/EXT4-раздела до /bin/bash):

./scripts/config -e CONFIG_64BIT \
                 -d CONFIG_EMBEDDED \
                 -d CONFIG_EXPERT \
                 -e CONFIG_SERIAL_8250 \
                 -e CONFIG_SERIAL_8250_CONSOLE \
                 -e CONFIG_VIRTIO \
                 -e CONFIG_VIRTIO_MENU \
                 -e CONFIG_PCI \
                 -e CONFIG_VIRTIO_PCI \
                 -e CONFIG_VIRTIO_BLK \
                 -e CONFIG_EFI_PARTITION \
                 -e CONFIG_EXT4_FS \
                 -e CONFIG_BINFMT_ELF
kuraga
() автор топика
Последнее исправление: kuraga (всего исправлений: 2)
Ответ на: комментарий от kuraga

Забыл добавить, что при вызове QEMU нужен ключ -drive file=hdd.img,format=raw,if=virtio.

kuraga
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.