我正在尝试在 Ubuntu 16.04 上设置自定义 xsession。我需要在启动 gnome-session 之前运行一些自定义设置。我已在 Ubuntu 12 上成功完成此操作,但移植到 16.04 会导致登录时出现空白屏幕。在跟踪发生的情况后,我发现当从中的子句gnome-session --session=ubuntu
以外的任何地方调用它时,它都会挂起。Exec=
/usr/share/xsessions/ubuntu.desktop
这可以通过创建脚本轻松演示
/usr/share/xsessions/start.sh:
gnome-session --session=ubuntu
并将Exec=
行改为/usr/share/xsessions/ubuntu.desktop
:
Exec=/usr/share/xsessions/start.sh
结果是,当您尝试登录时会话将挂起。gnome-session --session=ubuntu
正在启动,但它在某处挂起。
我是否遗漏了一些可能会妨碍这里的“apparmor”或其他安全魔法?
我不知道发生了什么。即使只是/usr/share/xsessions/ubuntu.desktop
将的名称更改为/usr/share/xsessions/my.desktop
(原始名称Exec=gnome-session --session=ubuntu
保持不变),也会导致 gnome-session 挂起。
非常感谢您的指点。
理查德
- - 更新
进一步挖掘表明,至少症状是,当使用工作配置时,以下进程正在运行,但在start.sh
使用脚本时不存在:
1 14628 14628 14546 ? -1 S 1000 0:00 /sbin/upstart --user
14628 14639 14638 14638 ? -1 S 1000 0:00 \_ upstart-udev-bridge --daemon --user
14628 14650 14650 14650 ? -1 Ss 1000 0:00 \_ dbus-daemon --fork --session --address=unix:abstract=/tmp/dbus-pVN8SJdGnw
14628 14662 14662 14662 ? -1 Ss 1000 0:00 \_ /usr/lib/x86_64-linux-gnu/hud/window-stack-bridge
14628 14691 14690 14690 ? -1 S 1000 0:00 \_ upstart-dbus-bridge --daemon --session --user --bus-name session
14628 14694 14693 14693 ? -1 S 1000 0:00 \_ upstart-file-bridge --daemon --user
14628 14695 14692 14692 ? -1 S 1000 0:00 \_ upstart-dbus-bridge --daemon --system --user --bus-name system
14628 14701 14650 14650 ? -1 Sl 1000 0:00 \_ /usr/lib/gvfs/gvfsd
我猜这指向了 systemd -> upstart 魔法中的一些东西。