Linux引导101

对于Ubuntu 18.04

Linux引导101

文章插图
> Photo by Adi Goldstein on Unsplash
 
让我们从Wikipedia如何描述引导程序开始:
通常 , 自举通常是指自启动过程 , 应该在没有外部输入的情况下进行 。在计算机技术中 , 该术语(通常简称为引导)是指在开机后将基本软件加载到计算机内存中的过程 , 尤其是操作系统 , 然后该操作系统将根据需要负责加载其他软件 。
Linux引导101

文章插图
> The saying "to pull oneself up by one's bootstraps" was an old phrase referring to an impossible t
 
在linux中 , 典型的引导过程分为6个不同的阶段 。在这里 , 我尝试通过一些示例清晰地描述每个阶段 。在下面 , 您可以看到高级启动过程 。
Linux引导101

文章插图
> Typical booting processes
 
引导从BIOS开始 。什么是BIOS? 它代表"基本输入/输出系统" , 它是一个小程序 , 用于在可启动媒体(例如硬盘 , CD-ROM , USB等)上寻找引导加载程序 。
BIOS程序与OS完全独立 , 并且在执行任何其他引导过程之前执行 。它对CPU , 内存和其他存储设备执行简短的完整性检查 , 以确保系统可启动 。它还收集所有可用的可启动设备的列表 , 并根据其可配置的优先级列表开始启动它们 。如果无法启动设备 , 它将转到列表中的下一个设备 。例如 , 以下是启动优先级顺序列表的示例 。
Linux引导101

文章插图
> A list of available Bootable media. You can change this order as you wish.
 
在这些可启动媒体的每一个上 , 都有一个包含启动加载程序信息的小文件 。该文件称为主引导记录(MBR) , BIOS的工作是查找该文件并阅读说明以查找引导加载程序 。
MBR是一个非常小的文件(大小为512字节) , 位于可引导磁盘(例如硬盘 , USB等)的第一个扇区上 。该文件包含主引导程序 , 分区表和MBR验证检查的信息 。
第一部分 , 主引导加载程序 , 包含可执行代码 , 以用作已安装的OS的加载程序-由于其体积有限 , 通常用于将控制权传递给加载程序的第二阶段(GRUB) 。第二部分 , 分区表 , 包含有关在该介质上如何组织包含文件系统的逻辑分区的信息(例如 , 分区的数量及其类型) 。最后一部分是MBR验证检查 , 它是2个字节的签名(又称幻数) 。如果是(0x55 , 0xaa)(十六进制格式) , 则BIOS将尝试引导系统 。如果不是 , 那么您将从BIOS中收到一条错误消息 , 提示它找不到可引导磁盘 。
Linux引导101

文章插图
> Master Boot Record(MBR), which is always located at cylinder 0, head 0, and sector 1, the first se
 
BIOS找到引导加载程序后 , 便将引导程序代码加载到内存中 , 从而启动引导加载程序进程 。
在Ubuntu中 , 第二阶段的引导程序是GRUB 。它代表GRand Unified Bootloader , 它属于GNU项目 。
这是一个小型软件包 , 负责启动操作系统并了解文件系统 。如果您的计算机上安装了多个内核映像 , 或特定操作系统的多个配置 , 则GRUB允许您引导其中一个 。它显示一个启动屏幕 , 等待几秒钟 , 如果没有用户输入 , 则它将加载其配置文件中指定的默认内核映像 。在下面 , 您可以看到我的计算机上安装了许多内核映像 。您可以通过键入$ dpkg –list |查看列表 。CLT上的grep linux-image 。
Linux引导101

文章插图
> List of all available linux kernel images on my computer
 
Linux引导101

文章插图
> The default linux kernel on my computer.
 
对于每个操作系统或内核配置 , GRUB在其配置文件上都有一组说明 。该配置位于/boot/grub/grub.cfg中 。
Linux引导101


推荐阅读