【问题标题】:Cannot load linux or u-boot in QEMU无法在 QEMU 中加载 linux 或 u-boot
【发布时间】:2018-02-15 00:14:45
【问题描述】:

我正在尝试使用 QEMU 加载 u-boot,以便我可以与那里的控制台进行交互。 u-boot 的最终目标是没有串口,所以我与 u-boot 控制台交互的最简单方法是通过模拟器。

当我使用这些标志运行模拟器时,模拟器会启动,但控制台不会打印任何内容:

qemu-system-ppc -nographic -M virtex-ml507 -cpu 440epx -kernel u-boot.bin -dtb virtex440-ml507.dtb -serial mon:stdio -append 'console=ttyS0'

这是herehere 找到的建议的组合。

我尝试在没有 -nographic 标志的情况下运行程序,但收到错误 gtk initialization failed

我也尝试过使用更多“标准”输入来运行模拟器:

qemu-system-ppc -nographic -M virtex-ml507 -cpu 440epx -kernel zImage -dtb virtex440-ml507.dtb -initrd ramdisk.image.gz -serial mon:stdio -append 'console=ttyS0'

您可能会注意到我在这里使用的是zImage 而不是bzImage。目前,当我构建内核时,没有产生bzImage。为了彻底起见,我还用vmlinux替换了zImage,但无济于事。

我还尝试在没有-serial-append 标志的情况下运行模拟器,允许模拟器处理I/O,如第一个指南中所述。

QEMU 似乎运行正常,即没有挂起,因为我仍然可以进入命令模式以及正常退出。这似乎是一个入口点问题,但我认为入口点将由模拟器处理,我还没有看到任何指南告诉我指定它们。也可能是我使用的文件在某种程度上被破坏了,因为我没有在其他任何东西上运行它们,但我的构建似乎正确完成。

【问题讨论】:

  • 我不知道答案,但您尝试结合的建议是 (a) 在 Arm 上运行 u-boot 的方法和 (b) 为 x86 设置串行输出的建议。不同的 CPU 架构在这里变化很大,如果这些架构都对 PPC 没有特别有用,我不会感到惊讶。我的第一个猜测是 u-boot.bin 二进制文件不希望以任何方式启动 QEMU 的 PPC 的 -kernel 选项启动二进制文件。

标签: linux-kernel qemu u-boot


【解决方案1】:

首先要记住的是,一般来说,已知 U-Boot 和 QEMU 和 PowerPC 仅适用于“qemu-ppce500”构建目标,这是一个不同于您的 440 的 CPU 系列'目标在上面。综上所述,当你尝试做你正在做的事情时,对于 PowerPC,你需要使用 -bios 标志,参数是构建的 u-boot 文件。您不需要也不想传递 -dtb、-kernel 或 -append。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-24
    • 2014-12-01
    • 2016-07-19
    • 1970-01-01
    • 2020-05-03
    • 2015-03-23
    • 2016-08-30
    • 2020-10-17
    相关资源
    最近更新 更多