模拟Linux内核时出现黑屏

模拟Linux内核时出现黑屏,linux,kernel,boot,qemu,Linux,Kernel,Boot,Qemu,我正在尝试为arm(多功能板)构建linux,并使用Qemu进行仿真: 我把书页折叠起来 下载Qemu和arm linux gnueab工具链后,基本步骤如下: make-C build ARCH=arm distclean make-C build ARCH=arm-multipleable\u defconfig make-C build ARCH=arm-CROSS\u COMPILE=arm-none-linux-gnueabi- qemu系统arm-M versatileab-M 2

我正在尝试为arm(多功能板)构建linux,并使用Qemu进行仿真:

我把书页折叠起来

下载Qemu和arm linux gnueab工具链后,基本步骤如下:

  • make-C build ARCH=arm distclean

  • make-C build ARCH=arm-multipleable\u defconfig

  • make-C build ARCH=arm-CROSS\u COMPILE=arm-none-linux-gnueabi-

  • qemu系统arm-M versatileab-M 256M-内核构建/arch/arm/boot/zImage-附加“console=ttyS0”-串行stdio-dtb构建/arch/arm/boot/dts/万能-ab.dtb

我得到的是黑色的sreen,顶部有一个光标和以下消息:

pulseaudio: set_sink_input_volume() failed
pulseaudio: Reason: Invalid argument
pulseaudio: set_sink_input_mute() failed
pulseaudio: Reason: Invalid argument
Uncompressing Linux... done, booting the kernel.
vpb_sic_write: Bad register offset 0x2c
我不确定问题从何而来:是因为内核配置不好吗?dtb?;这些信息并不能提供很多信息

所以欢迎你的建议

Qemu版本:

qemu-system-arm --version
QEMU emulator version 2.0.0 (Debian 2.0.0+dfsg-2ubuntu1.31), Copyright (c) 2003-2008 Fabrice Bellard
我的机器:

uname -a
Linux user-SATELLITE-C855-169 4.2.0-27-generic #32~14.04.1-Ubuntu SMP Fri Jan 22 15:32:26 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

设备
ttyS0
通常用于PC风格的8250/16550串行端口,而QEMU为versatibleab和versatilepb机器模拟AMBA PL011,它们使用设备名称
ttyAMA0
,因此您可以尝试改用
console=ttyAMA0

在启动期间,帧缓冲区控制台可能需要内核进行绑定,这是通过在内核配置中设置
framebuffer\u console\u DETECT\u PRIMARY=y
来控制的,这应该允许在
tty0
设备上使用
console=tty0
进行控制台


您可以指定多个
console=
选项,因此使用
console=ttyAMA0 console=tty0
应该会在模拟控制台端口(在stdio上,使用您的选项)和帧缓冲区上显示内核引导消息。

感谢您的反馈,我现在没有笔记本电脑,但我会尝试一下,然后再回复您。只是一个问题:在启动内核之前,我们如何知道可用的设备名称?这很有效,谢谢,您能否提供有关如何选择好的
tty
设备的更多详细信息?如果启用,帧缓冲区始终绑定到tty/tty0。对于串行控制台,您可以检查DTS文件。在
arch/arm/boot/dts/万能pb.dts
中搜索
uart
,您将找到驱动程序名
pl011
。搜索该文件名,可以找到
驱动程序/tty/serial/amba-pl011.c
。在该文件中搜索
struct uart\u driver
,您会发现一个结构带有
.dev\u name=“ttyAMA”
——这是您应该使用的名称(附加了设备索引号)。