linux启动过程

环境: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 可以看到这个界面
  linux启动过程
      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。

你可能感兴趣的:(linux)