CentOS 6的开机启动流程

在学习Linux内核之前,了解一些Linux的开机启动流程会对学习内核有一定的帮助。

第一步:BIOS

当我们按下电源时,计算机会自动读取主板中的“只读内存”(ROM)中的BIOS开机程序,BIOS中的程序开始进行开机前的自检(POST)行为,检测各硬件是否具有开机的条件。

第二步:MBR

当BIOS完成自检后,若计算机的硬件具有开机启动的条件,那么,此刻BIOS会从自身的boot sequence(引导顺序)中查找用于启动的设备。


image.png

如上图所示,BIOS会先从排在第一位的尝试着启动系统,若在此中找到了MBR的bootloader程序,则直接根据boot loader去引导相应的操作系统,并且交出计算机的控制权,若boot loader引导失败,则MBR不会访问第二个用于启动的设备,标志此次开机失败。

对于硬盘设备的MBR:
      446 byte :boot loader,引导程序
      64 byte  :分区表
      2  byte :0x55 和0xAA 
 后2byte若不是0x55 和0xAA ,则表明此设备无法用于系统启动,则BIOS按照boot sequence的顺序寻找下一个可用于启动的设备

第三步:boot loader

功能:boot loader是一段程序。它的作用是寻找设备分区中的系统内核,并将系统内核加载到内存中,进行加压、展开,并将控制权交给内核。

在linux系统中,常用的boot loader是grub,当设备上装载多个系统时,grub能够提供菜单,供用户选择加载某个特定的系统内核。更多关于grub的知识,我后面会总结。

注:
在CentOS 6中,内核的核心文件放在/boot的目录下。通常情况下,系统会将根文件系统挂载到LVM中,利于文件系统的扩展,而/boot目录挂载在普通格式的分区中。
原因:
grub中只有一些普通文件系统格式的驱动,并没有LVM的驱动。放在普通的分区中,grub能够读取内核的核心文件加载到内存中。

问题出现:
内核除了位于/boot目录下的核心文件,还有位于/lib/modules目录中的模块文件。当内核需要挂载位于LVM中的根文件系统时,因为没有驱动,无法挂载根文件系统。而LVM的驱动在根文件系统的/lib/modules目录下,这样就出现了要挂载根文件系统就必须加载驱动,但是驱动在文件系统中这样的鸡生蛋,蛋生鸡的矛盾问题。

第四步:kernel

上一步加载完普通分区中的内核核心文件到内存中运行时,内核会进行以下操作。

(1)、自身初始化 
(2)、探测可识别到的硬件设备
(3)、加载硬件驱动程序(此处可能会借`动程序)
 (4)、以只读式挂载根文件系统,加载后运行/sbin/init

在加载硬件的驱动程序这一过程中遇到了麻烦,为了保证linux内核容量的大小,所以内核中并没有编译进一些设备的驱动。那么此时,内核该如何加载那些驱动,并且访问相应的设备呢?

解决办法:
为了解决上一个步骤遗留下来的问题,在CentOS 6中,我们引入了initramfs。initramfs文件存放到/boot目录下,当grub加载内核的核心文件时,initramfs可以设置被一并加载。initramfs会成为一个虚拟文件系统,为内核访问其他设备提供了所需要的驱动程序。
例如访问根文件系统的驱动,这是内核就可以对根文件系统操作了。

第五步:init

在内核从initramfs中获得根文件系统的驱动后,会以只读的方式挂载根文件系统,接着启动第一个运行程序/sbin/init程序。程序启动后,会读取/etc/inittab和/etc/init/*.conf文件进行基本的设置。
根据/etc/inittab文件进行系统运行级别的设置。此处列出系统的运行级别

    0-6 : 7个级别
    0:关机
    1:单用户模式(root ,无需登录),single ,维护模式
    2:多用户模式,会启动网络功能,不会启动网络文件系统,维护模式
    3.多用户模式,正常模式,默认为文本界面
    4.预留级别
    5.多用户模式,正常模式,图形界面
    6.重启系统

第六步:启动服务

当第五步设定好运行级别后,相应级别目录中(/etc/rc.d/rc#.d/)的链接文件被读取。

链接文件名的含义:
  1、S、K分别代表start和kill
  2、数字代表开启或结束的顺序。一般先开启的会后结束,因为可能被其他服务所依赖。

各个运行级别的链接文件连接到/etc/init.d/下的每一个服务运行脚本。

第七步:启动终端,登录系统

在各服务均启动后,系统会读取/etc/rc.d/rc.local文本文件,进行登录前的最后设定。所以当有不便或不需写为服务脚本放置于/etc/rc.d/init.d/目录,且又想开机时自动运行的命令,可直接放置于/etc/rc.d/rc.local文件中。最后,/bin/login启动,出现登录界面。

最后一张图来总结Linux开机流程

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

推荐阅读更多精彩内容

  • 文/林梧梧 亲爱的母校,愿您花开不败; 亲爱的母校,愿您绿树长青; 亲爱的母校,愿您绚丽多姿; 亲爱的河大,祝您生...
    胖柿子阅读 319评论 2 0
  • 文/梵高的火柴 一个世界的两部分装饰了所有人的面目 没有什么是适合自己的 又有什么是不太衬自己的 相似的人阻挡了城...
    梵高的火柴阅读 241评论 1 1
  • 清大少儿主持培训中心招生啦! 关于清大少儿主持培训中心 清大:少儿主持培训中心是专注于...
    王金成阅读 226评论 0 0
  • 这就是一张图
    3d78bbfd02f1阅读 143评论 0 0