1、先说ubuntu9.10的启动过程
目前我用的版本是这样的ubuntu9.10,并且是全新安装的,不是升级上来的,至于升级上来的,是不是这个样,那就不得而知了。
首先,明确的是,ubuntu9.10版和以前的版本的启动过程又不一样了。这在更新说明里有,因为在/etc目录下找不到event.d目录了,从网上搜关键字“ubuntu9.10”和“event.d”两个关键字就知道了,说是用/etc/init目录代替了,为了兼容。
在/etc/init目录下有rc脚本文件和rc_sysinit脚本文件,启动的脚本在rc_sysinit文件的可能性更大,大概浏览器一下这个文件,应该是在里面设定了系统的默认运行级别为2级,并且下一步的关键运行为/etc/rc2.d目录下的脚本文件了。
在/etc/rc2.d目录下,有如下两个类似文件99xmd和99wdm的脚本文件,大体翻阅了一下,其中,在这两个文件里面都涉及到了/etc/X11/default-display-manager这个文件,其大体意思就这样,看看这个文件里面启动的是哪个dm,如果返回false,则不启动x-window;如果不是false,则启动相应的dm程序。
目前,通过大体上浏览翻看这些脚本文件,再加上网上查阅的一些相关资料,只是猜测启动流程是这样的,还没有仔细的阅读这些启动脚本文件,主要是目前还没有很顺畅阅读shell脚本的能力。
实际上,至此,ubuntu基本上算启动完毕了,剩下的就是x-windo的启动了。
2、x-window的启动
主要由两种方式,startx和dm。
先说startx,在我的另一篇关于x-window的文章里也有所涉及。主要是用xinit来启动。
无非就是~/.xinitrc(x客户端),~/.xserverrc(x-server),/etc/X11/xinit/.xinitrc文件,/etc/X11/xinit/.xserverrc文件来分别启动x-client和x-server,服务端很好办,通过.xserverrc文件(两个位置的该文件,~目录下的文件优先级高)来启动/usr/bin/X程序,然后又调用了xorg程序,这中间还有xorg.conf文件的参与等,启动起x-server端了。 通过.xinitrc文件,可以得到调用了/etc/X11/Xsession脚本文件,其实最终转到了/etc/X11/xsession.d目录下,执行该目下的脚本,就会根据gonme的要求,启动桌面环境需要的程序了。
dm方式的启动流程:
本机的x-window启动是否应用了XDMCP (X Display Manager Control Protocol)协议目前还不清楚,但是跨网络的x-window的dm方式启动肯定是用了该协议。
首先是dm启动,并且在规定或公认的端口侦听,然后才是x-server的启动,这时的x-server的启动和上面的好像还不大一样,需要传进去某个特殊的参数,指示这个x-server去查询某地址某端口的dm,然后进行通讯,根据dm的要求显示登录画面,等待用户输入用户名和密码,并传给dm,由dm调用session相关的程序或脚本,然后才能建立起session,进而进入桌面环境。
3、需要注意的一点儿是:无论是startx(xinit)方式的x-window启动,还是dm方式的启动,都会调用Xsession相关的脚本或程序,因此,如果想针对桌面环境进行某项改动,最好的下手的地方应该是/etc/X11/xsession.d目录下的脚本了,或在这个目录下增加脚本。其实,两种x-window启动方式都会调用Xsession,在/etc/X11/Xsession脚本文件里的最开始的注释里有说明,同样,网上也可以查到相关的说明。
4、如果在ubuntu下安装了kde和xfce4桌面环境,会在/usr/bin/目录下有startkde和startxfce4启动脚本,这两个桌面环境具体是怎样的启动流程,目前还没研究呢,从这两个脚本中应该能找出来,目前,读起这两个脚本来有些吃力,放在以后,作为验证和巩固shell脚本的学习效果吧。