[Linux] 系统启动流程和系统运行级别(复习笔记)

@Linux环境启动流程

1)加电自检(Power On Self Test,POST)
首先,计算机会加载BIOS,这是计算机上最接近硬件的软件
各家主板制造商都会开发适合自己主板的BIOS
BIOS中一项很重要的功能就是对自身的硬件做一次健康检查

2)引导系统
这个动作是BIOS设定的,BIOS默认会从硬盘上的第0柱面、第0磁道、第一个扇区中读取MBR,即主引导记录。
一个扇区的大小是512字节,存放的内容是一段引导程序(446字节)和分区信息(64字节是磁盘分区表DPT),最后两字节是MBR的结束位。
这512字节的空间内容是由专门的分区程序产生的,比如Linux下的fdisk命令
常见的方式是在MBR中写入Grub的地址 <= RedHat、CentOS默认会使用Grub作为其引导操作系统的程序,而Grub本身又比较大

3)运行Grub
Grub最重要的功能就是根据其配置文件加载kernel镜像,并运行内核加载后的第一个程序/sbin/init
这个程序会根据/etc/inittab来进行初始化的工作

4)系统初始化
Linux将根据/etc/inittab中定义的系统初始化配置
执行/etc/rc.sysinit脚本,该脚本将会设置系统变量、网络配置,并启动swap、设定/proc、加载用户自定义模块、加载内核设置等

5)根据第三步读到的runlevel值来启动对应的服务
如果值为3,就会运行/etc/rc3.d/下的所有脚本,如果值为5,就会运行/etc/rc5.d/下的所有脚本

6)运行/etc/rc.local

7)生成终端或X Window来等待用户登录

@系统允许级别

Linux默认有7个运行级别0~6

[root@xxx etc]# cat inittab
……
# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:
[root@xxx etc]#

系统在启动的过程中会根据/etc/inittab中的设定读取runlevel的数值X,并相应地读取和运行/etc/rcX.d(X代表0~6)下所有的脚本。

[root@xxx etc]# ls -ld rc*
lrwxrwxrwx.  1 root root    7 Sep  6  2016 rc -> rc.d/rc
lrwxrwxrwx.  1 root root   10 Sep  6  2016 rc0.d -> rc.d/rc0.d
lrwxrwxrwx.  1 root root   10 Sep  6  2016 rc1.d -> rc.d/rc1.d
lrwxrwxrwx.  1 root root   10 Sep  6  2016 rc2.d -> rc.d/rc2.d
lrwxrwxrwx.  1 root root   10 Sep  6  2016 rc3.d -> rc.d/rc3.d
lrwxrwxrwx.  1 root root   10 Sep  6  2016 rc4.d -> rc.d/rc4.d
lrwxrwxrwx.  1 root root   10 Sep  6  2016 rc5.d -> rc.d/rc5.d
lrwxrwxrwx.  1 root root   10 Sep  6  2016 rc6.d -> rc.d/rc6.d
drwxr-xr-x. 10 root root 4096 Dec 15 12:57 rc.d
lrwxrwxrwx.  1 root root   13 Sep  6  2016 rc.local -> rc.d/rc.local
lrwxrwxrwx.  1 root root   15 Sep  6  2016 rc.sysinit -> rc.d/rc.sysinit
[root@xxx etc]#

系统在启动过程中,会首先运行以K开头的脚本,全部运行完毕后再运行以S开头的脚本,在运行所有K开头的脚本时,又会严格按照K后面的数字大小依次来运行,也就是数字小的先运行,数字大的后运行。
K和S的意思分别是停止(kill)和启动(start)

[root@xxx etc]# cd rc5.d
[root@xxx rc5.d]# ls
K00ipmievd      K05pmproxy       K20tomcat6       K50snmpd       K75ntpdate         K87multipathd    S08ip6tables    S21fcoe              S28autofs          S85httpd
K00rgmanager    K05wdaemon       K30phc2sys       K50snmptrapd   K75quota_nld       K87restorecond   S10network      S22fcoe-target       S40edac            S90crond
K01cpglockd     K10psacct        K30spamassassin  K50vsftpd      K76clvmd           K88sssd          S11auditd       S22messagebus        S50bluetooth       S95atd
K01luci         K10saslauthd     K35dovecot       K60nfs         K76ypbind          K89rdisc         S11portreserve  S24nfslock           S50mcelogd         S97rhnsd
K01modclusterd  K10stinit        K35nmb           K65kadmin      K78dirsrv-snmp     K92iptables      S12rsyslog      S24rpcgssd           S55sshd            S97rhsmcertd
K01numad        K10tcsd          K35smb           K65kprop       K79cman            K95firstboot     S13cpuspeed     S25blk-availability  S56xinetd          S99certmonger
K01pacemaker    K15htcacheclean  K35tgtd          K65krb5kdc     K79dirsrv          K95rdma          S13irqbalance   S25cups              S58ntpd            S99collectl
K01ricci        K15svnserve      K35vncserver     K69rpcsvcgssd  K79ipa             K99oscap-scan    S13iscsi        S25ibacm             S60uuidd           S99libvirt-guests
K01smartd       K19pki-cad       K36mysqld        K73winbind     K80corosync        K99rngd          S13rpcbind      S25netfs             S70spice-vdagentd  S99local
K02oddjobd      K20bacula-fd     K40ptp4l         K74gfs2        K80sblim-sfcb      S01sandbox       S15mdmonitor    S26acpid             S80postfix
K05pmcd         K20rstatd        K45memcached     K74ipmi        K84NetworkManager  S01sysstat       S20cgdcbxd      S26haldaemon         S82abrt-ccpp
K05pmie         K20rusersd       K50dnsmasq       K74ipsec       K84wpa_supplicant  S02lvm2-monitor  S20kdump        S26udev-post         S82abrtd
K05pmlogger     K20rwhod         K50netconsole    K75cgconfig    K86cgred           S07iscsid        S20lldpad       S27pcscd             S85gpm
[root@xxx rc5.d]#

参考书籍:《Linux系统命令及Shell脚本实践指南》王军 著,1.5 系统启动流程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值