archlinux grub启动无win7_Linux第三课:计算机是如何被唤醒的?Linux开机引导和启动过程

序言

计算机的启动是个看似复杂实则很有意思的过程。当第一股电流涌入主板电路,就如清晨的第一缕阳光照进我们慵懒的双眼,唤醒头脑,唤醒身体。于是我们伸个懒腰,穿上衣服,提上鞋子,开启我们新的一天。计算机的启动与此异曲而同工,试看其英文单词 boot 正是‘提鞋’之含义。

b07f3a9fefe516ee61182baf1f677441.png

启动过程概览

Linux系统与某些操作系统的不同之处,或者其巨大优势之处,在于赋予用户近乎无限的权柄。计算机完全由用户掌控,万事万物皆可触可摸,可视可见。

就如我们本文即将详尽展开的启动过程,我们只需一条简单的命令便能尽收眼底。

dmesg -H
f234f3bf7fb850b53444b86bafce6555.png

更具体的查看其行数

$ dmesg | wc -l1024

合计有1024行这么多。虽然一览无余,读起来似乎并不容易。我们年轻的程序员,向自己的女朋友炫耀计算机修养的时候,不妨运行一番'dmesg -H',然后从容不迫的胡乱解释一通,想必也收获她些许崇拜的目光。

Boot的词源考古

如序言所叙,启动计算机的英文术语为 ‘boot’,查询词源词典可知 boot 是 1975年的新造词,源自1958年被赋予新鲜含义的单词 bootstrap。

9b3b7e6ba0a37a97efe780969369733f.png

那么 bootstrap 是什么含义呢?先来看看实物

7d938eb971951c602d0e7895bde18cf5.png

牛津词典的解释是:

A loop at the back of a boot, used to pull it on.

注意,bootstrap是靴子后面的拔鞋带,而非靴子前面的鞋带,‘拔鞋带’简称为‘提鞋’。因此‘启动计算机’就是‘提鞋’的过程。

有了‘提鞋’我们就能不假外力地穿上靴子,由此 bootstrap 的引申含义 "better oneself by rigorous, unaided effort" 也正是如此。

综上所述,启动计算机的过程,就是计算机不假外力,拉着 bootstrap,自己提上靴子。坠镫上马之后,计算机就要迈开脚步开始工作了。

48c811db55be2b771a6cf6c787e6596e.png

第一站:BIOS(蚁量级的操作系统)

倘若清晨的第一缕阳光单单投射在我们脚丫上,则万万不能够唤醒一个慵懒的身躯,必得照在眼睛上才会唤醒我们。第一股电流,流遍主板的全身之后,最后抵达BIOS所在芯片,于是计算机晃动着睡眼惺忪的身子,开始慢慢苏醒起来。

aa6031084f73daef9e9225447a7650ca.png

唤醒BIOS

BIOS是一段程序,嵌入在主板的芯片中(注意不是CPU中),正因为其固定在芯片中,因此又被称之为firmware(固件)。

e92af6a2fdf1dcba99d48ee00c76c716.png

从主板的全局查看其位置:

a79d0184ae5298738e983cd5a2c0b555.png

上电之后,我们眼睛所能看到BIOS是开机后按Option键等出现的蓝色屏幕:

230a6092872207a77ee78a15e530e330.png

BIOS是什么?

BIOS的英文全称为"基本输入输出系统"(Basic Input/Output System),不幸的是,这个全称对我们理解 BIOS 到底是什么似乎并无多少实质的帮助。但是请注意第一个单词 Basic,基本的初级的。与此相对应,那么‘高级的’是什么呢?启动计算机是要最终唤醒操作系统(linux或者Windows等),因此不难想到,‘高级的输入输出系统’自然就是Linux操作系统了。按照这个逻辑推导,既然 Linux Operating System 是 ‘高级输入输出系统(Advanded Input/Output System)’,那么 "基本输入输出系统"(Basic Input/Output System)就可以理解为‘蚁量级’的操作系统。

97824493ec1f5d2b445980d9843181b3.png

更进一步,启动计算机,首先是启动简陋的‘蚁量级’操作系统,接着在其带动下启动更加高级复杂的Linux系统。这就如启动车辆,我们并非如老式拖拉机一样手摇启动发动机,而是先启动电池,然后用电池打出的火花点燃油气,最终将发动机发动起来。

b40af6e94d0197f3bee6551a1e4454d5.png

BIOS的工作

BIOS发动起来便着手‘硬盘自检’(Power-On Self-Test),工作清单里包括检查CPU、内存、显卡等是否都正常。倘若硬件出现问题,主板会发出beep报警。没有问题,则会在屏幕打印出以上检查清单里所有项目的信息。

2408cd7e48394e16b94617be0ba9bfc5.png

第二站:头部引导记录

硬盘自检完成后,接着就要进入硬盘,因为操作系统就存储在硬盘里。

硬盘的头部位置称之为 MBR(Master Boot Record主引导记录,又叫头部引导扇区)。

这个称谓往往看得人一头雾水,表达的含义却很简单,就是硬盘的头部位置,硬盘的入口,硬盘的第0号扇区。

我们可以将硬盘想象为一家有四层办公楼的公司:

bccfb455bad6c50fe61c845149142727.png

院外的正门旁有保安室,此处的 MBR 就是保安室,是进入这家公司的第一站。

d8b1c5d0a8b8aaf8420f9fca9a30167c.png

MBR中的内容主要有两部分,一部分是启动代码,另一部分是硬盘的分区表。由于空间有限,只能写下4个分区的信息(也就是这家公司的四层楼),因此一块硬盘最多只能有4个主分区或扩展分区。

ace7d269cc9a3e559ec1f5e337fc39fd.png

坐在保安室(MBR)值班大哥会对来人发出三个终极哲学追问: “你是谁?”“你从哪里来?”“你要往哪里去?。这位保安大哥就是MBR的第一部分,名为'超级统一启动器' Grub (grand unified bootloader)。

名字中的关键词是 unified,所有的外来人都有这位保安大哥统一问询。之后决定要启动哪个操作系统?

Grub的界面如下:

053710f1dde42c6ea2a82b717f5c698b.png

上面的界面是如何显示出来的呢?

我们在第一课中详细阐述了Linux的基本原则:一切皆是文件,万物都为接口。Grub要从

/boot/grub/grub.cfg 文件中读取其配置。

1b89b3f41389e73485abe59eb86a3580.png

正是按照这个文件的指导,Grub显示出了上面的界面,包含以下内容:

1) 用户多少个选项,每个选项都是什么, 2) 背景如何,3) 等待多长时间等。

选择第一项则启动Ubuntu系统,选择最后一项就启动Windows系统。

到此启动过程就全部完结,操作系统开始从硬盘载入到内存,并打出登录界面。

Grub的基本配置

如果要修改 Grub 配置,我们不能直接对 /boot/grub/grub.cfg 文件下手,而要去修改一个便捷的版本 /etc/default/grub

6dfb8e5fc0a16bde20b0f89b2be17f3d.png

彩色标注的六行简要注释如下:

1) GRUB_DEFAULT=0 表示当前系统为默认系统,排在首位,

2) GRUB_HIDDEN_TIMEOUT_STYLE=hidden 隐藏倒计时界面

3) GRUB_TIMEOUT=0 表示不进行倒计时,不给用户选择的时间,直接进入默认的操作系统

4) GRUB_DISTRIBUTOR 显示操作系统的信息

$ lsb_release -i -sUbuntu

5) GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 是将内核的启动参数传给操作系统Linux,quiet是启动时不要打印任何信息。splash是显示启动画面。

6) GRUB_CMDLINE_LINUX=""也是启动参数,这一行设置的参数是说无论是什么启动模式,都会传给操作系统。

修改并保存之后,还要运行命令:

sudo update-grub

这样相关的修改才能落实到/boot/grub/grub.cfg文件中,被Grub看到。

总结

计算机的启动过程如同发动汽车引擎一样,不是通过大力出奇迹的方式,手摇转动沉重的发动机转子,而是经由灵巧的间接机制,最终撬动起操作系统。

即先唤醒一个‘蚁量级’的操作系统BIOS,运行硬件检测,核实装备清单;然后由Grub控制,选择进入合适的操作系统。

读罢本文,再来看看运行`dmesg -H`命令后,我们读到的信息:

da67b89edb208edc02e96443b810f279.png

上图中有BIOS的十几行,我们可以煞有介事的向对技术一窍不通的女朋友胡乱解说一气了。

Linux起手第三课完结,盼对你有点滴启发。

Linux起手第一课:一切皆是文件,万物都为接口

Linux起手第二课:万物皆为可循可查,诸事直如掌中手中

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值