本文探讨从Linux启动直到进入xfce4会话之前的过程;和Xfce相关的内容需要单独进行说明。
从按下电源键到进入登录界面
不关心这些,不过可以参考这篇Arch的启动流程或者bootup(7)
。在这个过程中systemd启动时,还会启动各种服务诸如D-bus等,可以阅读systemd.service(5)
。
systemd启动的目标就是执行default.target
。为此它分析target文件所定义的依赖关系并从最开始解决它们,这些都可以从日志中的Reached target
相关内容查出。一般来说都是为了执行graphical.target
,此时启动显示管理器(比如lightdm)。在整个过程中(管他什么细节过程)所有被enabled的service也完成启动了。
那么话题就来到了lightdm本身的启动流程。LightDM的功能无外乎:
- 启动X服务器
- 运行Greeter(比如GTK greeter)以显示登录界面
- 调用PAM以完成登录动作,同时根据用户选择启动相应的会话
就目前来看,X服务器启动的位置是通过按Ctrl+Alt+F7
切换的,因为其启动在VT7、seat0……总之不关心这些。
登录后
登录之后,systemd会为用户创建会话。所谓的会话(Session)就是一个用户从登录进到登出的过程……
LightDM调用startxfce4,startxfce4则进一步启动xfce4-session。一般来说一次用户登录中只能启动一个session,再次启动xfce4-session时会提醒已经有一个Session manager在运行了。为此需要使用一些小技巧:
$ Xephyr -screen 1280x720 :2 & # 启动一个虚拟X会话并为其分配DISPLAY环境变量
$ su - somebody # 登入某个用户,可以是你自己
$ export DISPLAY=:2 # 将DISPLAY变量设为之前的
$ xfce4-session # 也可以是startxfce4
在设置完DISPLAY之后其实想启动什么图形界面程序都行,随心所欲,比如也可以单独启动xfdesktop之类的或者试试在没有窗口管理器的情况下会出现什么情况,但是重新登录一步必须要做;为了成功率起见可以不用su
登录,而是切换到某个TTY中登录,剩余的命令是一样的。
总之,在进行上述的命令行后,Xephyr启动的虚拟屏幕中已经出现了另一个xfce桌面,而我们的命令只是xfce4-session而已,说明是xfce4-session启动了xfce桌面。至于它是做什么的,具体又启动了哪些内容,就留到接下来的文章了。
标签:systemd,登录,启动,流程,xfce4,session,Xfce,漫游 From: https://www.cnblogs.com/notify-ctrl/p/18367543