在 QEMU 上运行内核

Ash*_*Ash 9 linux kernel qemu

我面临这样的消息:

Failed to execute /initKernel panic - not syncing: no init found. 
Try passing init=option to kernel.
Run Code Online (Sandbox Code Playgroud)

我正在使用这个命令行:

qemu-system-x86_64 -hda disk.img -kernel /home/marssonubuntu/linux_qemu/linux-3.3.3/arch/x86/boot/bzImage -initrd my-initramfs.cpio -append "root=/dev/sda rdinit=/sbin/init"
Run Code Online (Sandbox Code Playgroud)

在 qemu 上,完整信息是:

Failed to execute /sbin/init Kernel panic - not syncing: No init found. 
Try passing init= option to kernel. see Linux Documentation/init.txt for guidance. 
Pid: 1, comm: swapper Not tainted 3.3.3 #1 
Call Trace: 
[<ffffffff811d78b4>] ? panic+0xa9/0x197
[<ffffffff811d6927>] ? init_post+0xb2/0xb2
[<ffffffff812aad96>] ? kernel_init+0xff/0xff
[<ffffffff811dcd44>] ? kernel_thread_helper+0x4/0x10
[<ffffffff812aac97>] ? do_one_initcall+0x121/0x121
[<ffffffff811dcd40>] ? gs_change+0xb/0xb
Run Code Online (Sandbox Code Playgroud)

小智 10

我用了:

qemu-system-x86_64 --enable-kvm -m 1024 -machine smm=off -cdrom mint.iso -boot order=d mint_hdd.img
Run Code Online (Sandbox Code Playgroud)

指定 RAM 大小即

-m 1024
Run Code Online (Sandbox Code Playgroud)

修复了这个问题并成功启动到 mint。


小智 0

好的,这是我的 Qemu 命令行:

KERNEL=vmlinuz-2.6.32-5-686
INITRD=initrd.img-2.6.32-5-686
APPEND="root=/dev/sda2 ro "
IMG=qemu.img
qemu -kernel $KERNEL -initrd $INITRD -append "$APPEND"  -hda $IMG

$ file $IMG $INITRD $KERNEL
qemu.img: DOS/MBR boot sector
initrd.img-2.6.32-5-686: gzip compressed data
vmlinuz-2.6.32-5-686:    Linux kernel x86 boot executable bzImage
Run Code Online (Sandbox Code Playgroud)