帮你精通Linux:计算机是如何唤醒的?Linux启动过程

零、序言

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

一、启动过程概览

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

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

dmesg -H
帮你精通Linux:计算机是如何唤醒的?Linux启动过程

更具体的查看其行数

$ dmesg | wc -l
1024

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

二、Boot的词源考古

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

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

帮你精通Linux:计算机是如何唤醒的?Linux启动过程

牛津词典的解释是:

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

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

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

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

帮你精通Linux:计算机是如何唤醒的?Linux启动过程

三、BIOS(蚁量级的操作系统)

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

帮你精通Linux:计算机是如何唤醒的?Linux启动过程

2.1 唤醒BIOS

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

帮你精通Linux:计算机是如何唤醒的?Linux启动过程

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

帮你精通Linux:计算机是如何唤醒的?Linux启动过程


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

帮你精通Linux:计算机是如何唤醒的?Linux启动过程

2.2 BIOS是什么?

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

帮你精通Linux:计算机是如何唤醒的?Linux启动过程

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

帮你精通Linux:计算机是如何唤醒的?Linux启动过程


2.3 BIOS的工作

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

帮你精通Linux:计算机是如何唤醒的?Linux启动过程

四、头部引导记录

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

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

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

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

帮你精通Linux:计算机是如何唤醒的?Linux启动过程

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

帮你精通Linux:计算机是如何唤醒的?Linux启动过程

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

帮你精通Linux:计算机是如何唤醒的?Linux启动过程

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

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

Grub的界面如下:

帮你精通Linux:计算机是如何唤醒的?Linux启动过程

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

我们在前文中详细阐述了Linux的基本原则:一切皆是文件。帮你精通Linux:一切皆为文件的7大属性 ,Grub要从 /boot/grub/grub.cfg 文件中读取其配置。

帮你精通Linux:计算机是如何唤醒的?Linux启动过程

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

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

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

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

五、Grub的基本配置

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

帮你精通Linux:计算机是如何唤醒的?Linux启动过程

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

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

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

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

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

$ lsb_release -i -s
Ubuntu

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命令后,我们读到的信息:

帮你精通Linux:计算机是如何唤醒的?Linux启动过程


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

Good Luck!

展开阅读全文

页面更新:2024-06-06

标签:过程   计算机   鞋带   靴子   头部   输入输出   保安   主板   含义   界面   操作系统   硬盘   文件   系统   科技

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top