我刚刚安装了QEMU并编译了具有ARM支持的linux内核,但是当我在以下命令下运行时
qemu-system-arm -M versatilepb -m 128M -kernel /home/arit/QEMU/linux-3.8.4/arch/arm/boot/uImage -append "console=tty1"
我只能看到黑屏,我也尝试了下面线程中的建议
但是仍然没有用。
以下是我运行以编译内核源代码的make命令的输出
使ARCH = arm CROSS_COMPILE = arm-none-linux-gnueabi- uImage -s
Image Name: Linux-3.8.4 Created: Tue Dec 24 12:49:07 2013 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 4406472 Bytes = 4303.20 kB = 4.20 MB Load Address: fffffff2 Entry Point: fffffff2
负载点和入口点可以吗?
没有您的负载和入口点不正确。通常在下面是加载和入口地址
Image Name: Linux-3.9.0 Created: Thu Dec 26 09:50:57 2013 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1908056 Bytes = 1863.34 kB = 1.82 MB Load Address: 00008000 Entry Point: 00008000
而且,如果您尝试使用命令,内核将be panic在没有rootfs的情况下使用。initrd参数丢失。同样,在构建内核时,您可能会缺少一些配置。
be panic
请尝试以下步骤:
1)make ARCH=arm distclean
make ARCH=arm distclean
2)make ARCH=arm versatile_defconfig
make ARCH=arm versatile_defconfig
3)make ARCH=arm menuconfig
make ARCH=arm menuconfig
在这里,您需要启用以下功能。
Kernel Features ---> [*] Use the ARM EABI to compile the kernel. (enable this).
Kernel Features --->
[*] Use the ARM EABI to compile the kernel. (enable this).
4)make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage
5)qemu-system-arm -M versatilepb -m 128M -kernel arch/arm/boot/uImage -append "console=tty1"
qemu-system-arm -M versatilepb -m 128M -kernel arch/arm/boot/uImage -append "console=tty1"
在这里,您将获得控制台提示说内核崩溃。为了避免这种情况,请传递您的rootfs参数。
我猜你是从busybox构建rootfs的,如果这样,请尝试使用以下命令完全启动系统
6)qemu-system-arm -M versatilepb -m 128M -kernel arch/arm/boot/uImage -initrd rootfs.img -append "root=/dev/ram mem=128M rdinit=/sbin/init" -serial stdio.
qemu-system-arm -M versatilepb -m 128M -kernel arch/arm/boot/uImage -initrd rootfs.img -append "root=/dev/ram mem=128M rdinit=/sbin/init" -serial stdio.