Linux_006. 操作系统启动过程

不错的文章:https://blog.csdn.net/weixin_40720202/article/details/90166825


MBR(MS-DOS)与GPT——两种磁盘分区表(partition table)格式

  • MBR分区表

硬盘0磁道的第一个扇区存放MBP和partition table,这个扇区的大小通常是512字节。

主引导记录(MBR,Master Boot Record):占据硬盘 0 磁道的第一个扇区,前 446 个字节安装启动引导程序(boot loader)的地方;之后的 64 个(16×4)字节的空间,就是存储的分区表(Partition table)相关信息。

分区表(partition table):记录磁盘分区状态,每个分区表大小为16个字节,所以在一个硬盘上最多可以划出4个主分区。

du命令和df命令的区别

有时我们会发现,使用 du 命令和 df 命令去统计分区的使用情况时,得到的数据是不一样的。那是因为df命令是从文件系统的角度考虑的,通过文件系统中未分配的空间来确定文件系统中已经分配的空间大小。也就是说,在使用 df 命令统计分区时,不仅要考虑文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经删除,但是程序并没有释放空间)。

而 du 命令是面向文件的,只会计算文件或目录占用的磁盘空间。也就是说,df 命令统计的分区更准确,是真正的空闲空间。

 

 

  • GPT(GUID partition table)磁盘分区表

过去一个磁盘扇区的大小为512 B(Byte),随着4K扇区设计出现,为了兼容所有的磁盘,在扇区的定义上面,大多会使用所谓的逻辑区块地址(Logical Block Address,LBA)来处理。

GPT将磁盘所有区块以LBA(默认512B)来规划,而第一个LBA称为LBA0(从0开始编号)。GPT使用34个LBA区块来记录分区信息。

LBA0(MRP兼容区块):分为两部分,一部分446B存储安装引导程序;另一部分仅放入一个特殊标志符,用来表示此磁盘为GPT格式之意。

LBA1(GPT 表头记录):记录了分区表本身的位置与大小,同时记录了备份用的GPT分区放置的位置。

LBA2-33(实际记录分区信息处):每个LBA大小为512B,记录4组分区记录,每组分区记录占128B;32个LBA可以存储32*4=128组分区记录。GPT在每组记录中分别提供了64位来记载开始/结束的扇区号码,因此GPT分区表对于单一分区来说,它的最大容量限制在2^(64) * 512字节=2^(63) * 1K字节=2^(33) * TB=8ZB

 


给硬盘分区

在 Linux 中有专门的分区命令 fdisk 和 parted。其中 fdisk 命令较为常用(不支持GPT),但不支持大于 2TB 的分区;如果需要支持大于 2TB 的分区,则需要使用 parted 命令,当然 parted 命令也能分配较小的分区。

格式化分区(为分区写入文件系统)

分区完成后,如果不格式化写入文件系统,则是不能正常使用的。使用 mkfs 命令对硬盘分区进行格式化。

 


主机系统加载硬件驱动方面的程序,主要有早期的BIOS与新的UEFI两种机制

  • BIOS(Basic input output system)搭配MBR/GPT的启动流程

BIOS:写入到主板的一个固件
CMOS:记录各项硬件参数且嵌入在主板上面的存储器

启动流程:

  1. BIOS:自动启动,根据用户设置寻找启动硬盘,并到该硬盘里面去读取第一个扇区的MBR位置
  2. MBR:第一个可启动设备的第一个扇区内的主引导记录块,内含启动引导代码,目的是加载内核文件
  3. 启动引导程序(boot loader):一个可读取内核文件来执行的软件
  4. 内核文件:开始启动操作系统

 


  • UEFI(Unified extensible Firmware Interface) BIOS搭配GPT启动的流程


1. SEC阶段:
SEC(安全性)阶段其主要的特色為「cache as RAM」,即处理器的快取当成记忆体。由於C语言需要使用堆叠,在这个阶段的系统记忆体尚未被初始化,在没有记忆体可用的情况下,便把处理器的快取当成记忆体来使用,在主记忆体被初始化之前来进行预先验证CPU/晶片组及主机板。
因為这时侯没有快取,会导致处理器的效能变得较差,所以在记忆体初始化完毕之前,SEC和PEI阶段的程式码越简短,越能减少这个副作用。
2. PEI阶段:
和传统BIOS的初始化阶段类似,PEI(EFI前初始化)阶段是用以唤醒CPU及记忆体初始化。这时候只起始了一小部分的记忆体。同时,晶片组和主机板也开始初始化。接下来的服务程式会确定CPU晶片组被正确的初始化,在此时,EFI驱动程式派送器将载入EFI驱动程式记忆体,进入了起始所有记忆体的DXE阶段(驱动程式执行环境)。
3. DXE阶段:
DXE的主要功能在於沟通EFI驱动程式及硬体。也就是说此阶段所有的记忆体、CPU(在此是指实体两个或以上的非核心数目,也就是双CPU插槽处理器甚至是四CPU插槽处理器)、PCI、USB、SATA和Shell都会被初始化。
4. BDS阶段:
在BDS(开机设备选择)这个阶段,使用者就可以自开机管理者程式页面,选择要从哪个侦测到的开机设备来啟动。
5. TSL阶段:
然后进入TSL(短暂系统载入)阶段,由作业系统接手开机。除此之外,也可以在BDS阶段选择UEFI Shell,让系统进入简单的命令列,进行基本诊断和维护。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值