Ubuntu 14.04系统启动顺序回顾

产品在lightDM的配置中设置了Hook,通过session-setup-script调用了一个脚本,然后在脚本中启动软件。

但这两天遇到一个问题:开机时偶发软件无法启动,日志跟踪发现,在脚本中启动软件时文件不存在。看日志发现有以下错误:

Ubuntu 14.04系统启动顺序回顾而sda6正在软件所在的分区。

 

于是进一步查看分区挂载配置,在/etc/fstab中发现竟然把sda6的挂载注释掉了,然后再进一步确认发现sda6的挂载操作放在了/etc/rc.local中通过mount指令执行了。具体原因不明,可能是有什么故事。我把/etc/fstab中的挂载项打开,再次重启就没有上述错误日志了,看来问题确实与这个挂载顺序有关。

 

那么,/etc/fstab中的设置是在什么时候生效的呢,准确地说应该是分区挂载是在什么时候发生的?趁着这个机会,又把系统的启动流程温习一遍(下图转自网络)。

Ubuntu 14.04系统启动顺序回顾

其中,内核初始化会启动进程号为1的init进程,init进程会触发分区挂载事件,最后才是rc初始化(下图转自网络):

Ubuntu 14.04系统启动顺序回顾

 

那作为lightDM的Hook,脚本是什么时候执行的呢?

首先看一下/etc/init/lightdm.conf,可以看到lightDM启动的前置条件之一是分区加载完成:

Ubuntu 14.04系统启动顺序回顾

 

至此,基本比较清晰了。