Linux 和 FreeBSD 使用两种不同的方式来标识与切割硬盘.
FreeBSD 只需要用硬盘上的一个主硬盘切割区.
这个主切割区在 FreeBSD 的术语中被称为 ``slice''.
然后它用 disklabel
这个程序在这个主硬盘切割区中制造逻辑切割区.
这些逻辑切割区在 FreeBSD 的术语中被称为``partitions''.
这个观念与 Linux (和 DOS) 处理括充切割区中的逻辑切割区是非常相像的.
注意: Linux fdisk
程序的主功能表中并不会将 FreeBSD slice 中的 partitions 显示出来, 但是你可以使用命令 'b' 来显示 BSD 磁盘标签的信息.
它的输出将如这样 : (/dev/hda4
是 FreeBSD 的 slice):
# fdisk /dev/hda
Command (m for help): p
Disk /dev/hda: 64 heads, 63 sectors, 621 cylinders
Units = cylinders of 4032 * 512 bytes
Device Boot Begin Start End Blocks Id System
/dev/hda1 * 1 1 27 54400+ 83 Linux native
/dev/hda2 28 28 55 56448 83 Linux native
/dev/hda3 56 56 403 701568 83 Linux native
/dev/hda4 404 404 621 439488 a5 BSD/386
Command (m for help): b
Reading disklabel of /dev/hda4 at sector 1624897.
BSD disklabel command (m for help): p
8 partitions:
# size offset fstype [fsize bsize cpg]
a: 64512 1624896 4.2BSD 0 0 0 # (Cyl. 404 - 419)
b: 104832 1689408 swap # (Cyl. 420 - 445)
c: 878976 1624896 unused 0 0 # (Cyl. 404 - 621)
e: 64512 1794240 4.2BSD 0 0 0 # (Cyl. 446 - 461)
f: 645120 1858752 4.2BSD 0 0 0 # (Cyl. 462 - 621)
BSD disklabel command (m for help): q
#
在第一个栏位中的字母 `a'...`f' 与下面 FreeBSD slice 的例子中的是相同的.
字母`b'指的是 swap partition, 而`c'指的是整个 slice.
阅读 FreeBSD 文件以便获取指定这些字母给不同切割型态的``标准方法" 的更多信息.
Linux 和 FreeBSD 中的硬盘是如下列方法标识的:
Linux FreeBSD
First IDE drive /dev/hda /dev/wd0
Second IDE drive /dev/hdb /dev/wd1
First SCSI drive /dev/sda /dev/sd0
Second SCSI drive /dev/sdb /dev/sd1
FreeBSD slice 是如下方法标识:
(/dev/hda
为范例):
Linux FreeBSD
First primary partition /dev/hda1 /dev/wd0s1
Second primary partition /dev/hda2 /dev/wd0s2
Third primary partition /dev/hda3 /dev/wd0s3
Fourth primary partition /dev/hda4 /dev/wd0s4
FreeBSD slice 中的 partitions 如下述方法标识
(/dev/hda4
是例子中的 FreeBSD slice ):
Linux label FreeBSD label Default FreeBSD mount point
/dev/hda5 /dev/wd0s4a /
/dev/hda6 /dev/wd0s4b swap
/dev/hda7 /dev/wd0s4e /var
/dev/hda8 /dev/wd0s4f /usr
如果你在 Linux中执行 dmesg
你将会看到如下 (Linux 的 kernel 必须有 UFS 支持才能奏效. 看
安装并准备 Linux) 部份:
Partition check:
hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 >
如果你在 /dev/sdb3
slice 中安装 FreeBSD, 而且 /dev/sdb2
是一个含有两个逻辑切割的 Linux 扩充切割 (/dev/sdb5
及 /dev/sdb6
), 之前的例子看起来将如同这样:
Linux label FreeBSD label Default FreeBSD mount point
/dev/sdb7 /dev/sd1s3a /
/dev/sdb8 /dev/sd1s3b swap
/dev/sdb9 /dev/sd1s3e /var
/dev/sdb10 /dev/sd1s3f /usr
在 dmesg
的输出中看起来将如
Partition check:
sdb: sdb1 sdb2 < sdb5 sdb6 > sdb3 < sdb7 sdb8 sdb9 sdb10 >
如果你有一个 Linux 延伸磁区在 FreeBSD slice 之后, 你便有了麻烦.
因为大多数的 Linux 核心安装磁片没有内含UFS 支持,
它们认不得 FreeBSD slice 中的 partitions.
看到的(/dev/hda3
是 FreeBSD slice 而 /dev/hda4
是 Linux 延伸切割)
Partition check:
hda: hda1 hda2 hda3 < hda5 hda6 hda7 hda8 > hda4 < hda9 hda10 >
出现成:
Partition check:
hda: hda1 hda2 hda3 hda4 < hda5 hda6 >
这会导致错误的设施指定, 并会令资料遗失. 我的建议是 永远把你的 FreeBSD slice 放在任何 Linux 延伸切割之后, 并且不要在安装 FreeBSD 后, 改变 Linux 延伸切割中的任何逻辑切割.