MSDOS(MBR)方法
每一块磁盘的第一个扇区(0号扇区,大小512B),用来存储【硬盘分区表】和【引导装载程序】
其中64字节是用来存储分区表,446字节用来存储引导装载程序,剩余的两个字节用来存储结束标志(55AA,好像听说有利用直接将结束标志改掉来给磁盘进行简单加密,使磁盘无法被识别的办法,当然,我个渣渣也就是听听而已)
【硬盘分区表】:最多只记录四个分区信息,也就是只能是四个主分区(PPPP)或者不超过三个主分区和一个扩展分区(PPPE)
【引导装载程序】:在系统启东市将存储于硬盘上的系统启动程序加载到内存,再由系统启动程序进行硬件自检和各种系统服务的相继启动。
【四种分区类型】:
Swap分区:用于对换,虚拟内存,连续存取方式,不允许用户修改(废话)
主分区:最多四个
扩展分区:最多一个,可以没有
逻辑分区:只存在于扩展分区内,逻辑分区容量综合应该和扩展分区容量相同
【分区的文件名】:
P1:/dev/sda1
P2:/dev/sda2
L1:/dev/sda5
L2:/dev/sda6
…
注意:sda表示第一个硬盘,同理,sdb表示第二个
需要注意:逻辑分区从5开始
扇区的示意图如下所示,图片来源百度:
基于GUID的磁盘分区
将所有区块以LBA(logical block address逻辑区块地址)来规划,通常大小为512B
LBA0:和MBA类似,储存第一阶段的开机管理程序,在原本的分区表内,放入一个特殊标志的分区,表示磁盘是GPT格式。
LBA1:记录分区表本身的位置和大小,备份GPT的位置。
LBA2-33:总共可以有128笔分区记录,一个LBA可以记录四笔
但这种方式并不是所有的磁盘管理工具都能识别,也不是所有操作系统都可以读取,也不是所有硬件都能支持。
BIOS
CMOS:记录各项硬件参数的存储器
开机流程:
BIOS:开机主动执行,寻找能够开机的磁盘,读取MBR,之后交给MBR控制
MBR:加载核心文件
核心文件:开始操作系统的功能
注意:如果分区表为GPT格式,BIOS也可以从LBA0的MBR中读取,但是如果开机程序(即MBR中的程序)不认识GPT的话,那就无法加载操作系统核心文件,也就无法正常开机。
【UEFI】:C语言编写
多重引导
【boot loader】:
提供选单:用户可以选择不同的开机项目
载入核心文件
转交其他loader:将开机管理功能转交给其他loader负责
注意:开机管理程序除了可以安装在MBR之外,也可以安装在每一个分区槽的启动扇区中
注意:
每个分区槽都拥有自己的启动扇区(boot sector)
可开机的核心文件是放置在各分区槽中的
Loader只认识自己系统槽内的开机核心文件,和其他的loader
Loader可以将控制权转交给另外一个管理程序(loader)
挂载
利用一个目录当成进入点,将磁盘分区槽的数据放置在该目录下,通过进入该目录就可以进入该分区槽。
参考资料:
https://blog.csdn.net/byxdaz/article/details/80069758