类似自助服务终端的机器出现 DBUS 错误

类似自助服务终端的机器出现 DBUS 错误

我有一台 Ubuntu 14.04.3 迷你电脑(带最新 v4 内核),用作数字标牌控制器。我有两个版本:一个是早期版本(有问题),另一个是最新版本(运行正常)。我正在尝试编写一个更新脚本/补丁,让一些早期版本(已投入使用)与最新/正常运行的版本同步。

对于早期和后期的单位,我最初安装了服务器Ubuntu 的版本。对于早期版本,我从 repo 安装了 Gnome 桌面环境以获得图形功能。但在后来的版本中,我从一开始就安装了 X-windows 和一个基本的窗口管理器(根本没有 Gnome)... 这是一次学习经历,我不想重构很多专有代码,所以不要笑得太厉害!

因此,对于早期版本的补丁/脚本,我习惯于apt-get删除并清除所有 Gnome 桌面环境,然后从 repo 重新安装 X 和 matchbox... 基本上,模仿我用来使更高版本运行的过程(就我的记忆而言)。不过,我似乎没有完全正确。

该设备应该可以显示 PowerPoint、播放视频、显示网页等。仅有的无法正常工作的是视频播放。为此,我构建了一个定制版本的 Totem/Gstreamer。早期设备和后期设备都运行完全相同的版本。我看到的问题是我的视频播放器崩溃了,以下内容进入 /var/log 中的 apport.log:

ERROR: apport (pid 3751) Fri Nov  4 12:17:24 2016: executable: /usr/bin/totem (command line "/usr/local/bin/totem --fullscreen --loop /home/kio/video/test.mp4
ERROR: apport (pid 3751) Fri Nov  4 12:17:24 2016: is_closing_session(): no DBUS_SESSION_BUS_ADDRESS in environment
ERROR: apport (pid 3751) Fri Nov  4 12:17:24 2016: apport: report /var/crash/_usr_bin_totem.1000.crash already exists and unseen, doing nothing to avoid disk usage DoS

更让我困惑的是,如果我以 root 身份通过 SSH 进入机器,导出 DISPLAY,然后手动打开 Totem,它就可以正常播放。只有通过以下过程打开时,它才会崩溃。

仅供参考,我有两个相关用户参与:root 和 kio。大多数事情都以 root 用户身份运行(我别无选择,只能避免重构所有这些继承的代码),但机器的安全性足够好,所以请不要再说教了!:)

以下是一些相关流程:

root      1334  0.0  0.1  14540  2112 tty1     Ss+  12:16   0:00 /sbin/getty -8 38400 tty1
root      1373  0.0  0.2  21092  4992 tty2     S+   12:16   0:00 -bash
root      1389  0.0  0.0  16004   936 tty2     S+   12:16   0:00 xinit -- -nocursor
root      1390  0.0  2.2 151812 44500 tty7     S<s+ 12:16   0:03 X :0 -nocursor
root      1394  0.0  0.4  86064  8800 tty2     S    12:16   0:00 matchbox-window-manager
root      1652  0.0  0.3  30976  6244 tty2     S    14:00   0:00 /home/kio/bin/controller
root      2759  0.0  0.1  61680  3216 tty2     S    14:00   0:00 su kio -c /usr/local/bin/totem --fullscreen --loop "/home/kio/video/test.mp4" 
kio       2760  4.0  0.8 308236 17612 ?        Ssl  14:00   0:00 /usr/local/bin/totem --fullscreen --loop /home/kio/video/test.mp4

另一个仅供参考...如您所见,我只需让 TTY 自动以 root 身份登录,然后 root 用户bashrcxinitrc文件负责从那里启动东西。该controller进程是一个专有程序,负责启动 Totem 或标志应该显示的任何内容、终止进程等。

更高版本运行完全相同的进程,但不会抱怨 DBUS... 那么,我错过了什么?我在 Google 上尝试了所有关于设置变量等的方法,但没有任何效果。

相关内容