让我们看一下文件/boot/boot0 。这是一个仅512字节的小文件 。如果在FreeBSD安装过程中选择“bootmanager,这个文件中的内容将被写入硬盘MBR 如前所述,INT 0x19指令装载MBR,也就是boot0的内容,至内存地址0x7c00 。再看文件sys/boot/i386/boot0/boot0.s,可以猜想这里面发生了什么 - 这是引导管理器,一段由 Robert NordIEr书写的令人起敬的程序片段 。
MBR里,也就是boot0里,从偏移量0x1be开始有一个特殊的结构,称为分区表 。其中有4条记录(称为分区记录),每条记录16字节 。分区记录表示硬盘如何被划分,在FreeBSD的术语中,这被称为slice(d) 。16字节中有一个标志字节决定这个分区是否可引导 。有仅只能有一个分区可设定这一标志 。否则,boot0的代码将拒绝继续执行 。
【FreeBSD的boot0阶段介绍】一个分区记录有如下域:*1字节 文件系统类型
*1字节 可引导标志
*6字节 CHS格式描述符
*8字节 LBA格式描述符
一个分区记录描述符包含某一分区在硬盘上的确切位置信息 。LBA和CHS两种描述符指示相同的信息,但是指示方式有所不同:LBA (逻辑块寻址,Logical Block Addressing)指示分区的起始扇区和分区长度,而CHS(柱面 磁头扇区)指示首扇区和末扇区 。引导管理器扫描分区表,并在屏幕上显示菜单,以便用户可以选择用于引导的磁盘和分区 。在键盘上按下相应的键后,boot0进行如下动作:*标记选中的分区为可引导,清除以前的可引导标志
*记住本次选择的分区以备下次引导时作为缺省项
*装载选中分区的第一个扇区,并跳转执行之
什么数据会存在于一个可引导扇区(这里指FreeBSD扇区)的第一扇区里呢?正如你已经猜到的,那就是boot2 。
推荐阅读
- 华为mate30pro中更改日期和时间的简单操作方法
- 铁和铜哪个密度大 铜和铁哪个密度大
- 诸葛亮木牛流马具体故事梗概 诸葛亮木牛流马的故事简介
- 什么叫仿写
- 苹果手机怎么编辑微信里的表格
- 哪个省的梨产量占全国一半
- 房子的装修风格怎么选 装修要怎么选风格
- 庄子是哪个学派的代表人物 老子和庄子是哪个学派的代表人物
- 抖音最火的早安句子
- 关于孤立的名言
