Linux系统启动流程

阶段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信息是否有效


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

阶段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          #启动图形界面终端,并在程序终止时,重新启动

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容