相关疑难解决方法(0)

将QEMU窗口输出重定向到运行qemu的终端

我试图用qemu调试linux内核的启动顺序,我正在运行的命令是:

  qemu -serial stdio -kernel <path to kernel> -hda <path to rootfs> -append "root=/dev/sda terminal = ttyS0"
Run Code Online (Sandbox Code Playgroud)

在引导期间,所有内核消息都将打印到QEMU窗口.只有当引导完成后,我才会将提示返回到终端,我运行了QEMU.

现在我可以开始使用我正在运行的内核终端并在终端中查看输出,而不是在QEMU窗口中.

如何将所有消息(包括引导消息)发送到终端而不是QEMU窗口(因为我无法在该窗口中向上滚动..)?

linux debugging qemu linux-kernel

24
推荐指数
2
解决办法
5万
查看次数

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

背景:

我的系统是基于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"
Run Code Online (Sandbox Code Playgroud)

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

题:

我想查看日志以调查崩溃的原因,但我无法使用Shift密钥和Page Up/ 在QEMU控制台中导航Page Down.所以我尝试使用curses命令将输出重定向到主机终端:

qemu-system-x86_64 -kernel linux-3.9.2/arch/x86/boot/bzImage -serial stdio -append "root=/dev/ram0 console=tty1" -curses
Run Code Online (Sandbox Code Playgroud)

但在这里,我无法导航并找到问题所在.

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

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

qemu

6
推荐指数
1
解决办法
2万
查看次数

如何在 Qemu 下启动 FreeBSD 映像

我有一个包含 /boot/loader* 和 /boot/kernel 等的 FreeBSD 映像。它在 EC2 实例下启动良好,但我想用 Qemu 启动它。我尝试了各种方法,但都没有奏效。见下文。

qemu-system-x86_64 -kernel kernel -nographic -append 'console=ttyS0' disk.img
qemu-system-x86_64 -kernel loader -nographic -append disk.img
Run Code Online (Sandbox Code Playgroud)

freebsd qemu

5
推荐指数
2
解决办法
2233
查看次数

如何使用-nographic和-monitor运行qemu但仍然能够将Ctrl + C发送给来宾并使用Ctrl + AX退出?

我刚刚发现,如果使用来运行QEMU -monitor telnet::45454,server,nowait -nographic,那么Ctrl-C会杀死QEMU VM而不是在来宾上生成SIGINT:使用-nographic运行qemu时如何将Ctrl-C传递给来宾?| Unix和Linux堆栈交换

但是,我不想删除-monitor它,因为它使监视命令自动化非常方便,例如,它允许我创建一个执行以下操作的帮助程序脚本:

echo 'savevm my_snap_id' |  telnet localhost 45454
Run Code Online (Sandbox Code Playgroud)

有没有办法让我Ctrl-C和我保持-monitor合作-nographic

完整的QEMU命令:

qemu-system-x86_64 -append 'root=/dev/vda console=ttyS0' -kernel 'bzImage' -drive file='rootfs.ext2.qcow2,if=virtio,format=qcow2' -nographic -monitor telnet::45454,server,nowait
Run Code Online (Sandbox Code Playgroud)

在QEMU 2.10.1,Ubuntu 17.10上,完整的QEMU命令:

./x86_64-softmmu/qemu-system-x86_64 \
-append "root=/dev/sda console=ttyS0 nokaslr printk.time=y" \
-drive file="${dir}/out/x86_64/buildroot/images/rootfs.ext2.qcow2,format=qcow2" \
-kernel "${dir}/out/x86_64/buildroot/images/bzImage" \
-nographic \
Run Code Online (Sandbox Code Playgroud)

如果我添加:

-chardev stdio,id=s1,signal=off \
-serial none -device isa-serial,chardev=s1
Run Code Online (Sandbox Code Playgroud)

然后Ctrl+C根据需要开始工作,但Ctrl+A X不能退出QEMU,这有时很烦人:我可以使用telnetto quit,但是它需要更多的键入/自动化操作。

http://lists.nongnu.org/archive/html/qemu-discuss/2018-04/msg00006.html

qemu

2
推荐指数
1
解决办法
3898
查看次数

标签 统计

qemu ×4

debugging ×1

freebsd ×1

linux ×1

linux-kernel ×1