Logging 将Qemu控制台重定向到文件或主机终端? 背景:

Logging 将Qemu控制台重定向到文件或主机终端? 背景:,logging,qemu,Logging,Qemu,我的系统是一个基于x86的内核和根文件系统。我已经基于cpio归档文件(将使用boot=/dev/ram0作为RAM设备)制作了RAMF,并且我在init中遇到了一些问题。整个目的是将RAMF优化到最小,以适应一个非常小的系统。我正在尝试在init中调试这个问题。我使用以下命令从(量子格查尔)开始: qemu-system-x86_64 -kernel linux-3.9.2/arch/x86/boot/bzImage -serial stdio \ -append "root

我的系统是一个基于x86的内核和根文件系统。我已经基于cpio归档文件(将使用boot=/dev/ram0作为RAM设备)制作了RAMF,并且我在init中遇到了一些问题。整个目的是将RAMF优化到最小,以适应一个非常小的系统。我正在尝试在init中调试这个问题。我使用以下命令从(量子格查尔)开始:

qemu-system-x86_64 -kernel linux-3.9.2/arch/x86/boot/bzImage -serial stdio \
    -append "root=/dev/ram0 console=tty1"
qemu-system-x86_64 -kernel linux-3.9.2/arch/x86/boot/bzImage -serial stdio \
    -append "root=/dev/ram0 console=tty1" -curses
正如预期的那样,系统将进入OOPS

问题: 我希望查看日志以调查崩溃的原因,但我无法使用Shift键和Page Up/Page Down在QEMU控制台中导航。因此,我尝试通过命令使用诅咒将输出重定向到主机终端:

qemu-system-x86_64 -kernel linux-3.9.2/arch/x86/boot/bzImage -serial stdio \
    -append "root=/dev/ram0 console=tty1"
qemu-system-x86_64 -kernel linux-3.9.2/arch/x86/boot/bzImage -serial stdio \
    -append "root=/dev/ram0 console=tty1" -curses
但在这里,我再次无法导航并找到问题所在

另外,如果我的系统启动正常(使用正确的rootfs),那么我就能够导航并查看消息


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

添加以下命令:
console=ttyam0 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磁盘在哪里?i、 e-
-initrd(initrdimage)

要启动系统,您需要两个映像,1)zImage或bZimage(对于x86) 2) 根文件系统


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

非常感谢,它工作得很好。我缺少了一个选项-initrd fs/mydisk,它是我的rootfsIf如果您添加此命令,输出日志将同时出现在qemu和您的终端上。“console=ttyam0115200 console=tty mem=256M highres=off console=ttyS0”我发现任何终端上都没有显示带有KERN_调试的printk的问题。我不得不把它们改成KERN_信息。我的调试日志级别是7。我在配置内核时对其进行了更改。有谁能告诉我这张照片是否被缓冲到其他终端?我如何从qemu的机器中退出?@everlof
将退出emulator