我有一个没有桌面环境的 Debian 10(“buster”)的原始 qemu 磁盘映像,我试图在带有-curses
标志的主机(也是 Debian 10)的终端中运行它。如果我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)。我的终端是st 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 查看器来访问仅是命令行的来宾。
根据mosvy的评论,我将
nomodeset systemd.unit=multi-user.target
选项添加到内核命令行,然后 qemu 正确启动了所有内容。由于我正在使用预置文件设置这些可引导的 iso 映像,因此我将这一行添加到preseed.cfg
: