万字详文干货:从无盘启动volumio看Linux启动原理( 三 )
配置正确 , 启动后就可以看到如下选择界面了:
文章插图
3. 分区:MBR 和 GPTipxe 完成使命后 , 正式交棒给磁盘 , 如果你是硬盘启动 , 可以直接跳过第 2 部分 , 直接到这一步 。 这一阶段系统需要从磁盘上找到启动文件并加载 。 在说如何找到启动文件前 , 先要说说硬盘是如何划分区块的 , 主要有两大方式 MBR 和 GPT 。 我们先来聊一下机械硬盘的工作原理 。
机械硬盘由坚硬金属材料制成的涂以磁性介质的盘片 , 盘片两面称为盘面或扇面 。
假设磁头不动 , 硬盘旋转 , 那么磁头就会在磁盘表面画出一个圆形轨迹并将之磁化 , 数据就保存在这些磁化区中 , 称之为磁道 , 将每个磁道分段 , 一个弧段就是一个扇区 。 一个硬盘可以包含多个扇面 , 扇面同轴重叠放置 , 每个盘面磁道数相同 , 具有相同周长的磁道所形成的圆柱称之为柱面 , 柱面数与磁道数相等 。 如下图:
文章插图
最初的寻址方式称为 CHS , 所谓 CHS 即柱面(cylinder) , 磁头(header) , 扇区(sector) , 通过这三个变量描述磁盘地址 。
3.1 MBR说了这么多还是没说明白到底计算机怎么从磁盘上找到引导程序 。 答案是:它被固定写死在了 0 柱面 , 0 磁头 , 1 扇区的位置通常是 512byte , 这个位置被称为主扇区(Master Boot Record ,MBR) 。
MBR 主要包含如下数据:
- 主引导记录(bootloader) , 负责从活动分区加载并运行系统引导程序 。 446 字节
- 硬盘分区表项(DPT——disk partition table) , 由四个分区表项组成 , 负责记录磁盘的分区情况 。 64 字节 。
- 硬盘有效标志(magic number) , 代表引导扇区结束 , 占用 2 字节 。
文章插图
Bootloader:这部分记录了一段较小引导代码 , 用于去启动硬盘其他分区位置上更大的引导文件 , 例如 linux 操作系统的 grub 目录 。
文章插图
我们知道一个硬盘的每个分区的第一个扇区叫做 boot sector , 这个扇区存放的就是操作系统的 loader 。 如上图 , 第一个分区的 boot sector 存放着 windows 的 loader , 第二个分区放着 Linux 的 loader , 第三个第四个由于没有安装操作系统所以空着 。 至于 MBR 的 bootloader 是干嘛呢 ,bootloader 有三个功能:
- 提供选单:让用户选择进入哪个系统 。
- 读取内核文件:默认启动的 loader 会被拷贝一份到 MBR 中 , 这样就可以直接读取内核了 , 图中 1 部分
- 转交给其他 loader:图中 2,3 部分
MBR 的局限:
- 最多只支持 4 个主分区 , 超过 4 个就需要使用扩展分区 。
- 磁盘的最大容量只能到 2.2TB
3.2 GPT为了解决 MBR 的问题 , GPT 分区诞生 , GPT 全称 Globally Unique Identifier Partition Table , 也叫 GUID 分区表 , 它是 UEFI 规范的一部分(但这并不是说它只支持 UEFI , 它也支持 BIOS 方式的引导) 。
文章插图
GPT 分区结构如下:
- Protective MBR:GPT 分区表的最前面部分也保存了和 MBR 相同的格式和内容称为 Protective MBR , 这极大地提高了 GPT 分区表的兼容性 。
- 主 GPT Header:这里记录了分区表项目数和每项目大小 。
- 主 GPT 分区表:包含分区的类型 GUID , 名称 , 起始终止位置 , 该分区的 GUID 以及分区属性
- 实际分区
- 备份 GPT 分区表: 用于提高安全性 , 防止主 GPT 分区表损坏
- 备份 GPT Header: 用于提高安全性 , 防止主 GPT Header 损坏
- AI芯片“点燃”北京!GTIC 2020 AI芯片创新峰会大咖演讲全干货
- 小店|抖音小店无货源模式,干货来了,抖音小店店群怎么做?
- GPU|干货|基于 CPU 的深度学习推理部署优化实践
- 干货:阿里巴巴提升组织能力的5大经典管理工具
- 搞定2020年路由器选购,家庭组网干货攻略
- 互联网创业思维:什么是真正的干货?你是怎么给“干货”下定义的
- 直播链接激情预告!GTIC 2020 AI芯片创新峰会明日见,18位产学研大牛干货满满
- 吸引流量模型分解|干货| 以对应亲密关系中
- 裂变活动|微信群裂变实操指南,史上最全干货
- 六大|B站六大能学到知识的UP主!纯干货分享,B站真的能用来学习!