【问题标题】:Redirect Qemu console to a file or the host terminal?将 Qemu 控制台重定向到文件或主机终端?
【发布时间】:2020-10-09 17:31:16
【问题描述】:

背景:

我的系统是基于 x86 的内核和基于ramfs 的根文件系统。我已经制作了基于 cpio 存档的 ramfs(它将使用 boot=/dev/ram0 作为 RAM 设备),但我在 init 上遇到了一些问题。整个目的是将 ramfs 优化到最低限度,以适应一个非常小的系统。我正在尝试调试 init 中的问题。我使用以下命令在Ubuntu 12.10(Quantal Quetzal)中启动QEMU

qemu-system-x86_64 -kernel linux-3.9.2/arch/x86/boot/bzImage -serial stdio \
    -append "root=/dev/ram0 console=tty1"

正如预期的那样,系统进入 OOPS。

问题:

我想查看日志以调查崩溃的原因,但我无法使用 Shift 键和 Page Up/向下翻页。所以我尝试通过命令使用curses将输出重定向到主机终端:

qemu-system-x86_64 -kernel linux-3.9.2/arch/x86/boot/bzImage -serial stdio \
    -append "root=/dev/ram0 console=tty1" -curses

但在这里我又无法导航并找到问题。

附:如果我的系统启动正常(使用正确的 rootfs),那么我就可以导航并查看消息。

如何将消息重定向到终端或文件?

【问题讨论】:

    标签: logging qemu


    【解决方案1】:

    添加以下命令:console=ttyAMA0 console=ttyS0

    qemu-system-x86_64 -kernel linux-3.9.2/arch/x86/boot/bzImage -serial stdio \
        -append "root=/dev/ram0 console=ttyAMA0 console=ttyS0"
    

    现在所有 dmesg 日志都将重定向到您的控制台。

    还有一件事:我从上面的命令中观察到,你的初始 RAM 磁盘在哪里?即 - -initrd (initrdimage)

    要启动系统,您需要两个映像,1) zImage 或 bZimage(在 x86 的情况下) 2) rootfs -root 文件系统

    在您的情况下,缺少的组件是 rootfs。

    【讨论】:

    • 非常感谢它完美运行我错过了一个选项 -initrd fs/mydisk 这是我的 rootfs
    • 如果你添加这个命令,输出日志会同时出现在 qemu 和你的终端上。"console=ttyAMA0,115200 console=tty mem=256M highres=off console=ttyS0"
    • 我看到一个问题,带有 KERN_DEBUG 的 printk 没有在任何终端上显示。我不得不将它们更改为 KERN_INFO。我的调试日志级别是 7。我在配置内核时更改了它。谁能告诉我这些打印件是否正在缓冲到任何其他终端?
    • qemu中如何退出本机?
    • @everlof <Ctrl-a x> 将退出模拟器
    猜你喜欢
    • 1970-01-01
    • 2014-07-11
    • 2010-09-20
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2013-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多