代码之家  ›  专栏  ›  技术社区  ›  Oğuz KAHRAMAN

QEMU仅显示黑屏

  •  2
  • Oğuz KAHRAMAN  · 技术社区  · 8 年前

    我用不同的配置和图像(如u、zImages)编译了我的自定义内核。但是当我试着跑的时候 qemu 在我的图像中,qemu只显示黑屏。

    我还看了 this post 但这对我没有帮助。

    编辑

    我只是尝试用这些命令编译内核。

    使ARCH=手臂距离清洁

    使ARCH=arm integrator\u defconfig

    make ARCH=臂菜单配置

    注意:我使用了默认的menuconfig。

    使ARCH=arm CROSS\u COMPILE=arm none eabi-zImage

    qemu系统arm-M integratorcp-内核架构/arm/引导/zImage

    最后我尝试了这个命令;

    qemu系统arm-M integratorcp-内核架构/arm/引导/zImage-附加“控制台=ttyAMA0早期打印=ttyAMA0”-串行标准

    注:当我尝试使用-dtb时,qemu给我“ 无法复制内存中的设备树。 “错误。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Peter Maydell    8 年前

    “QEMU在黑屏上什么都不做”几乎总是意味着“QEMU运行良好,但来宾代码在引导过程中崩溃或提前停止,没有发送任何输出”。几乎可以肯定的是,要么您的内核配置错误,要么您的QEMU命令行错误。你没有提供足够的信息来说明。您至少需要告诉我们:

    • 您正在运行的内核是什么,您为哪台机器配置了它
    • 您使用的QEMU命令行是

    针对您使用命令行更新的问题,提出以下建议:

    • 告诉您的来宾使用串行端口(使用QEMU选项-append“console=ttyAMA0”设置来宾内核命令行)
    • 检查GUI中的串行输出视图,或使用-nographic或-serial stdio将其发送到标准输出
    • 在guest配置和guest命令行中启用任何earlyprintk或earlycon选项,这样如果guest提前失败,您就有更多的机会抓住它
    • 使用-dtb integratorcp传递内核的设备树。dtb(使用内核树中的一个;您可能需要告诉内核makefiles为您构建它)

    PS:integratorcp是一个绝对古老的开发板——为什么要使用它?