LINUX.ORG.RU

QEMU не загружает систему

 ,


0

1

Доброго времени суток. Вчера накатил себе Gentoo под QEMU: весь процесс стандартный, только GRUB_PLATFORMS=«qemu». Все было нормально, вот попробовал ее сегодня перезагрузить и получаю сообщение «Booting from hard disk...», после которого ничего не происходит. Запускаю так:

qemu-system-x86_64 -enable-kvm -cpu host -drive file=GentooVM.img,if=virtio -m 1G -monitor stdio -name 'Gentoo VM' -curses
Мой первый опыт работы с QEMU, так что ума не приложу, что не так. Прошу вашего совета.


Ответ на: комментарий от anonymous
$ cat /mnt/gentoo/usr/src/linux/.config | grep VIRTIO
CONFIG_VIRTIO_BLK=y
CONFIG_VIRTIO_NET=y
# CONFIG_VIRTIO_CONSOLE is not set
# CONFIG_HW_RANDOM_VIRTIO is not set
# CONFIG_DRM_VIRTIO_GPU is not set
CONFIG_VIRTIO=y
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_PCI_LEGACY=y
# CONFIG_VIRTIO_BALLOON is not set
CONFIG_VIRTIO_INPUT=y
CONFIG_VIRTIO_MMIO=y
# CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES is not set
maked0n
() автор топика

drive и device должны быть раздельными:

-drive file='/home/user/qemu/lyalix.qed',if=none,id=drive-virtio-disk0,cache=none,aio=native,format=qed -device virtio-blk-pci,drive=drive-virtio-disk0,id=virtio-disk

У qemu довольно сложные аргументы.

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

Загружается, но при загрузке вываливается в kernel panic:

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(252,3)

maked0n
() автор топика
Ответ на: комментарий от maked0n
-drive file='/home/user/qemu/lyalix.qed',if=none,id=drive-ide0-0-0,media=disk,cache=none,aio=native,format=qed -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0

Формат менять не забывай.

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

Все равно не работает. Уже включил в ядро все, что связано с IDE и тд, и все равно никак. А есть способ виртуализировать текущее окружение, подсунув ему какое-то ядро?

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

У тебе еще должны быть модули либо вкомпилены в ядро, либо добавлены в initram.

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

Падает с ошибкой:

KVM internal error. Suberror: 1
emulation failure
EAX=f000fa00 EBX=00000019 ECX=00000019 EDX=0000fa00
ESI=0a1efa00 EDI=00000284 EBP=00000019 ESP=00000260
EIP=0000f200 EFL=00010046 [---Z-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =9000 00090000 0000ffff 00009300
CS =9020 00090200 0000ffff 00009b00
SS =9000 00090000 ffffffff 00809300
DS =9000 00090000 0000ffff 00009300
FS =07c0 00007c00 ffffffff 00809300
GS =0000 00000000 ffffffff 00809300
LDT=0000 00000000 0000ffff 00008200
TR =0000 00000000 0000ffff 00008b00
GDT=     0009c620 0000002f
IDT=     00000000 000003ff
CR0=00000010 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000 
DR6=00000000ffff0ff0 DR7=0000000000000400
EFER=0000000000000000
Code=19 00 00 fa 19 00 00 fa 19 00 00 fa 19 00 00 fa 19 00 00 fa <c8> 00 00 fa 19 00 00 fa 19 00 00 fa 19 00 00 fa 19 00 00 fa 19 00 00 fa 19 00 00 fa 19 00
А какие именно модули?

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

Выгрузил, все так же вываливается с ошибкой. Если запускаю по-старому, как в самом начале, то просто висит строка «LILO loading Gento.................» и все.

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

А есть способ виртуализировать текущее окружение, подсунув ему какое-то ядро?

У QEMU есть параметры -kernel и -initrd.

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

Это может происходить, если у тебя виртуалке выделено недостаточно памяти, чтобы распаковать initramfs. Ядро этого почему-то не определяет, и когда ему не удаётся распаковать initramfs, просто пытается подмонтировать его как initrd (block device).

proud_anon ★★★★★
()

А ты уверен, что тебе нужна виртуалка и не достаточно chroot?

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

Я пробовал, но когда я просто передаю ему ядро и initrd, то при загрузке получаю kernel panic.


а букву/юид корневого раздела указал? Ядро поди не знает, куда тыкаться.

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

Память указал явно, теперь грузит, но останавливается на ошибке

Could not find the root block device in .
Запускаю так, пример нашел на просторах интернета:
sudo qemu-system-x86_64 -enable-kvm -cpu host -kernel kernel-20151411 -initrd initrd-20153001 -m 1G -hda /dev/sda1

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

В общем в итоге все нормально. Спасибо всем за помощь. Запустил так:

qemu-system-x86_64 -kernel /mnt/boot/kernel-20151411 -initrd /mnt/boot/initrd-20153001 -append root=/dev/sda /dev/sda3

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