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

Terminal 如何使用qemu在终端上运行非gui操作系统?,terminal,solaris,qemu,Terminal,Solaris,Qemu,我想在我所在部门的高性能计算机(带8核处理器)上运行一些程序。现在,我使用ssh和终端来使用这台机器。机器上安装了Red Hat linux。但是我的程序需要在Solaris上运行。我将Nexenta Solaris用于x86 qemu可以通过终端在该机器上运行Nexenta Solaris吗。我需要说服管理员它可以,否则他不会在那台机器上安装qemu,因此允许我通过虚拟机使用Solaris。还要注意的是,我并没有在NexentaSolaris上使用GUI,只使用命令行。在我的机器中,我使用VM

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


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

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

Qemu有两个非gui启动选项:

2.3.4显示选项:

-nographic

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

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

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

Linux:
-append'console=ttyS0'

除了osgx提到的
-nographic
之外,Linux内核还需要该选项,如:

qemu-system-x86_64 -append 'console=ttyS0' \
                   -initrd rootfs.cpio.gz \
                   -kernel bzImage \
                   -nographic \
                   -serial mon:stdio \
                   
现在,您可以执行以下操作:

  • Ctrl+A X:退出qemu,请参见:
  • Ctrl+C:传递给来宾
-append'console=ttyS0'
使QEMU将
console=ttyS0
传递给LInux,这告诉内核使用一个而不是显示。串行端口在主机和客户机之间发送字符,而不是在显示器上发送像素,然后QEMU可以在终端上显示这些字符

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

这可以通过Buildroot
qemu\u x86\u 64\u defconfig
轻松测试。我创建了一个可以让您轻松尝试的

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

在Ubuntu 18.04、QEMU 2.11.1上测试

FreeBSD


它也在那里工作:

我为此奋斗了一段时间,终于找到了让它为我工作的方法:

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

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

qemu-system-i386 -nographic -device sga discimage.bin
瞧!在ssh上完美地工作,监视器和文本输出都通过stdio发送。您可以使用C-AC访问qemu监视器


干杯,本操作系统终端将无法工作。因此,您应该在windows pc上使用putty,或者应该使用linux机器终端。

诅咒是美丽的:是的,
-curses
通过ssh工作,而-nographic只是挂起。qemu的原始诅咒补丁,2005:“[qemu-devel]qemu诅咒驱动程序”来自:andrzej zaborowski日期:2005年12月10日“当qemu运行时”-curses“它显示当前终端中的所有内容,无论是本机控制台、linux帧缓冲区、xterm还是通过ssh运行,将呈现字符的任务留给终端…”。只要虚拟图形适配器处于文本模式,此功能就可以工作。“这方面的速度可能会晚一些,但根据我使用QEMU为旧CPU编译一些客户代码的经验,我的即时估计是CPU和内存性能会降低大约一个数量级,而IO性能不会受到太大影响。通常需要10分钟左右的编译可能需要一个小时r或两个。因此,性能取决于您的工作负载。但它确实工作正常。什么是
-kernel bzImage
?@falspocket它是许多可能的Linux内核构建输出之一,请参阅:这里有一个。模拟dos呢?如何将输出重定向到cli?@beppe9000您是指MS-dos吗?它极有可能是lso支持串行,因为它是一种通用硬件,您只需要深入了解他们的文档,了解如何告诉它使用所需的串行。如果QEMU有一个类似DOS的
-append
。我只需要问一个关于它的单独的具体问题并链接到它。仅供参考:sgabios在最近的debian中不再是一个单独的包。这不是真的,请参阅其他答案。
qemu-system-i386 -nographic -device sga discimage.bin