【问题标题】:Cannot start MonoGame from SSH, but can from GUI无法从 SSH 启动 MonoGame,但可以从 GUI 启动
【发布时间】:2015-04-04 03:16:32
【问题描述】:

所以我想从我的 SSH 终端开始游戏。

它真的很奇怪,当我直接从我的 linux GUI 执行此操作时,它可以工作。但是当我使用 SSH 客户端从远处连接时,它就会崩溃。似乎与我的显示驱动程序有关。

Unhandled Exception:
System.TypeInitializationException: An exception was thrown by the type initializer for OpenTK.DisplayDevice ---> System.IO.DirectoryNotFoundException: Directory '/dev/dri' not found.
  at System.IO.Directory.ValidateDirectoryListing (System.String path, System.String searchPattern, System.Boolean& stop) [0x00000] in <filename unknown>:0 
  at System.IO.Directory.GetFileSystemEntries (System.String path, System.String searchPattern, FileAttributes mask, FileAttributes attrs) [0x00000] in <filename unknown>:0 
  at System.IO.Directory.GetFiles (System.String path, System.String searchPattern) [0x00000] in <filename unknown>:0 
  at System.IO.Directory.GetFiles (System.String path) [0x00000] in <filename unknown>:0 
  at OpenTK.Platform.Linux.LinuxFactory.CreateDisplay (System.IntPtr& gbm_device, System.IntPtr& egl_display) [0x00000] in <filename unknown>:0 
  at OpenTK.Platform.Linux.LinuxFactory.get_gpu_fd () [0x00000] in <filename unknown>:0 
  at OpenTK.Platform.Linux.LinuxFactory.CreateDisplayDeviceDriver () [0x00000] in <filename unknown>:0 
  at OpenTK.DisplayDevice..cctor () [0x00000] in <filename unknown>:0 
  --- End of inner exception stack trace ---
  at OpenTK.NativeWindow..ctor () [0x00000] in <filename unknown>:0 
  at Microsoft.Xna.Framework.OpenTKGameWindow.Initialize (Microsoft.Xna.Framework.Game game) [0x00000] in <filename unknown>:0 
  at Microsoft.Xna.Framework.OpenTKGameWindow..ctor (Microsoft.Xna.Framework.Game game) [0x00000] in <filename unknown>:0 
  at Microsoft.Xna.Framework.OpenTKGamePlatform..ctor (Microsoft.Xna.Framework.Game game) [0x00000] in <filename unknown>:0 
  at Microsoft.Xna.Framework.GamePlatform.Create (Microsoft.Xna.Framework.Game game) [0x00000] in <filename unknown>:0 
  at Microsoft.Xna.Framework.Game..ctor () [0x00000] in <filename unknown>:0 
  at TestGame.Game1..ctor () [0x00000] in <filename unknown>:0 
  at TestGame.Program.RunGame () [0x00000] in <filename unknown>:0 
  at TestGame.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: An exception was thrown by the type initializer for OpenTK.DisplayDevice ---> System.IO.DirectoryNotFoundException: Directory '/dev/dri' not found.
  at System.IO.Directory.ValidateDirectoryListing (System.String path, System.String searchPattern, System.Boolean& stop) [0x00000] in <filename unknown>:0 
  at System.IO.Directory.GetFileSystemEntries (System.String path, System.String searchPattern, FileAttributes mask, FileAttributes attrs) [0x00000] in <filename unknown>:0 
  at System.IO.Directory.GetFiles (System.String path, System.String searchPattern) [0x00000] in <filename unknown>:0 
  at System.IO.Directory.GetFiles (System.String path) [0x00000] in <filename unknown>:0 
  at OpenTK.Platform.Linux.LinuxFactory.CreateDisplay (System.IntPtr& gbm_device, System.IntPtr& egl_display) [0x00000] in <filename unknown>:0 
  at OpenTK.Platform.Linux.LinuxFactory.get_gpu_fd () [0x00000] in <filename unknown>:0 
  at OpenTK.Platform.Linux.LinuxFactory.CreateDisplayDeviceDriver () [0x00000] in <filename unknown>:0 
  at OpenTK.DisplayDevice..cctor () [0x00000] in <filename unknown>:0 
  --- End of inner exception stack trace ---
  at OpenTK.NativeWindow..ctor () [0x00000] in <filename unknown>:0 
  at Microsoft.Xna.Framework.OpenTKGameWindow.Initialize (Microsoft.Xna.Framework.Game game) [0x00000] in <filename unknown>:0 
  at Microsoft.Xna.Framework.OpenTKGameWindow..ctor (Microsoft.Xna.Framework.Game game) [0x00000] in <filename unknown>:0 
  at Microsoft.Xna.Framework.OpenTKGamePlatform..ctor (Microsoft.Xna.Framework.Game game) [0x00000] in <filename unknown>:0 
  at Microsoft.Xna.Framework.GamePlatform.Create (Microsoft.Xna.Framework.Game game) [0x00000] in <filename unknown>:0 
  at Microsoft.Xna.Framework.Game..ctor () [0x00000] in <filename unknown>:0 
  at TestGame.Game1..ctor () [0x00000] in <filename unknown>:0 
  at TestGame.Program.RunGame () [0x00000] in <filename unknown>:0 
  at TestGame.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0 

虽然我创建了一个 bash 脚本,然后它会调用自己的启动游戏的方法来完成这项工作,但不幸的是它会产生相同的结果。

基本上,当我在我的 linux GUI 中运行 SAME EXACT 命令时,游戏开始时没有问题,但是当我在我的 SSH 中从远处运行 SAME EXACT 命令时,游戏没有启动,它只是卡在那里。

mono /home/pi/.../game/TestGame.exe

我在树莓派上运行 Linux Raspbian。 我的树莓派连接在我的屏幕上。当插入我的键盘时,它会启动,当我使用 ssh 从我的另一台计算机上尝试时,它会崩溃并给出我们在此处看到的错误。

我将不胜感激。

非常感谢! 凯文

【问题讨论】:

  • 你在建立 ssh 连接时是否启用了 X 转发?
  • 我查看了我的 sshd_config 文件并启用了 x11 转发。我还使用 -x 参数连接到我的树莓派,但它没有帮助,同样的问题发生了:s

标签: linux ssh mono raspberry-pi monogame


【解决方案1】:

跟进我的发现,

如果你犯了这个错误,有两件事要看:

  1. 检查您是否在 SSH 终端中激活了 X11 转发。
  2. 键入这个神奇的行来告诉 SSH 使用哪个监视器。否则任何图形软件都会在启动时崩溃。

    导出 DISPLAY=:0

谢谢, 凯夫

【讨论】:

  • 您应该澄清这些是非此即彼的。 #1 将使游戏出现在您坐着并控制 ssh 的计算机上。 #2 将使游戏出现在 Pi 自己的 HDMI 输出上。
猜你喜欢
  • 1970-01-01
  • 2020-05-18
  • 2016-05-14
  • 1970-01-01
  • 2014-12-18
  • 1970-01-01
  • 1970-01-01
  • 2015-01-24
  • 1970-01-01
相关资源
最近更新 更多