我刚刚安装了 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命令的输出
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
Load 和 Entry 点在这里可以吗?
最佳答案
不,您的加载点和入口点不正确。通常下面是加载和入口地址
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
此外,如果您尝试使用您的命令,内核将在没有 rootfs 的情况下崩溃
。缺少 initrd 参数。此外,您在构建内核时可能会遗漏一些配置。
尝试以下步骤:
1)使 ARCH=arm distclean
2)制作 ARCH=arm versatile_defconfig
3)制作 ARCH=arm menuconfig
这里你需要启用以下功能。
内核特性--->
[*] 使用 ARM EABI 编译内核。 (启用此功能)。
4)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"
在这里你会得到控制台说内核 panic 。 为避免这种情况,请传递您的 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"- 串行标准输入输出。
关于linux - 运行Qemu后只是黑屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20763344/