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系统与其他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系统应用于x86架构上,所以Free BSD磁盘的第一个扇区为MBR。MBR中会有几个主DOS分区,这些主DOS分区被Free BSD系统称为切片,切片中可以是FAT文件系统,也可以是NTFS,但至少一个切片给Free BSD分区使用,或者全部的切片都用于Free BSD分区。描述Free BSD区域的主DOS分区表项的分区类型被定义为十六进制数值“A5”。一个完整的Free BSD系统磁盘布局的例子如图5-15所示。
再用WinHex查看一个Free BSD系统磁盘的第一个扇区,也就是MBR扇区,如图5-16所示。
可以看出Free BSD磁盘的MBR扇区与Windows下的MBR也是很像的,只是引导程序的内容差别大一些。在该MBR的分区表中,有两个类型为“A5H”的主DOS分区,“A5H”就代表Free BSD系统。Free BSD系统把这两个主DOS分区表项所描述的空间称为切片。在这两个切片的内部,是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-15。
表5-15 Free BSD磁盘标签的结构参数
Free BSD磁盘标签的分区表中预留了16个分区表项的位置,每个分区表项占用16个字节。分区表项的具体结构见表5-16。
表5-16 分区表项的结构参数
分区表项中文件系统类型的具体分类见表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处的两个字节,是该扇区的校验和。