36

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

可以使用 qemu 通过终端在该机器上运行 Nexenta Solaris。我需要说服管理员它可以,否则他不会在那台机器上安装 qemu,因此允许我通过虚拟机使用 Solaris。另请注意,我不使用带有 Nexenta Solaris 的 GUI,只使用命令行。在我的机器上,我使用 VMware 来运行它。

4

4 回答 4

54

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

Qemu 有两个非 gui 启动选项:http ://wiki.qemu.org/download/qemu-doc.html

2.3.4 显示选项:

-nographic

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

-curses

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

也可以通过VNC协议将图形输出发送到另一台机器(-vnc 选项)

于 2011-07-19T18:17:17.153 回答
18

Linux:-append 'console=ttyS0'

-nographic除了osgx 提到的之外,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 上测试。

自由BSD

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

于 2015-05-21T20:18:29.537 回答
6

我为此苦苦挣扎了一段时间,终于想出了如何让它为我工作:

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

apt install sgabios  

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

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

瞧!通过 stdio 发送的监视器和文本输出在 ssh 上完美运行。您可以使用 Ca c 访问 qemu 监视器。

干杯,本

于 2017-02-03T16:27:52.543 回答
-2

os 终端将无法使用 qemu。所以你应该在windows pc上使用putty或者你应该使用linux机器终端。

于 2020-05-11T21:53:13.853 回答