您的位置:首页 > 运维架构 > Linux

深入浅出:linux的启动流程解析

2015-05-05 15:07 357 查看
linux的启动过程,是一个Linuxer必须要熟练掌握的。通过系统的启动过程,可以更深入的理解Linux,假如linux系统出问题的话,可以通过启动过程来分析原因,解决问题。而且,在掌握了linux的启动流程后,还可以借助宿主机来打造自己的Linux。

下面是我画的一张简单的Linux启动流程图:



在了解启动流程之前,我们应该先知道系统的几个重要脚本和配置文件,他们对应的路径为:

1. /sbin/init

2. /etc/inittab

3. /etc/rc.d/rc.sysinit

4. /etc/rc.d/rcN.d //这是几个文件夹N代表数字1,2,3,4..

5. /etc/fstab

1.关于/sbin/init与/etc/inittab

关于/sbin/init ,它是一个二进制可执行文件,为系统的初始化程序,而/etc/inittab是它的配置文件,我们可以通过/etc/inittab来一睹 它的功能, 里面的内容是一种固定的文本格式,id:runlevels:action:process

我们来通过它的内容来学习它之前,先了解写运行级别的分类(0-6):

0: 关机 half

1: 单用户模式 singel user

2: 多用户模式 multi user , 不提供nfs服务 without nfs

3: 完全多用户字符模式 full multiuser text mod

4: 系统预留 officially undefined

5: 图形登录界面 graphical login

6: 重启 reboot
id:3:initdefault:                                 //这里定义linux的启动时的运行级别,可以看到我的主机的启动级别是3
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit                  //紧接着,运行系统第一个脚本/etc/rc.d/rc/sysinit
//它的action:sysyinit指的是定义系统初始化过程
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2                  //然后就是加载服务了,他们被定义在/etc/rc.d/rcN.d
l3:3:wait:/etc/rc.d/rc 3                  //action:waite 这个进程在在对应级别启动一次,知道它结束为止,我的系统启动级别为3,所有执行rc 3对应的服务
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

ca::ctrlaltdel:/sbin/shutdown -t3 -r now        //这里定义了一个组合快捷键,熟悉吧,没错就是重启,你可以把它注释掉不用
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"  //这里定义了ups电源,powerfail 指的是如果突然断电,它对应的process命令是,提                                                                                示用户系统电源失效,将要关机,提醒用户把数据都存储好
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"  //这里的action,powerokwaite,指的是系统恢复供电,关机取消...


2. 关于etc/rc.d/rc.sysyinit 和 /etc/rc.d/rc.Nd
在inittab文件中,我们了解到rc.sysinit是系统运行的第一个脚本,那么它的作用都有哪些呢?如果有shell脚本基础的话可以用vim打开这个文件来看看,它有900多行...是linux里最牛的脚本,总结下它的作用,有如下几点:(一定要牢记,必要时我们要重写它!
1. 激活udev和selinux
2. 通过读取/etc/sysct1.conf来设置内核参数
3. 设置系统时钟
4. 设置键盘映射
5. 启动交换分区。
6. 设置主机名
7. 检查跟文件系统,并且如果没有错误,以读写的方式来重新挂载文件系统 (重要)
8. 激活raid和lvm设备
9. 启动磁盘限额
10 挂载其他/etc/fstab里定义的尚未被挂载的设备
11. 清理过时的文件锁和PID文件
12. 启动服务/etc/rc.d/rcN.d

/etc/rc.d/rcN.d 是一个存放了系统启动是加载的服务的文件夹,通过inittab,我们知道了,它的编号对应相应的启动运行级别。
需要说明的是,它里面的文件,以我的为例 以K开头的代表stop,以S开头的代表启动start,数字越小,有限级别越高。

[root@server69 rc.d]# cd rc3.d
[root@server69 rc3.d]# ls
K01dnsmasq         K74nscd             S08ip6tables    S25bluetooth   S85gpm
K02avahi-dnsconfd  K85mdmpd            S08iptables     S25netfs       S90crond
K02NetworkManager  K87multipathd       S08mcstrans     S25pcscd       S90xfs
K05conman          K88wpa_supplicant   S10network      S26acpid       S95anacron
K05saslauthd       K89dund             S11auditd       S26apmd        S95atd
K10psacct          K89netplugd         S12restorecond  S26haldaemon   S97rhnsd
K20nfs             K89pand             S12syslog       S26hidd        S97yum-updatesd
K24irda            K89rdisc            S13irqbalance   S28autofs      S98avahi-daemon
K35vncserver       K99readahead_later  S13portmap      S50hplip       S99firstboot
K35winbind         S00microcode_ctl    S14nfslock      S55sshd        S99local
K50ibmasm          S02lvm2-monitor     S15mdmonitor    S56cups        S99smartd
K50netconsole      S04readahead_early  S18rpcidmapd    S56rawdevices
K69rpcsvcgssd      S05kudzu            S19rpcgssd      S58ntpd
K73ypbind          S06cpuspeed         S22messagebus   S80sendmail


3./etc/fstab文件
它定义了系统初始化挂载的设备,对系统的启动至关重要,rc.sysinit通过读取它来实现系统分区的挂载
它的内容如何呢?我们一起来看下
要挂载的设备 挂载点 文件系统类型 挂载选项 转储频率 文件自检次序

/dev/sda2               /                       ext3    defaults        0 0
/dev/sda1               /boot                   ext3    defaults        0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

我截取了4个系统启动时必须挂载的设备

/ 根文件目录,由它你才可以进入linux的世界,它在/dev/sda2里
/boot 启动目录,在/下,里面有grub,initrd和系统内核,它在/dev/sda1
sysfs 一个虚拟的文件系统,产生包含所有硬件层次视图,和/proc类似
proc 这是一个虚拟的目录,它映射内存里的信息对应进程信息,也就是说它对应的是内存而不是硬盘
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux