Linux系统启动流程

Linux系统启动流程_第1张图片

阶段1、POST

             (Power On Self Test) 开机自检、(Basic Input Output System) 基本输入 输出系统

             计算机通电(短路“PWR|POWER|GND"插针)之后,计算机会加载BIOS信息,对CPU、主板、内存、磁盘等器件进行检查,并提取硬件信息,按BIOS信息中的引导顺序(Boot Sequence),来选择首先去读取哪个磁盘信息。

----------------------------------------------------------------------------------------------------------------------------

阶段2、MBR

             (Mai Boot Record)主引导记录

             计算机将去读取第一个有MBR信息的磁盘。如第1个磁盘中的MBR已损坏,将不会读取第2个磁盘的MBR,如第1个磁盘中无MBR信息,将顺延读取第2个磁盘。

             MRB位于磁盘第0磁盘第一个扇区,为512字节。

             其中446字节-为主引导程序

                       将系统控制转给用户指定的并在分区表中登记了的某个系统。

             另外64字节-用于标记分区信息,每16个字节标记一个分区

                       主分区只能有四个,逻辑分区可以由多个,扩展分区只能有一个。

             最后2字节-用于标记该MRB信息是否有效


Linux系统启动流程_第2张图片

----------------------------------------------------------------------------------------------------------------------------

阶段3、boot loader

             Boot Loader 引导加载程序

             是在操作内核运行之前的一段小程序,用于初始化硬件设备,建立内存空间映射图,“营造”一个适合操作系统运行的环境,以便调用操作系统内核做好准备。

             Boot Loader类型(主要有以下几种,重点详介绍GRUB)

                       LILO:LInux LOader linux磁盘引导程序

                       GRUB:GRand Unified Bootloader 统一引导装载程序(LILO替代程序)

                                    stage1:执行MRB中的前446字节程序(为了引导stage2)

                                    stage1.5:识别文件系统,

                                    stage2: /etc/grub/grub.conf (底文有详解)


----------------------------------------------------------------------------------------------------------------------------

阶段4、Kernel 内核装载

              内核将解压压缩包里的内容,并将内核放置在内存之中,调用start_kernel1()函数。完成一下过程。

             1、设备探测

             2、驱动初始化(可能会从initrd文件中装载驱动模块)

             3、以只读挂载根文件系统

             4、装载第一个进程init (PID:1)

----------------------------------------------------------------------------------------------------------------------------

阶段5、VFS(initrd)

              内核挂载根文件系统的桥梁,用于解决内核要挂载根文件系统需先由文件系统驱动,根文件系统要提供驱动则先挂载根的问题。

               VFS (Virtual File System) 伪文件系统。使用cpio归档,含各主要目录,内核装载时由initrd来代替根文件系统提供一切的所需的动力,完成装载之后自我损毁。

              initrd目录中有nash脚本,作用如下

             1、驱动初始化

             2、加载内核模块

             3、挂载swap交换空间

             4、指定根文件系统的系统类型及放置于哪个盘区下

             5、以只读挂载根文件系统

----------------------------------------------------------------------------------------------------------------------------

阶段6、initrd(/etc/inittab,底文有详解)

             1、设定默认运行级别;

             2、运行系统初始化脚本(/etc/rc.d/rc.sysinit)、需要区别与内核初始化;

             3、运行指定运行级别对应的目录下的脚本(/etc/rc0.d-rc6.d)

             4、设定Ctrl+Alt+Del组合键的操作

             5、定义UPS电源故障/恢复时执行的操作

             6、启动虚拟终端(2345级别)

             7、启动图形终端(5级别)

----------------------------------------------------------------------------------------------------------------------------

阶段7、 /etc/rc.d/rc.sysinit

            1、激活udev和selinux 近200行

            2、根据/etc/sysctl.conf文件,来设定内核参数

            3、设定时钟

            4、装载键盘映射

            5、启用交换分区

            6、设置主机名

            7、根文件系统检测,并以读写方式重新挂载;

            8、激活RAID和LVM设备;

            9、启用磁盘配额

            10、根据/etc/fstab,并检查挂载其他文件系统

            11、清理过期的锁和PID文件

----------------------------------------------------------------------------------------------------------------------------

阶段8、 /etc/rc.d/rcX.d

            启动对应级别需要启动和关闭的程序(脚本)

            S表示启动 K表示停止,原则:开机时越早启动的,关机时越晚关闭,反之,避免依赖关系有所冲突。

----------------------------------------------------------------------------------------------------------------------------

阶段9、 /etc/rc.d/rc.local

            开机完毕前系统最后执行的一个脚本文件,为sh脚本

----------------------------------------------------------------------------------------------------------------------------

阶段10、 /bin/login

           执行/bin/login程序,打印出系统信息提示,并显示Login,输入正确账号和密码既能进入文件系统。

           显示信息由该文件提供: /etc/issue

           账号密码认证文件:/etc/nsswitch.conf 

           当显示账号、密码、属组显示使用类型为files时(有多种类型)

           账号认证将由/etc/passwd /etc/shadow /etc/group 三个文件的匹配

----------------------------------------------------------------------------------------------------------------------------

配置文件介绍

配置文件:/boot/grub/grub.conf

default=0                                                    # 设定默认启动的title的编号,从0开始

timeout=5                                                   # 等待用户选择的超时时长,单位是秒

splashimage=(hd0,0)/grub/splash.xpm.gz # grub的背景图片

hiddenmenu                                              # 隐藏菜单

password --md5 $1$HKXJ51$B9Z8A.X//XA.AtzU1.KuG.                   # grub编辑时,密码

title Red Hat Enterprise Linux Server (2.6.18-194.el5)                          # 内核标题或操作系统名称

root (hd0,0)                     # 内核文件所在的设备;对grub而言,所有类型硬盘一律hd,格式为(hd#,N);hd#, #表示第几个磁盘;最后的N表示对应磁盘的分区;

kernel /vmlinuz-2.6.18-194.el5 ro root=LABEL=/ rhgb quiet              # 内核文件路径,及传递参数

initrd /initrd-2.6.18-194.el5.img                                                                  #VFS(initrd)文件路径



配置文件:/etc/inittab

id:3:initdefault:                                                       #系统默认启动级别为3

si::sysinit:/etc/rc.d/rc.sysinit                              #系统初始化,执行rc.sysinit脚本


l0:0:wait:/etc/rc.d/rc 0                                         #系统登记为0时执行,将执行/etc/rc.d/rc0.d下的脚本

l1:1:wait:/etc/rc.d/rc 1

l2:2:wait:/etc/rc.d/rc 2

l3:3:wait:/etc/rc.d/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            #按下Ctrl+Alt+Del组合时,将关机

pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"     #断电时将采取关机


pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"


1:2345:respawn:/sbin/mingetty tty1                   #启动命令行终端,并在程序终止时,重新启动

2:2345:respawn:/sbin/mingetty tty2

3:2345:respawn:/sbin/mingetty tty3

4:2345:respawn:/sbin/mingetty tty4

5:2345:respawn:/sbin/mingetty tty5

6:2345:respawn:/sbin/mingetty tty6


x:5:respawn:/etc/X11/prefdm -nodaemon          #启动图形界面终端,并在程序终止时,重新启动

你可能感兴趣的:(Linux系统启动流程)