如何使用qemu在终端上运行非GUI操作系统?

问题描述 投票:0回答:4

我想在我部门的高性能计算机(带有8核处理器)上运行一些程序。现在我使用终端通过 ssh 来使用该机器。该机器上安装了 Red Hat linux。但我的程序需要在 Solaris 上运行。我使用适用于 x86 的 Nexenta Solaris。

可以使用 qemu 通过终端在该计算机上运行 Nexenta Solaris。我需要让管理员相信它可以,否则他不会在那台机器上安装 qemu,从而允许我通过虚拟机使用 Solaris。另请注意,我在 Nexenta Solaris 中不使用 GUI,仅使用命令行。在我的机器上,我使用VMware来运行它。

terminal solaris qemu
4个回答
79
投票

您可以自己编译qemu并将其安装到您的主目录中。不会有内核模式 qemu 加速器,但 qemu 会工作,而且速度会相当高。

Qemu 有两个非 GUI 启动选项: https://www.qemu.org/docs/master/system/qemu-manpage.html#hxtool-3

2.3.4 显示选项:

-nographic

  • 通常,QEMU 使用 SDL 来显示 VGA 输出。使用此选项,您可以完全禁用图形输出,以便 QEMU 成为一个简单的命令行应用程序。模拟串口在控制台上重定向。因此,您仍然可以使用 QEMU 通过串行控制台来调试 Linux 内核。

-display curses

  • 通常,QEMU 使用 SDL 来显示 VGA 输出。通过此选项,QEMU 可以在文本模式下使用curses/ncurses 界面显示VGA 输出。图形模式下不显示任何内容。

它还可以通过VNC协议将图形输出发送到另一台机器(

-vnc 
选项)


29
投票

Linux:

-append 'console=ttyS0'

除了 osgx 在评论中提到的

-nographic
之外,Linux 内核也需要该选项

qemu-system-x86_64 -append 'console=ttyS0' \
                   -initrd rootfs.cpio.gz \
                   -kernel bzImage \
                   -nographic \
                   -serial mon:stdio \
                   

现在您可以执行以下操作:

-append 'console=ttyS0'
使 QEMU 将
console=ttyS0
内核命令行选项 传递给 Linux,这告诉内核使用 串行端口 而不是显示器。串行端口在主机和客户机之间发送字符,而不是显示器上的像素,然后 QEMU 可以在终端上显示这些字符。

-serial mon:stdio
在这个最小命令中是可选的,但通常是一个好主意。例如,如果您稍后还想添加方便的
-monitor telnet
,它会改善行为:

这可以使用 Buildroot

qemu_x86_64_defconfig
轻松测试。我创建了这是一个高度独立且自动化的设置,让您可以轻松尝试此操作

相关但操作系统限制较少:

在 Ubuntu 18.04、QEMU 2.11.1 上测试。

FreeBSD

在那里也能工作:How to boot FreeBSD image under Qemu


7
投票

我已经为此苦苦挣扎了一段时间,终于找到了如何让它为我工作:

您需要安装SGABIOS。有趣的是,这个 BIOS 不包含在 debian qemu 软件包中,因此您需要安装它(作为超级用户):

apt install sgabios  

然后,当您运行 qemu 时,使用 -device 选项告诉虚拟机使用 sga 输出

qemu-system-i386 -nographic -device sga discimage.bin

瞧!通过 ssh 完美工作,监视器和文本输出都通过 stdio 发送。您可以使用 C-a c 访问 qemu 监视器。

干杯,本


-5
投票

os 终端无法运行 qemu。所以你应该在 Windows 电脑上使用 putty 或者你应该使用 linux 机器终端。

© www.soinside.com 2019 - 2024. All rights reserved.