我尝试在安装的 CentOS 7 上运行 OpenFOAM 2.3.1,在 Windows 7 计算机上由 Oracle VM VirtualBox 托管的虚拟机内运行。我不想使用任何远程隧道、SSH 等,它都是本地的。事实证明,这次演习是灾难性的。
startx
开始调出 gnome 界面,并显示“首次安装”窗口。然而,在虚拟机中,GUI 会忽略所有输入,实际上我所能做的就是终止并重新启动虚拟机。甚至 Ctrl+Alt+F2 等也不会切换到其他终端。
使用 Paraview 或xhost
命令行上的其他任何东西,无论我将变量导出为什么DISPLAY
,结果都是:
xhost: unable to open display "localhost:0.0"
或者
xhost: unable to open display
或任何$DISPLAY
回报。
我实际上想知道的是系统可能被破坏的方式是什么,在技术堆栈中到底要寻找什么作为故障证据,任何设置存储在哪里,以及哪些东西很可能是关键让这个工作。
- 机器操作系统:Windows 7 Professional
- 虚拟机管理器:Oracle VM VirtualBox Manager 5.2.18
- 虚拟化操作系统:CentOS 7 3.10.0-862.14.4.el7.x86_64
- OpenFOAM版本:2.3.1
更新1:
原来是xterm没有安装。我曾经yum install xterm
尝试过跑步xinit
。有一个新行为,一个仅 xterm 可见的 GUI 窗口。同样,不接受任何输入。我现在必须重新启动机器。
更新2:
尝试重新安装 VBoxLinuxAdditions.run 内核构建显示“错误:内核配置无效”。
答案1
“无输入”的问题可能很简单,就像没有安装正确的鼠标驱动程序一样。 VirtualBox 在这里抛出了一点曲线球,因为它可能将虚拟机的鼠标表示为绘图板设备,为了更好地处理诸如将鼠标光标移出虚拟机控制台窗口左侧时的情况,将其移动绕过窗户,然后回到右侧。普通鼠标无法像这样“跳跃”,但平板电脑设备可以。我认为这是由xorg-x11-drv-evdev
RPM 包处理的。
如果您没有安装 X11 鼠标驱动程序,鼠标光标可能会卡在默认位置。如果您使用 plain xinit
,则至少必须将鼠标光标放在窗口上以将其聚焦:如果您不能这样做,则情况可能会显得所有输入都被忽略。
Control-Alt-F1 不起作用的问题可能就像 Windows 窃取所有包含 Alt 作为菜单快捷方式的按键一样简单,因此您的按键甚至可能无法完好无损地到达 VirtualBox,更不用说虚拟机了。使用虚拟机,建立基本网络可能是最简单的,这样您就可以在另一个窗口中与虚拟机建立 SSH 连接,同时尝试让控制台 X11 图形正常工作。
在您的另一个问题中,您说日志中没有任何内容 - 真的吗? X11 GUI 事务中的主要日志文件是/var/log/Xorg.0.log
.如果其中没有任何内容,请确保您的文件系统还有一些可用空间。 X11 GUI 系统在启动 X 服务器时需要编写一些小文件,在启动用户会话时需要编写更多一些文件,如果不能做到这一点,它通常会表现得非常糟糕。
Paraview - 或任何其他 X11 GUI 应用程序 - 将尝试连接到变量指定的 X 服务器DISPLAY
。如果冒号字符前有主机名,则此连接将作为 TCP 连接建立到端口号,端口号的计算方式为(显示号 + 6000)。因此,如果您指定DISPLAY=localhost:0.0
并且没有 X 服务器侦听本地 TCP 端口 6000,则它不会工作。
现代 Linux X 服务器通常不会侦听 TCP 端口,除非您专门启用旧式的、极其不安全的远程 X11 访问。你不想那样做。
相反,当您DISPLAY=:0.0
不指定任何主机名时,UNIX 套接字将用于与本地 X 服务器通信:具体来说,显示 0 的套接字预计位于/tmp/.X11-unix/X0
。这本质上可以防止远程攻击,并允许多个仅限本地的 X11 协议扩展,从而实现更高效的图形渲染。
xinit
是启动真正的 X11 会话的绝对最低级工具。正如您所看到的,它的默认设置是启动一个绝对简单的 X11 会话,该会话仅适用于诊断,而没有其他好处。startx
是一个包装器xinit
,默认情况下提供更有意义的用户会话:它使用配置为默认 GUI 桌面环境或窗口管理器的任何内容。在 CentOS 中,默认值可能是 GNOME...假设您已经安装了它。您应该gnome-session
安装 RPM 及其依赖项。