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** 來編輯磁碟標籤。