1、在Linux内核被加载后,第一个运行的程序便是/sbin/init
该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。其中/etc/inittab文件最主要的作用就是设定Linux的运行等级,比如“:id:5:initdefault:”,这就表明Linux需要运行在等级5上。
2、init进程执行rc.sysinit
在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。
3、启动内核模块
具体是依据/etc/modules.conf文件或/etc/modules.d目录下的文件来装载内核模块。
4、执行不同运行级别的脚本程序
根据运行级别的不同,系统会运行/etc/rc.d/rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。其中0-6是启动级别。rcX.d中的文件都是软连接执行/etc/rc.d/init.d目录中,rcX.d中的文件名格式为S{number}{name} / K{number}{name},S开始的文件向脚本传递start参数,K开始的文件向脚本传递stop参数,number决定执行的顺序。
5、执行/etc/rc.d/rc.local
rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。
6、执行/bin/login程序,进入登录状态
此时,系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系统了。
7、执行/etc/profile
此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。
8、执行bash系列命令
执行 /etc/profile 文件之后,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个,不同的系统不一样。执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。如果 ~/.bash_profile文件存在的话,一般还会执行 ~/.bashrc文件。因为在 ~/.bash_profile文件中一般会有下面的代码:
if [ -f ~/.bashrc ] ; then
. ./bashrc
fi
而在~/.bashrc中,一般还会有以下代码:
if [ -f /etc/bashrc ] ; then
. /etc/bashrc
fi
所以,~/.bashrc会调用 /etc/bashrc文件。最后,在退出shell时,还会执行
~/.bash_logout文件。
执行顺序为:/etc/profile -> (~/.bash_profile |
~/.bash_login | ~/.profile) -> ~/.bashrc
->/etc/bashrc ->
~/.bash_logout