BSD UNIX在UNIX的历史发展中具有相当大的影响力,被很多商业厂家采用,成为很多商用UNIX的基础,并且BSD UNIX最先实现了TCP/IP,使Internet和UNIX紧密结合在一起。后来从BSD UNIX发展出Free BSD、Open BSD、Net BSD、Dragonfly BSD等分支,其中以Free BSD使用最为广泛,尤其是在NAS系统中,因其是一款完全开源的自由软件。

FreeBSD是一个稳定、高效、可靠的操作系统,它既可以用于大型服务器上,也可以应用在个人计算机中,从而使得个人也能拥有高性能的UNIX工作站。

Free BSD分区的特点及命名

在Free BSD系统中分区同样也是一个文件。在访问分区前,需要把分区挂载到某个目录下。Free BSD系统与其他UNIX类操作系统的路径组织结构虽基本相同,但也存在一些小的差别。表5-14是Free BSD系统中常用的默认目录。

表5-14 Free BSD系统中常用的默认目录

默认目录 描述
/  根文件系统,用于存储系统内核、启动管理和其他文件系统的装载点
/dev  设备入口点,放着所有系统能够用到的各个设备
/bin  系统启动时需要的一些通用可执行程序
/usr  第二个文件系统,基本上是和系统核心无关但又属于操作系统的一部分的一个目录。大多数的应用程序、各个用户的私有资料存放在这个子系统中
/etc  包含系统配置文件,如用户口令等
/modules  内核可装载模块
/var  保存经常变化的文件,包括系统日志、邮件等
/proc  进程文件系统,存储指向当前活动进程的虚拟内存文件
/sbin  系统可执行文件
/stand  独立执行的程序,sysinstall就在这个目录下,在安装配置系统时用到
/root  root用户的工作目录

Free BSD系统基本都应用于x86架构上,所以它使用MBR磁盘结构。就像x86架构的Solaris系统一样,用主DOS分区表在磁盘上划分出相应区域,然后在这些区域内建立自己的Free BSD分区。主DOS分区表所划分的区域可以安装Windows系列的操作系统,也就是说,Free BSD系统既可以访问自己的分区,也可以访问FAT、NTFS等Windows系统下的文件系统。

Free BSD系统把磁盘上的DOS分区称为“切片(slice)”,而把自己的Free BSD结构的分区称为“分区(partition)”。这一点刚好与x86架构的Solaris系统相反,请注意区分。

如果一个磁盘既安装了Windows系统,也安装了Free BSD系统,当运行于FreeBSD系统下时,该系统也可以访问Windows系统中的切片。

FreeBSD将每个分区和切片视为特殊设备文件,并依据它们的DOS切片号和Free BSD分区号对其进行命名。第一IDE接口的主磁盘命名为/dev/ad0,磁盘上的每个切片用字母“S”加上切片号进行命名。例如,第一个切片命名为/dev/ad0s1,第二个切片命名为/dev/ad0s2。包含Free BSD结构分区的切片内部则进一步由磁盘标签进行管理,划分为若干个分区,每个分区根据它在磁盘标签中分区表项的顺序来分配字母。例如,磁盘中第二个切片为Free BSD的切片,切片中的第一个Free BSD分区为/dev/ad0s2a,第二个Free BSD分区为/dev/ad0s2b。另外,Free BSD系统访问自己的分区时可以不加切片号,如在刚才的例子中,/dev/ad0a与/dev/ad0s2a是同一个分区。

在Free BSD系统中,分区的命名字母有特殊的规定:字母“a”用于根分区,存储引导代码;字母“b”用于Swap(交换)分区;字母“c”用于描述Free BSD分区所在的整个切片;其他的分区由字母“d”开始依次往后分配。

Free BSD磁盘布局

Free BSD系统应用于x86架构上,所以Free BSD磁盘的第一个扇区为MBR。MBR中会有几个主DOS分区,这些主DOS分区被Free BSD系统称为切片,切片中可以是FAT文件系统,也可以是NTFS,但至少一个切片给Free BSD分区使用,或者全部的切片都用于Free BSD分区。描述Free BSD区域的主DOS分区表项的分区类型被定义为十六进制数值“A5”。一个完整的Free BSD系统磁盘布局的例子如图5-15所示。

Free BSD分区结构分析-数据恢复迷

图5-15 Free BSD系统的磁盘布局

再用WinHex查看一个Free BSD系统磁盘的第一个扇区,也就是MBR扇区,如图5-16所示。

Free BSD分区结构分析-数据恢复迷

图5-16 Free BSD系统磁盘的MBR扇区

可以看出Free BSD磁盘的MBR扇区与Windows下的MBR也是很像的,只是引导程序的内容差别大一些。在该MBR的分区表中,有两个类型为“A5H”的主DOS分区,“A5H”就代表Free BSD系统。Free BSD系统把这两个主DOS分区表项所描述的空间称为切片。在这两个切片的内部,是Free BSD系统的分区。

Free BSD切片的结构

在类型为“A5H”的主DOS分区内,是Free BSD系统的分区。这部分空间内的第一个扇区用于存放系统的引导程序,第二个扇区是Free BSD分区的磁盘标签,第三个扇区往后依然是系统的引导程序。因为0号扇区存放不下所有的引导程序,跨过被磁盘标签占用的1号扇区继续存放引导程序,直到文件系统的超级块开始之前。超级块一般开始于16号扇区。

下面就以图5-16中分区表第一项所描述的Free BSD分区为例,具体讲解Free BSD分区的结构。

x86架构下的Free BSD系统使用Little-Endian字节序。

这个主DOS分区开始于“00 00 00 3F”扇区,十进制为63,所以Free BSD分区中的磁盘标签就位于下一个扇区,即64号扇区。用WinHex跳转到此扇区,其内容如图5-17所示。

Free BSD分区结构分析-数据恢复迷

图5-17 Free BSD磁盘标签实例

Free BSD磁盘标签的具体结构参数见表5-15。

表5-15 Free BSD磁盘标签的结构参数

Free BSD分区结构分析-数据恢复迷

Free BSD磁盘标签的分区表中预留了16个分区表项的位置,每个分区表项占用16个字节。分区表项的具体结构见表5-16。

表5-16 分区表项的结构参数

Free BSD分区结构分析-数据恢复迷

分区表项中文件系统类型的具体分类见表5-17。

表5-17 文件系统类型的具体分类

文件系统类型值 含义 文件系统类型值 含义
0x00 未用空间 0x08 MSDOS文件系统(FAT)
0x01 交换空间 0x09 4.4BSD日志文件系统(4.4LFS)
0x02 版本6 0x0A 在使用中,但无法识别或不支持
0x03 版本7 0x0B OS/2的HPFS
0x04 UNIX System V 0x0C CDROM(ISO9660)
0x05 4.1BSD 0x0D 引导程序
0x06 Eighth Edition 0x0F Vinum磁盘驱动器
0x07 4.2BSD Fast File System(FFS)

(1)磁盘信息

从Free BSD磁盘标签的偏移04H处开始描述磁盘的参数信息,包括磁盘转速、柱面数、磁头数、每磁道扇区数等。下面把图5-17所示的Free BSD磁盘标签的例子中的磁盘信息列举一下,具体见表5-18。

表5-18 磁盘参数举例

字节偏移 字段长度(字节) 字段名和定义 实际数值
0x04~0x05 2 驱动器类别 05H
0x06~0x07 2 驱动器子类别 00
0x08~0x17 16 驱动器类别名 ad0s1
0x18~0x27 16 捆绑ID名称
0x28~0x2B 4 每扇区字节数 0200H,即每512字节
0x2C~0x2F 4 每磁道扇区数 3FH,即每磁道63扇区
0x30~0x33 4 每柱面磁道数 FFH,即每柱面255个磁道
0x34~0x37 4 每单元柱面数 23H,即每单元35个柱面
0x38~0x3B 4 每柱面扇区数 3EC1H,即每柱面16 065个扇区
0x3C~0x3F 4 每单元扇区数 855A2H,即546 210个扇区
0x40~0x41 2 每磁道备用扇区数 00
0x42~0x43 2 每柱面备用扇区数 00
0x44~0x47 4 每单元间隔柱面数 00
0x48~0x49 2 磁盘转速 1518H,即5400rpm
0x4A~0x4B 2 物理扇区交错 01
0x4C~0x4D 2 磁道倾斜 00
0x4E~0x4F 2 柱面倾斜 00
0x50~0x53 4 磁头转换微秒数 00
0x54~0x57 4 道至道微秒数 00
0x58~0x5B 4 标志 00
0x5C~0x6F 20 驱动器详细信息

(2)分区表

Free BSD磁盘标签的分区表中预留了16个分区表项的位置。下面以图5-17所示的Free BSD磁盘标签为例具体分析一下分区表内的数值。在磁盘标签的偏移8AH~8BH处描述该磁盘标签中包含的分区表项数,当前值为8,说明本例的磁盘标签中只分配了8个表项的空间,再具体看分区表中,目前只使用了一个表项,该表项具体信息见表5-19。

表5-19 分区表参数举例

字节偏移 字段长度(字节) 字段名和定义 实际数值
0x00~0x03 4 分区总扇区数 855A2H,即546 210个扇区
0x04~0x07 4 分区起始扇区号(以磁盘0扇区为起点) 3FH,即起始于物理磁盘的63号扇区
0x08~0x0B 4 文件系统中每段字节数 400H,即1024字节
0x0C~0x0C 1 文件系统类型(具体见表5-17) 07H
0x0D~0x0D 1 文件系统每块包含的段数 08H,即8个段
0x0E~0x0F 2 文件系统每柱面组的柱面数 10H,即16个柱面

(3)签名值及校验和

Free BSD的磁盘标签中有两个签名值:在偏移00H~03H处有4个字节作为磁盘标签的第一个签名值,该值固定为十六进制数值“57 45 56 82”;在偏移84H~87H处,有4个字节作为磁盘标签的第二个签名值,与第一个签名值一样,也是固定为十六进制的“57 45 56 82”。

Free BSD磁盘标签扇区偏移88H~89H处的两个字节,是该扇区的校验和。