FreeBSD的磁盘分区

2009-05-13 14:15:32来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

上面雨丝风片结合bochs的汇编调试器详细描述了mbr的引导过程。作为上文的延续,这里我和大家一起用基于实验的手法观察PC机上FreeBSD的分区。

FreeBSD在PC结构的计算机上,有两种同时使用的,也是十分容易混淆的分区概念:一是DOS分区,一是BSD分区。本文的重点在帮助大家准确理解这两种分区。

为了理解分区,我们最好的插手阶段是FreeBSD的引导过程。简单的说,完整的FreeBSD的引导分为四部分:第一部分是DOS分区的mbr引导,FreeBSD将之称为boot0;第二部分是FreeBSD分区的引导,FreeBSD将之称为boot1;然后是FreeBSD所谓的boot2引导,最后是loader引导。


整个过程如下图1示

图1:引导过程简图

[attach]259738[/attach]



其中mbr引导是与FreeBSD无关的,也就是说我们可以使用很多不同的引导工具进行mbr引导,最著名的恐怕就是grub了。后面三个引导阶段是FreeBSD自有的,这是FreeBSD称之为三部曲的引导,本文仅解析磁盘分区,并不深入FreeBSD的引导,因此关于boot的详情可以参见man 8 boot。


第一部分:DOS分区

那么,奇怪的是为什么在讨论FreeBSD分区的时候,我们需要首先面对的却是DOS分区呢?原因在于,PC机上的FreeBSD运行在基于IA32的硬件之上,并且在设计时就考虑到和同一个磁盘上的其他系统共存的用户需求,比如Microsoft Windows。所以,FreeBSD不得不建立在DOS分区之上的。当然运行在非IA32体系的计算机上的FreeBSD系统并不一定使用DOS分区。

首先我们需要一个实验环境来观察后面的操作:操作系统FreeBSD7.0-release,虚拟机bochs2.3.7,虚拟磁盘大小10G,分为两个区:一个分区1G为FAT分区,另一个分区9G为BSD分区。创建虚拟磁盘的操作显示如图2:

图2: 实验用虚拟硬盘


[attach]259739[/attach]



图2告诉我们的最重要的信息是total sectors=20971440,而我们在安装*BSD时经常看到的cylinder=20805,heads=16等信息在现在较新的磁盘上已经不再重要,至于原因我们放在下面讲述。我们还可以看出这个磁盘的扇区大小为(10239.96MB/20971440扇区=512字节)。

空白磁盘添加了保留引导区之后的第一次划分光秃秃的如下图3:

图3: 磁盘的第一次划分


[attach]259740[/attach]



这时磁盘上并没有任何数据,这63个扇区的划分直到后面写入磁盘信息时才会正式建立,我们这里引用这些分区是为了文章描述的逻辑性。

OK,接下来我们正常安装FreeBSD,直到下一步,如图4:(同样的信息我们也可以在系统安装完成之后使用fdisk命令查看)

图4中显示了设备名:ad0,整个磁盘扇区大小:20971440,还有三个看起来像分区的条目。呃,这里用了“看起来像”,是因为从扇区0到扇区62结束的第一个条目,其实不是一个分区,它是磁盘的保留块,至于为什么要63个扇区而不是我们经常讲的mbr 1个扇区?原因在于磁盘开始的63个扇区保留给了mbr和扩展分区。而为什么保留的扇区是63而不是64,65呢?呃,因为一个柱面包含了63个扇区:) 第0个扇区确实是我们关心的mbr,而第1—62扇区,是为扩展分区保留的空间,它可以不使用。如果是这样,那么1—62扇区可以存放扩展引导代码,也可以放数据。

进一步划分:一个分区1G为FAT分区,从63扇区开始到2096639扇区结束,共(2096639−63+1) = 2096577个扇区,共2096577S · 512B = 1023KB = 1G。这个分区的分区号为Subtype = 6。另一个分区9G为FreeBSD分区,从2096640扇区开始到20971439扇区结束,共18874800个扇区,分区号为Subtype = 165。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:惊闻FreeBSD采用了GPL3

下一篇:登陆器