环境:debian 7.0
加载BIOS
1.从点击电源键开始,首先加载BIOS进行硬件检测,然后根据配置读取启动设备,然后读取Boot Loader ,linux中主流的boot Loader是grub。Boot Loader 安装在启动装置的第一个磁区内,也就是MBR(Master Boot Record 主要启动记录区)。
读取内核文件并启动服务
2.首先读取/boot下的内核文件,在核心加载完后,就会启动初始化进程,首先读取/etc/inittab 看到第一行是这样子的
1
|
id :2:initdefault: |
initdefault的值是2,表明系统启动的时候运行级别是2。(linux允许为不同的场合,配合不同的启动程序,这个就叫运行级别。)
debian 中各个运行等级如下:
1
2
3
4
|
0 (halt the system) 1 (single-user / minimal mode), 2 through 5 (multiuser modes), 6 (reboot the system) |
0,6分别表示关机和重启,这两个都是系统保留的,所以我们不能把启动等级设为这两个。run level 1 表示的是单人维护模式,用在系统出问题时的维护。run level 2~5 表示多用户模式。debian 默认的运行等级为2。
另外可以使用runlevel命令来查看当前运行等级。
1
|
runlevel |
上面第一个3表示之前的runlevel ,2表示当前的runlevel
使用init命令可以用来切换当前runlevel
1
|
init 3 |
还可以使用init 0 和init 6来执行关机或重启机器。
另外/etc/inittab 中设置了系统一系列的启动和配置流程。
3.然后执行初始化程序
每个运行级别在/etc目录下面,都有一个对应的子目录,指定要加载的程序,这里看下run level 2下都启动哪些初始化程序。
1
|
ls /etc/rc2 .d |
可以看到级别2都初始化运行了那些服务。
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
S01motd -> .. /init .d /motd S13rpcbind -> .. /init .d /rpcbind S14nfs-common -> .. /init .d /nfs-common S16rsyslog -> .. /init .d /rsyslog S17apache2 -> .. /init .d /apache2 S18acpid -> .. /init .d /acpid S18atd -> .. /init .d /atd S18cron -> .. /init .d /cron S18mysql -> .. /init .d /mysql S18pptpd -> .. /init .d /pptpd S18ssh -> .. /init .d /ssh S19exim4 -> .. /init .d /exim4 S20bootlogs -> .. /init .d /bootlogs S21rc. local -> .. /init .d /rc . local S21rmnologin -> .. /init .d /rmnologin |
上面中S表示启动参数为(start)这个S还可以是K表示启动参数为(stop)。数字表示的就是启动顺序。这些文件启动文件实际都是在/etc/init.d/下。/etc/rc2.d目录下只是放置连接文件。
也就是说如果我们想开机启动某个服务或者关闭某个服务的话,修改这个目录下的文件就可以了,但是不建议直接修改这个目录下的文件,可以同过sysv-rc-conf这个软件来修改。
在debian 下,首先安装sysv-rc-conf
1
|
apt-get install sysv-rc-conf |
安装后输入sysv-rc-conf 可以看到这个界面
X表示开机启动项,点击空格可以取消或者添加。如果想增加一项新的启动项,只需要在/etc/init.d/目录增加启动脚本,然后再执行sysv-rc-conf 进行设置即可。需要注意的增加的启动脚本必须要要有执行权限。
另外还有一点,注意到这个服务,/etc/rc.d/rc.local,如果需要自定义开机执行一些命令可以在这个本件里面添加。
用户登录
4.系统验证完用户的账号密码后,就登录成功了。登录成功之后就会去读入/etc/profile。如果是命令行登录和ssh登录的话,就会读取顺序读取下面三个文件
1
|
~/.bash_profile ~/.bash_login ~/.profile |
上面的三个文件,如果其中一个存在就不会读取下面的问价了。如果是图形界面登录,就只加载/etc/profile。和~/.profile。