Unix 指南/解释/磁盘分区
本章介绍了不同类型的分区表以及用于调整分区表的程序。
一个分区表 将磁盘划分为分区。每个分区 可以单独格式化。分区通常用于文件系统,用于存放计算机文件,或交换区,用于操作系统作为额外(但速度较慢)的内存。关于 文件系统和交换区 的章节描述了类 Unix 系统如何使用分区。
类 Unix 系统通常安装在与其他操作系统相同的磁盘上。在这种情况下,类 Unix 内核和其他系统都必须理解相同类型的分区表。
- 在 i386 硬件上,fdisk 分区很常见。它被 DOS、Windows 和 Linux 使用。引导计算机的 BIOS 启动磁盘上的主引导记录 (MBR)。MBR 理解 fdisk 格式。
- 在 Macintosh 上,苹果分区表 允许磁盘包含一个或多个 Macintosh (HFS+ 或旧的 HFS) 分区。BIOS (Open Firmware) 可以不使用 MBR 来启动 Macintosh,因为 BIOS 可以找到 HFS+ 和 HFS 分区上的引导加载程序文件。
- *BSD 系统可以使用带有 *BSD 分区表的 MBR,但大多数配置使用非 BSD 分区表,其中包含一个“切片”,该切片包含一个 *BSD 分区表和分区。
本节可能需要校正。
原始的 IBM PC 为 MS-DOS 定义了一个简单分区表格式。这种分区表被 PC 风格计算机的 BIOS 实现所使用,被 DOS 和 Windows 使用。它也被大多数 PC 风格硬件上的 Linux 系统用于 BIOS 兼容性,以及因为 Linux 通常安装在与 DOS 和 Windows 相同的磁盘上。为了区分这种旧的分区格式与 Windows 可用的新格式,微软现在使用术语MBR 分区(之所以这样命名是因为分区表包含在主引导记录 (MBR) 中)来描述 MS-DOS 格式。许多文献都用 DOS 和 MS-DOS 这些术语来指代这种分区格式。
使用 MBR 分区表
- 主引导记录 (MBR) 不属于任何分区。MBR 包含一个引导加载程序和一个基本分区表,位于固定位置。
- 基本分区表最多只能包含四个主分区。如果您需要更多分区,则其中一个主分区必须被标识为扩展分区。扩展分区可以被划分为逻辑分区。例如,Windows 可能安装在主分区 1 (驱动器 C:) 和 2 (驱动器 D:) 上。Linux 可能使用 3 个分区(根/, 交换区和 home/home)。根位于主分区 3 上。主分区 4 是扩展分区,包含交换区和/home作为逻辑分区,以及可能用于将来逻辑分区的额外空间。
- 一个主分区也可以是一个 *BSD 切片。这意味着它包含一个 *BSD 磁盘标签和几个 *BSD 分区。
- 一个主分区可以被标记为活动分区。默认的 MBR 引导加载程序(来自 MS-DOS 和 FreeDOS 的那个)会引导活动主分区。但是,一些 MBR 引导加载程序(如 GRUB)可能会提供一个菜单,而不是引导活动分区。
- 您可以声明每个分区的类型。一些系统使用类型来查找其文件系统。BSD 使用类型来查找其切片,但 Linux 完全忽略了类型。Linux 反而通过其/etc/fstab文件。
要操作 fdisk 分区,请在 DOS 上查找名为 FDISK.EXE 的程序,或在 Linux 上查找名为fdisk 的程序。
Mac OS 硬盘通常包含苹果分区表。这些表是在使用苹果的驱动器设置程序格式化磁盘时创建的。使用这些分区表
- 分区 1 包含分区表。
- 由于某种原因,驱动器设置程序坚持要创建 128 MB 的未使用的 Apple_Free 空间作为分区 2。一些安装了 Mac OS 9 驱动程序的旧磁盘有几个从 2 开始的小分区,这些分区只被 Mac OS 9 和更早的版本使用。
- 您可以创建至少 17 个分区,可能更多。
- 没有主引导记录 (MBR)。
要操作苹果分区,请在 Mac OS X 或 *BSD 上的 shell 提示符处使用pdisk 或diskutil。现在大多数 GNU/Linux 系统出于某种原因将同一个程序称为mac-fdisk。
实际上,苹果分区表上的分区类型可以是任意字符串,例如“OpenBSD”。虽然有些操作系统仍然停留在“Apple_UNIX_SVR2”上。
Apple_partition_map | 此分区包含分区表。它的存在是为了防止其他分区与分区表重叠。 |
Mac OS classic 驱动程序 | 这些小分区将位于分区表之后,但大多数磁盘现在都没有它们。Mac OS 9 及更早版本会从这些分区加载磁盘的设备驱动程序。所有其他系统,包括 Mac OS X,都不会使用它们。 |
Apple_HFS | 这是一个 HFS+ 或 HFS 分区。Mac OS 会挂载所有此类型的分区(除非设置了 HFS 不挂载标志)。它也可能是一个 MS-DOS 格式的分区;Mac OS 也能挂载它们。 |
Apple_UFS | 这是一个由 Mac OS X 挂载的 UFS 分区。
|
OpenBSD | 这是 OpenBSD 切片。磁盘必须有一个或没有一个这种切片。 |
Apple_Bootstrap | BIOS (Open Firmware) 可以从这个分区引导,但 Mac OS 不会挂载它。这种分区类型被“ybin”用来存放“yaboot”,即 Linux 引导加载程序。它也可以包含一个 OS 菜单,其中包含 Mac OS 9、Mac OS X 和 GNU/Linux 作为可能的条目。 |
Apple_UNIX_SVR2 | 名义上,它是一个 A/UX 分区,用于苹果的 SVR2 到 68k Mac 的移植。但是,苹果借用了这种分区类型来实现 PowerPC Mac 的双重 Linux。这两个苹果系统都已经过时,但现在 Linux 和 NetBSD 都在使用这种分区类型。
|
Apple_Free | pdisk 等映射编辑器会在删除分区时创建此“分区”。“Apple_Free”分区只是未使用的空间。通常只有一个大的“Apple_Free”分区。
|
在示例系统上,我们使用 OpenBSD 上的“pdisk”来查看分区表。我们在 OpenBSD 上运行“pdisk /dev/rwd0c”命令。在 Mac OS X 上,该命令将是“pdisk /dev/disk0”。现在大多数 Linux 发行版将“pdisk”称为“mac-fdisk”,因此该命令将是“mac-fdisk /dev/hda”。我们使用 pdisk 命令“p”来打印分区表,然后使用“q”退出。
# pdisk /dev/rwd0c Edit /dev/rwd0c - Command (? for help): p Partition map (with 512 byte blocks) on '/dev/rwd0c' #: type name length base ( size ) 1: Apple_partition_map Apple 63 @ 1 2: Apple_Bootstrap untitled 1954 @ 50331712 3: Apple_HFS Apple_HFS_Untitled_1 24903680 @ 262208 ( 11.9G) 4: OpenBSD OpenBSD 25165824 @ 25165888 ( 12.0G) 5: Apple_UNIX_SVR2 untitled 24064454 @ 50333666 ( 11.5G) 6: Apple_Free Extra 262144 @ 64 (128.0M) 7: Apple_UNIX_SVR2 swap 1099416 @ 74398120 (536.8M) 8: Apple_Free Extra 41712704 @ 75497536 ( 19.9G) Device block size=512, Number of Blocks=117210240 (55.9G) DeviceType=0x0, DeviceId=0x0 Command (? for help): q #
本节可能需要校正。
术语“切片”和“分区”通常定义如下
- 一个分区 是 BSD 磁盘标签中的一个条目(文件系统或交换区)。
- 一个切片 是非 BSD 分区表(如 fdisk 或 Apple)中的分区,它包含 BSD 磁盘标签和分区。
BSD 分区表称为磁盘标签。在下文中,“分区表”指的是非 BSD 分区表,它不是磁盘标签。
BSD 分区很特殊,因为在安装了 *BSD 的磁盘上,'a' 必须是根分区,'b'(如果存在)必须是交换分区。磁盘标签指示所有分区的地址、类型和字母。由于这些特殊特性,BSD 磁盘标签被限制在任何与非 BSD 操作系统一起使用的磁盘的切片中。当磁盘与 BSD 一起使用时,会导致三种情况
- 磁盘具有分区表和磁盘标签。 分区表位于磁盘开头(可能在 MBR 之后)。其中一个分区是 BSD 切片。磁盘标签位于 BSD 切片的开头。*BSD 系统将使用磁盘标签,而其他系统将使用分区表。安装了 OpenBSD/macppc 的磁盘使用这种配置。
- 磁盘有分区表但没有磁盘标签。如果磁盘与 *BSD 一起使用,BSD 内核会生成一个分区表,并为所有识别的分区类型分配字母。对于 Apple 分区表,OpenBSD/macppc 仅识别 Apple_HFS 分区。NetBSD/macppc 同时识别 Apple_HFS 和 NetBSD (Apple_UNIX_SVR2) 分区,因此 NetBSD/macppc 安装不需要磁盘标签。
- 磁盘只有磁盘标签。磁盘标签位于磁盘的开头,可能位于 MBR 之后,整个磁盘都保留给 *BSD。只有 *BSD 可以使用此磁盘。
为了腾出空间放置磁盘标签,所有 UFS/FFS 分区都会保留前几个字节未用。因此,您可以将根 UFS/FFS 分区直接放置在磁盘的开头(除了 MBR),并且仍然有空间放置磁盘标签。
所有 UFS/FFS 分区必须列在磁盘标签中才能发挥作用。Mac OS X 会在所有 Apple_UFS 分区上放置一个特定于 Apple 的磁盘标签,因为这些分区没有列在 BSD 磁盘标签中。
*BSD 发行版有不同的方法来使用非 BSD 分区,或者在同一磁盘上同时使用 *BSD 和非 *BSD 操作系统。
- 如果 NetBSD 看到一个 Apple 分区表,它将为所有 HFS+ 分区和 NetBSD 分区分配字母。
- 如果 OpenBSD 看到一个 Apple 分区表,它将搜索类型为 "OpenBSD" 的分区,并使用该分区上的磁盘标签。如果不存在磁盘标签,OpenBSD 会从字母 'i' 开始为所有 "Apple_HFS" (HFS+) 分区分配字母。在创建磁盘标签时,首先要将磁盘标签中已有的 HFS+ 分区列入。然后,通过将 "OpenBSD" Apple 分区分成多个磁盘标签分区,来添加 OpenBSD 分区,这是一种二次分区的方式。使用 **disklabel -E** 来编辑磁盘标签。