2013-06-21 4 views
4

Я пытаюсь запустить это и не знаю, что я делаю неправильно. Я создал Debian.img (диск в необработанном формате с менеджером виртуальных устройств - gui to libvirt, я думаю) и установил debian без проблем. Теперь я хочу, чтобы это выполнялось с самокомпилированным ядром. Я скопировал файл .config из моего рабочего (виртуального) debian и не сделал никаких изменений вообще. Это то, что я делаю:linux: работает само скомпилированное ядро ​​в qemu: VFS: невозможно монтировать root fs на неизвестном wn-блоке (0,0)

qemu-system-x86_64 -m 1024M -kernel /path/to/bzImage -hda /var/lib/libvirt/images/Debian.img -append "root=/dev/sda1 console=ttyS0" -enable-kvm -nographic 

Но во время загрузки я всегда получаю это сообщение об ошибке.

[ 0.195285] Initializing network drop monitor service 
    [ 0.196177] List of all partitions: 
    [ 0.196641] No filesystem could mount root, tried: 
    [ 0.197292] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) 
    [ 0.198355] Pid: 1, comm: swapper/0 Not tainted 3.2.46 #7 
    [ 0.199055] Call Trace: 
    [ 0.199386] [<ffffffff81318c30>] ? panic+0x95/0x19e 
    [ 0.200049] [<ffffffff81680f7d>] ? mount_block_root+0x245/0x271 
    [ 0.200834] [<ffffffff8168112f>] ? prepare_namespace+0x133/0x169 
    [ 0.201590] [<ffffffff81680c94>] ? kernel_init+0x14c/0x151 
    [ 0.202273] [<ffffffff81325a34>] ? kernel_thread_helper+0x4/0x10 
    [ 0.203022] [<ffffffff81680b48>] ? start_kernel+0x3c1/0x3c1 
    [ 0.203716] [<ffffffff81325a30>] ? gs_change+0x13/0x13 

Что я делаю неправильно? Пожалуйста, помогите кому-нибудь. Нужно ли передавать параметр -initrd? Я пробовал это уже, но мне не повезло.

+0

Я также являюсь ха ving же проблема, если вы смогли найти какое-либо решение проблемы, ответьте пожалуйста. –

ответ

2

Я понял это сам. Прошло некоторое время, но, как я помню, решение состояло в том, чтобы предоставить начальный ramdisk. Вот как я работал с аппаратным ускорением.

Сборка

make defconfig 

CONFIG_EXT4_FS=y 
CONFIG_IA32_EMULATION=y 
CONFIG_VIRTIO_PCI=y (Virtualization -> PCI driver for virtio devices) 
CONFIG_VIRTIO_BALLOON=y (Virtualization -> Virtio balloon driver) 
CONFIG_VIRTIO_BLK=y (Device Drivers -> Block -> Virtio block driver) 
CONFIG_VIRTIO_NET=y (Device Drivers -> Network device support -> Virtio network driver) 
CONFIG_VIRTIO=y (automatically selected) 
CONFIG_VIRTIO_RING=y (automatically selected) 

---> см http://www.linux-kvm.org/page/Virtio

Включить паравиртуальный в конфигурации

Отключить NMI сторожевой на HOST для использования счетчиков производительности на госте. Вы можете проигнорировать это.

cat /proc/sys/kernel/nmi_watchdog 

---> см http://kvm.et.redhat.com/page/Guest_PMU

Пуск в Qemu

sudo qemu-system-x86_64 -m 1024M -hda /var/lib/libvirt/images/DEbian.img -enable-kvm -initrd /home/username/compiled_kernel/initrd.img-3.2.46 -kernel /home/username/compiled_kernel/bzImage -append "root=/dev/sda1 console=ttyS0" -nographic -redir tcp:2222::22 -cpu host -smp cores=2 

Пуск в KVM

Kernal Путь:/Главная/имя пользователя/compiled_kernel/bzImage
Initrd путь: /home/username/compiled_kernel/initrd.img-3.2.46
Аргументы ядра: root =/dev/sda1

Надеюсь, это поможет, если у кого-то есть те же проблемы.

0

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

losetup /dev/loop0 /var/lib/libvirt/images/Debian.img 
kpartx -av /dev/loop0 
mount /dev/mapper/loop0p1 /mnt/tmp 
0

Скорее всего, ядро ​​не знает правильное устройство для загрузки.
Вы можете указать это явно из командной строки qemu. Так что, если корень находится на перегородке 2, вы можете сказать:

qemu -kernel /path/to/bzImage \ 
    -append root=/dev/sda2 \ 
    -hda /path/to/hda.img \ 
    . 
    . 
    . 

Примечание Я использую /Dev/sda2 даже если диск IDE. В настоящее время даже виртуальные машины используют SATA.

Другие возможности заключаются в том, что, как отмечает @Houcheng, ваш корневой FS поврежден, или же что ядро ​​не имеет встроенного такого типа FS. Но я думаю, что вы получите другую ошибку, если это так.

0

QEMU версия

QEMU emulator version 2.5.0 (Debian 1:2.5+dfsg-5ubuntu10.11), Copyright (c) 2003-2008 Fabrice Bellard 

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

qemu-system-x86_64 -kernel output/images/bzImage -hda output/images/rootfs.qcow2 -boot c -m 128 -append root=/dev/sda -localtime -no-reboot -name rtlinux -net nic -net user -redir tcp:2222::22 -redir tcp:3333::3333 

принимал только/Dev/ПДД в качестве опции для корневой фс монтировать (он покажет вам небольшую подсказку для опции root fs после ее загрузки и зависания со следующей ошибкой):

VFS: Cannot open root device "hda" or unknown-block(0,0): error -6 
Please append a correct "root=" boot option; here are the available partitions: 
0800 61440 sda driver: sd