linux - 运行Qemu后只是黑屏

标签 linux linux-kernel linux-device-driver virtualization qemu

我刚刚安装了 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"

我只能看到黑屏,我也尝试了下面线程中的建议

Qemu shows a black screen

但是还是不行。

以下是我运行编译内核源码的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/

相关文章:

linux - 递归检查 git 目录更新

python - 在 python 中运行 xmlrunner 时没有打印到标准输出

linux - net_device get_stats函数,如何使用?

linux - 劫持 __NR_read 和 bash 崩溃(caf 用户?)

linux - 如何获取 grub 加载/启动统计信息?

linux - 编译linux模块时确定架构

python - 无法从 putty 运行 .py 文件,语法错误 : word unexpected (expecting ")")

c - 如何获取函数在调用栈中的位置?

c - 用 "return"或 "do_exit()"终止内核线程是一个好习惯吗?

linux-kernel - IO-APIC 级别和 PCI-MSI-X 之间的差异