使用 -curses 选项运行 qemu 时内核出现恐慌?

使用 -curses 选项运行 qemu 时内核出现恐慌?

我有一个 Debian 10(“buster”)的原始 qemu 磁盘映像,没有桌面环境,我试图在我的主机(也是 Debian 10)的终端中使用该标志运行它-curses。如果我qemu-system-x86_64只使用-curses标志运行,我只会得到一个空白屏幕,所以以下这个问题我添加了该-vga std选项。不幸的是,这让我在控制台中出现内核恐慌,并且我从未到达来宾的登录屏幕。输出如下所示:

[    3.021788]  xwrite+0x29/0x5a
[    3.021845]  do_copy+0x9b/0xc8
[    3.021878]  write_buffer+0x27/0x37
[    3.021912]  flush_buffer+0x34/0x8b
[    3.021947]  __gunzip+0x26e/0x315
[    3.021982]  ? bunzip2+0x397/0x397
[    3.022016]  ? initrd_load+0x5e/0x5e
[    3.022048]  ? __gunzip+0x315/0x315
[    3.022080]  gunzip+0xe/0x11
[    3.022112]  ? initrd_load+0x5e/0x5e
[    3.022143]  unpack_to_rootfs+0x182/0x2c6
[    3.022177]  ? initrd_load+0x5e/0x5e
[    3.022210]  ? unpack_to_rootfs+0x2c6/0x2c6
[    3.022243]  ? do_early_param+0x8e/0x8e
[    3.022275]  populate_rootfs+0x59/0x106
[    3.022311]  do_one_initcall+0x46/0x1c3
[    3.022350]  ? do_early_param+0x8e/0x8e
[    3.022382]  kernel_init_freeable+0x189/0x218
[    3.022419]  ? rest_init+0xaa/0xaa
[    3.022453]  kernel_init+0xa/0x10d
[    3.022487]  ret_from_fork+0x35/0x40
[    3.023243] ---[ end Kernel panic - not syncing: System is deadlocked on memo
ry
[    3.023243]  ]---

我使用的是 QEMU 模拟器版本 3.1.0 (Debian 1:3.1+dfsg-8+deb10u3)。我的终端是英石0.8.2,我的桌面环境/窗口管理器是 dwm,如果这些详细信息相关的话。不过,如果我使用 xterm,我也会遇到同样的内核恐慌。

我正在使用此 qemu 命令启动映像:

qemu-system-x86_64 -curses -vga std -m 1024 -drive format=raw,file=disk.img

我尝试过其他各种 qemu 标志组合这个问题,但它们要么对于我的 qemu 版本不存在(例如选项-noframe),抛出其他错误(例如-append需要-kernel选项),或者只是给我一个空白屏幕(-curses本身)。

这样做的全部目的是避免启动 VNC 查看器来访问仅使用命令行的来宾。

答案1

莫斯维的评论,我将nomodeset systemd.unit=multi-user.target选项添加到内核命令行,然后 qemu 正确启动了所有内容。因为我正在使用以下命令设置这些可启动 iso 映像预置文件,我将这一行添加到preseed.cfg

d-i debian-installer/add-kernel-opts string nomodeset systemd.unit=multi-user.target

相关内容