我有一台 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 用户bashrc
和xinitrc
文件负责从那里启动东西。该controller
进程是一个专有程序,负责启动 Totem 或标志应该显示的任何内容、终止进程等。
更高版本运行完全相同的进程,但不会抱怨 DBUS... 那么,我错过了什么?我在 Google 上尝试了所有关于设置变量等的方法,但没有任何效果。