分區 - Arch Linux 中文维基

跳至內容

# 分區

出自 Arch Linux 中文维基

相關文章

- 文件系統
- fdisk
- gdisk
- parted
- fstab
- LVM
- Swap
- Arch 的啟動流程
- UEFI

翻譯狀態：

- 本文（或部分內容）譯自 Partitioning，最近一次同步於 2024-07-06，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

根據維基百科:

  分區是在外存上創建一個或多個區域的過程，分區的目的是單獨管理各個部分。

一個硬碟可以被劃分為一個或者多個分區。一些場景需要使用多個分區，例如雙重或多重啟動、使用 Swap 分區等。此外，分區也可以從邏輯上隔離數據，例如為音頻和視頻數據創建單獨的分區。分區方案存儲於#分區表中，例如主引導記錄（MBR）或 GUID 分區表（GPT）。

可用分區工具創建和修改分區表。#分區工具中列出了在 Arch Linux 中可用的分區工具。

分區通常直接包含一個文件系統，這是在分區上直接創建的（即格式化）。或者，分區可能包含LVM（邏輯分卷管理器）、加密塊設備、RAID（獨立磁碟冗餘陣列），它們最終提供可存放文件系統的設備文件。

直接包含可掛載文件系統的塊設備（硬碟、分區、LUKS 設備、LVM 邏輯卷、RAID 陣列等）稱為卷（也有卷標、宗卷等稱謂）。

## 分區表

分區信息被存放在分區表中。目前有兩種主流的模式：傳統的#主引導記錄（MBR）和新的#GUID 分區表（GPT）。後者功能更強大，解決了許多 MBR 的限制。第三個不常用的方式是使用無分區磁碟，後面也會介紹。

可使用#分區工具查看塊設備的分區表。

提示：可以用 `parted /dev/sda print` 或 `fdisk -l /dev/sda` 查看當前分區信息。

`/dev/sdX` 是塊設備，依不同物理設備有不同的格式：

- `/dev/sda` 是 SATA 設備
- `/dev/nvme0n1` 是 NVMe 設備
- `/dev/mmcblk0` 是 eMMC 設備

更多信息請參看塊設備名稱

### 主引導記錄

主引導記錄（Master boot record，MBR）是存儲設備最開始的 512 字節。其包含作業系統啟動加載器和分區表，在 BIOS 系統的啟動流程中扮演重要角色。可參閱上述維基頁面了解 MBR 的結構。

注意：MBR 並不位於某個分區中。其位於分區前，設備的最開始的扇區（物理偏移 0）。 無分區設備的啟動扇區或分區中的啟動扇區被稱為 Volume boot record。

#### MBR（引導代碼）

MBR 的前 440 字節是引導（bootstrap）代碼。在 BIOS 系統上，它通常包含引導程序的第一階段。可以用 dd 備份、恢復、抹除引導代碼。

#### MBR（分區表）

MBR 分區表（或稱為 DOS 分區表、MS-DOS 分區表）有三種分區類型：

- 主分區（Primary）
- 擴展分區（Extended）
  - 邏輯分區（Logical）

主分區每個磁碟或者 RAID 卷上不能超過 4 個，可設置為可啟動狀態。如果分區方案要求使用多於 4 個的分區，就需將至少一個分區設置為擴展分區，並在上面建立邏輯分區。

擴展分區可以被看作是容納邏輯分區的容器。硬碟上最多只能有1個擴展分區。如果磁碟上有 1 個擴展分區，它也被看作是 1 個主分區。因此只能另外再建立 3 個主分區（例如 3 個主分區加 1 個擴展分區）。擴展分區內所包含的邏輯分區數量沒有限制。如果在雙重啟動中有 Windows，Windows 需要占據一個主分區。

通常習慣是創建主分區 sda1 到 sda3，然後建立一個擴展分區 sda4。sda4 中包含的邏輯分區編號為 sda5、sda6 等。

提示：在進行 MBR 分區時，請考慮在硬碟末尾留下至少 33 個 512 字節扇區（總共 16.5 KiB）的不分區空間。這樣是為了方便以後 轉換到 GPT 方案，會用於備份 GPT 頭。

### GUID 分區表

全局唯一標識分區表（GUID Partition Table，GPT）是 UEFI 標準定義的分區規範。使用通用唯一識別碼（globally unique identifier，GUID；又稱為 universally unique identifier，UUID）定義分區和分區類型。設計上是為了替換#主引導記錄。

GUID 分區表的磁碟開始位置有一個保護 MBR（protective Master Boot Record，PMBR），用以處理不支持 GPT 軟體的訪問。這段 MBR 和真正的 MBR 一樣，具備一段#引導代碼，後者可以用在支持的啟動管理器中進行 BIOS/GPT 啟動。

### 選擇 GPT 還是 MBR

#GUID 分區表（GPT）是一種更靈活的分區方式。它正在逐步取代#主引導記錄（MBR）系統。GPT 相對於誕生於 MS-DOS 時代的 MBR 而言，有許多優點。新版的分區工具可以讓 GPT 和 MBR 都獲得不錯的可靠性和性能。

在做出選擇前，需要考慮如下內容：

- 如果使用 GRUB legacy 作為引導程序，必須使用 MBR。
- 如果使用傳統的 BIOS，並且雙啟動中包含 Windows （無論是 32位版還是 64 位版），必須使用 MBR。
- 如果使用 UEFI 而不是 BIOS，並且雙啟動中包含 Windows 64 位版，必須使用 GPT。
- 非常老的機器需要使用 MBR，因為 BIOS 可能不支持 GPT。
- 如果不屬於上述任何一種情況，可以隨意選擇使用 GPT 還是 MBR。由於 GPT 更先進，建議選擇 GPT。
- 建議在使用 UEFI 的情況下選擇 GPT，因為有些 UEFI 固件不支持從 MBR 啟動。

注意：為了使 GRUB 從一台有 GPT 分區的基於 BIOS 的系統上啟動，需要創建一個 BIOS 啟動分區，這個分區和 /boot 沒關係，僅僅是 GRUB 使用，不要建立文件系統和掛載。

GPT 相對於 MBR 的一些優勢：

- 為每個磁碟和每個分區提供相應的磁碟 UUID 和分區 UUID（partuuid），這樣對分區和磁碟的命名就與其文件系統無關。UUID 同時是 systemd 的可發現分區規範的前提，可以用於啟用了 systemd 的 initramfs。
- 提供與文件系統無關的分區名（partlabel）。
- 任意多個分區（取決於為分區表本身分配的空間）使擴展分區和邏輯分區不再必要。GPT 表的默認空間可供 128 個分區使用，但若需要更多分區，也可為分區表分配更多空間。目前僅 gdisk 支持該功能。
- 使用 64 位邏輯塊地址（logical block address），可尋址的最大硬碟空間是 2 ZiB。MBR 只支持 2 TiB 的最大硬碟。
- 在磁碟末尾儲存頭部和分區表，有助於恢復分區表。
- CRC32 校驗碼可用於偵測頭部或分區表的錯誤。

#分區工具一節列出了用於創建和修改 GPT 或 MBR 表的工具。

提示：GPT 和 MBR 之間可以互相轉換。請參閱在 MBR 和 GPT 之間互相轉換[損壞的連結：無效的章節]。

### 無分區磁碟

無分區磁碟，即superfloppy 是指無分區表的存儲設備，一個文件系統占據整個存儲空間。無分區設備上的啟動扇區被稱做 volume boot record (VBR)。

### Btrfs 分區

Btrfs可以獨占整個存儲設備並替代 #MBR 和 #GPT 分區方案。請參考創建 Btrfs 文件系統以獲取更多信息。

## 分區方案

雖然有一些關於分區方案的通用建議，但沒有嚴格的準則。有許多影響分區方案的因素，例如對靈活性的期望、訪問速度、安全性以及可用磁碟空間的硬性限制。實際上就是個人取捨的問題。

如果你想雙啟動 Arch Linux 和 Windows，請參考 Dual boot with Windows。

警告：請別忘記為引導程序預留空間。這對於 MBR 和 GRUB-Legacy 來說不是問題，但是許多新方案可能要求占用一個特殊的小分區。

- UEFI 系統通常需要有 EFI 系統分區。
- 在 BIOS 系統上使用 #GPT 進行分區後，安裝 GRUB 時會需要一個額外的 BIOS 啟動分區。
- 如果使用的是 Btrfs，可以用子卷模擬分區，請參考 Btrfs 子卷。

### 單root分區

這種是最簡單，同時也能滿足大部分應用場景的方案。如果需要的話，可以建立一個交換文件。通常剛開始的時候建議一個單獨的 `/` 分區，然後根據應用場景的需要，例如 RAID，加密，獨立的多媒體分區等建立其他的分區。

單root分區的最小不建議低於23–32 GiB。用戶文件或swap文件可能需要更多的空間。

警告：A separate physical (in the main partition table of the disk, not under LVM, software RAID or in a file system subvolume etc.) /boot partition is needed unless your boot loader is capable of accessing the `/boot` directory that resides in `/`. That means the boot loader must have support for everything starting from the block devices, stacked block devices (LVM, RAID, dm-crypt, LUKS, etc.) and ending with the file system on which the kernel(s) and initramfs image(s) reside.

A GPT partition should have the type GUID `4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709` ("Linux root (x86-64)", "Linux x86-64 root (/)"). An MBR partition should have the default "Linux" type ID `83`.

### 多分區

將某個路徑掛載為獨立分區可以使其擁有不同的文件系統和掛載參數。某些情況下（例如多媒體文件分區），可以被多個作業系統共享。

下面這些路徑可以作為獨立分區的掛載點，你也可以根據實際需要做出其他決定。file-hierarchy(7) 介紹了各個目錄的作用。

#### 根分區

根目錄是目錄樹的頂層，這裡是主文件系統掛載和其他文件系統掛靠的地方。所有文件和目錄都在根目錄 `/` 顯示，即使它們實際上存儲在其他的物理設備上。根文件系統中的內容必須足以啟動、恢復、修復系統。因此 `/` 目錄下的特定目錄是不能作為獨立分區的。

`/` 分區或叫根分區是最重要而且必需的，需要最先掛載，其他其他分區可以被它取代。

警告：與系統啟動相關的特定目錄（除了 `/boot`） 必須 與 `/` 在同一個分區，或在系統剛進入用戶態的時候通過 initramfs 掛載。這些特定的目錄包括：`/etc` 和 `/usr` [1] 。

因為它通常包括 `/usr` 目錄，根據安裝的軟體數量，會產生非常明顯的增長。15-20 GiB 對於大多數用戶來說是一個比較合適的取值。如果你打算在這裡放一個交換文件或者不建立單獨的 /var，需要適當調大取值(增加休眠空間和額外的 8–12 GiB 給 `/var`)。

使用GPT分區的話其類型GUID應當是`4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709` （「Linux root (x86-64)」，「Linux x86-64 root (/)」）。使用MBR分區表的話則其類型ID應當是 `83`（「Linux」）。

#### /boot

`/boot` 分區包含vmlinuz、 initramfs 以及引導加載程序配置文件和引導加載程序階段。它也可以存放內核在執行用戶態程序之前所使用的其他數據。`/boot` 在日常系統運行中並不需要，只在啟動和內核升級（重建 initial ramdisk 時）的時候用到。

警告：

- 引導加載程序需要能夠訪問到 `/boot` 目錄。所以引導加載程序需要視情況，支持塊設備、堆疊塊設備（如軟 RAID、加密卷或 LVM 卷）以及存放內核、initramfs 的文件系統。
- 有些文件系統能包含引導加載程序尚不支持的新特性，除非將不兼容特性禁用，否則不適於 `/boot` 分區。通常可以使用 FAT32 以避免此問題，因為 FAT32 包含所有需要的功能，而且不會再增加新的功能。

有關啟動加載器的需求和能力的更多信息，請參考 Arch boot process#啟動加載器。

注意：在 UEFI 系統中，可以將 EFI 系統分區掛載到`/boot`，這樣就可以省去一個單獨的 boot 分區。

In other cases, it is recommended to set the partition type to Extended Boot Loader (XBOOTLDR) Partition which is GPT partition type GUID `BC13C2FF-59E6-4262-A352-B275FD6F7172` (`ea00` type for gdisk) or MBR partition type ID `ea`.

在兩種情況下，推薦的分區大小都是 1 GiB，這樣就可以有足夠的空間存放多個內核。如果怕不夠，可以分配 4 GiB 空間。

#### /home

`/home`目錄包含用戶定義的配置文件、緩存、應用程式數據和媒體文件。

將`/home`目錄獨立使得`/`分區可以單獨重新劃分。但是請注意，在 `/home` 沒有獨立分區的情況下，仍然可以在不修改 `/home` 目錄內容的情況下重裝 Arch——刪除其他頂級目錄，然後執行 pacstrap。

不能與使用其他發行版的用戶共享同一個 home 目錄，因為不同的發行版可能使用不兼容的軟體版本和補丁。可以共享媒體目錄，或至少使用 `/home` 分區下的不同 home 目錄。分區大小跟著存儲的內容而定。

A GPT partition should have the type GUID `933AC7E1-2EB4-4F13-B844-0E14E2AEF915` ("Linux home", "Linux /home"). An MBR partition should have the default "Linux" type ID `83`.

#### Swap

交換文件或分區提供的硬碟空間作為交換空間使用。它們有同樣的功能，沒有明顯的性能區別，但是前者更易於根據需要調整大小。如果沒有使用休眠功能的話，交換分區可以被多個系統分時使用。

以前，在擁有不足512 MiB內存的機器上，通常為交換分區分配兩倍內存大小的空間。如果有更大的內存（大於1024 MiB），可以分配較少的空間，甚至不需要交換空間。推薦的默認大小是4 GiB.

要使用休眠（掛起到硬碟）功能，最好分配與內存同樣大的交換分區。雖然內核會嘗試壓縮休眠文件到交換分區的大小，但如果交換空間過於小則不一定成功。請參見休眠。

使用GPT分區的話其類型 GUID應當是`0657FD6D-A4AB-43C4-84E5-0933C84B4F4F` ("Linux swap")。使用MBR分區表的話則其類型ID應當是`82` ("Linux swap")。

#### /data

可以為需要多用戶共享的文件建立一個「data」分區。也可以使用 `/home` 分區用於這一目的。

A GPT partition should have the default "Linux filesystem" type GUID `0FC63DAF-8483-4772-8E79-3D69D8477DE4`. An MBR partition should have the default "Linux" type ID `83`.

#### /var

`/var` 目錄存儲變量數據例如 spool 目錄和文件，管理和登錄數據，pacman 的緩存，ABS 樹等等。它通常被用作緩存或者日誌記錄，因此讀寫頻繁。將它獨立出來可以避免由於大量日誌寫入造成的磁碟空間耗盡等問題。

它的存在是方便將 `/usr` 設置為只讀掛載。所有在作業系統運行過程（而非安裝或軟體維護）中，從前要寫入 `/usr` 的東西，放到 `/var` 下。

注意：`/var` 包含許多小文件。如果將其作為獨立分區，在文件系統的選擇上需要考慮這一點。

值得一提的是，`/var` 包含 pacman 緩存。保留緩存的包提供了軟體包降級的能力，因此非常有用。也正因為這樣，`/var` 的大小會隨著時間推移而增長。尤其是 pacman 緩存將會隨著新軟體的安裝、系統的升級而增長。在磁碟空間不足的時候，可以安全地清理這個目錄。

`/var` 分配 8~12 GiB 對於桌面系統來說是比較合適的取值，具體取值取決於安裝的軟體數量。

A GPT partition should have the type GUID `4D21B016-B534-45C2-A9FB-5C16E091FD2D` ("Linux variable data", "Linux /var"). An MBR partition should have the default "Linux" type ID `83`.

### 布局示例

下面的例子使用 `/dev/sda` 作為示例磁碟，其中 `/dev/sda1` 是第一塊分區。 The block device naming scheme will differ if you are partitioning a NVMe disk (e.g. `/dev/nvme0n1` with partitions starting from `/dev/nvme0n1p1`) or an SD card or eMMC disk (e.g. `/dev/mmcblk0` with partitions starting from `/dev/mmcblk0p1`). See Device file#Block device names for more information.

注意：

- UEFI/GPT 並沒有真正的「boot」標誌。啟動僅依賴於設備上的相應記錄。某些 GPT 分區工具標記的「boot」僅意味著它是一個 EFI 系統分區。
- 不要求所有的分區都在同一個硬碟上。
- 不要求所有的硬碟使用相同的分區表類型。

#### UEFI/GPT 布局示例

掛載點 | 分區 | 分區類型 GUID | 推薦大小
--- | --- | --- | ---
`/boot` or `/efi` 1 | `/dev/sda1` | `C12A7328-F81F-11D2-BA4B-00A0C93EC93B`: EFI system partition | 1 GiB
`[SWAP]` | `/dev/sda2` | `0657FD6D-A4AB-43C4-84E5-0933C84B4F4F`: Linux swap | 至少 4 GiB，使用 休眠 時等於內存大小
`/` | `/dev/sda3` | `4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709`: Linux x86-64 root (/) | 剩餘空間，至少 23 - 32 GiB

#### MBR/BIOS 示例

掛載點 | 分區類型 | 分區類型 ID | Boot flag | Suggested size
--- | --- | --- | --- | ---
`[SWAP]` | `/dev/sda1` | `82`: Linux swap | 否 | 至少 4 GiB，使用 休眠 時等於內存大小
`/` | `/dev/sda2` | `83`: Linux | 是 | 剩餘空間，至少 23 - 32 GiB
N/A | Unallocated space2 | N/A | N/A | At least 16.5 KiB at the end of the disk

#### BIOS/GPT 布局示例

掛載點 | 分區 | 分區類型 GUID | 推薦大小
--- | --- | --- | ---
None | `/dev/sda1` | `21686148-6449-6E6F-744E-656564454649`: BIOS boot partition 3 | 1 MiB
`[SWAP]` | `/dev/sda2` | `0657FD6D-A4AB-43C4-84E5-0933C84B4F4F`: Linux swap | 至少 4 GiB，使用 休眠 時等於內存大小
`/` | `/dev/sda3` | `4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709`: Linux x86-64 root (/) | `2`: Legacy BIOS bootable | 23 - 32 GiB

1. The ESP can be mounted to `/efi` if the used boot loader is capable of accessing the file system (and everything above it) on which the kernel and initramfs images are located. See EFI system partition#Typical mount points and the warning in Arch boot process#Boot loader for details.

1. An unpartitioned space of at least 33 512-byte sectors (16.5 KiB) at the end of the disk to allow converting to GPT in the future. The space will be required for the backup GPT header. The recommendation to preserve an unpartitioned space applies to all MBR partitioned disks.

1. A BIOS boot partition is only required when using GRUB for BIOS booting from a GPT disk, it is not needed when using other boot loaders. The partition has nothing to do with `/boot`, and it must not be formatted with a file system or mounted.

## 分區工具

下面表格可以幫助選擇。

警告：請選擇與分區表類型相兼容的工具。不兼容的工具可能損壞分區表，以至於損壞數據。

GPT | CLI | TUI | Scripting utility
--- | --- | --- | ---
fdisk | util-linux包 | 是 | 是 | fdisk(8) | cfdisk(8) | sfdisk(8)
GPT fdisk | gptfdisk包 | 否 | 是 | gdisk(8) | cgdisk(8) | sgdisk(8)
Parted | parted包 | 是 | 是 | parted(8) | 否 | parted(8)

### fdisk/gdisk

請參考 fdisk。

- fdisk — Linux 自帶的命令行分區工具。

  https://www.kernel.org/ || util-linux包

- cfdisk — 使用 ncurses 庫編寫的具有偽圖形界面的命令行分區工具。

  https://www.kernel.org/ || util-linux包

- sfdisk — 支持腳本的 fdisk.

  https://www.kernel.org/pub/linux/utils/util-linux/ || util-linux包

- gdisk — GPT 版的 fdisk。

  https://www.rodsbooks.com/gdisk/ || gptfdisk包

- cgdisk — GPT 版的 cfdisk。

  https://www.rodsbooks.com/gdisk/ || gptfdisk包

- sgdisk — Scriptable version of gdisk.

  https://www.rodsbooks.com/gdisk/sgdisk-walkthrough.html || gptfdisk包

### GNU Parted

下面工具在 GNU Parted 中有介紹。

- GNU Parted — 命令行分區工具。

  https://www.gnu.org/software/parted/parted.html || parted包

- GParted — GTK 圖形界面的分區工具。

  http://gparted.sourceforge.net/ || gparted包

- GNOME Disks — GTK 寫的圖形分區工具.

  https://wiki.gnome.org/Apps/Disks || gnome-disk-utility包

- Partitionmanager — QT 圖形界面的分區工具。

  https://sourceforge.net/projects/partitionman/ || partitionmanager包

### 備份

請參閱 fdisk#Backup and restore partition table 或 gdisk#Backup and restore partition table.

### 恢復

- gpart — 可猜測被破壞的 MBR 分區表內容。用法在gpart(8)。

  https://github.com/baruch/gpart || gpart包

- GPT fdisk[損壞的連結：無效的章節] — 該工具可從副 GPT 分區表（存儲於磁碟末尾）恢復主 GPT 分區表（存儲於磁碟開頭），或是反過來。

  https://www.rodsbooks.com/gdisk/ || gptfdisk包

- TestDisk — 該工具可恢復 MBR 或 GPT 丟失分區。

  https://www.cgsecurity.org/index.html?testdisk.html || testdisk包

## 分區對齊

恰當的分區對齊有助於提升性能和使用壽命。這是由硬體層面和文件系統層面的每次塊 I/O 操作特性決定的。對齊的關鍵是分區大小（至少）是塊大小的倍數，塊大小取決於選用的硬體設備。如果分區沒有以塊大小的整數倍對齊，對齊文件系統就失去意義了，因為從分區的起始偏移開始就是有偏差的。

fdisk/gdisk 和 parted 會自動處理分區對齊。GNU Parted#Check alignment 介紹了如何驗證分區是否對齊。

有些硬碟使用高級格式會提供更好的讀寫效率。

### GPT 內核支持

Linux 內核中 `CONFIG_EFI_PARTITION` 選項配置是否啟用內核 GPT 支持（即使名稱為 EFI PARTITION）。此選項必須內置於內核，不能作為可加載模塊。即使 GPT 磁碟只用作數據存儲而不作為啟動盤，此選項也是必須的。在 Arch [core] 倉庫中的 linux包 和 linux-lts包 內核默認啟用此選項。如果自定內核，設置 `CONFIG_EFI_PARTITION=y` 啟用此選項。

## Troubleshooting

### Tricking old BIOS into booting from GPT

Some old BIOSes (from before year 2010) attempt to parse the boot sector and refuse to boot it if it does not contain a bootable MBR partition. This is a problem if one wants to use GPT on this disk, because, from the BIOS viewpoint, it contains only one, non-bootable, MBR partition of type `ee` (i.e., the protective MBR partition). One can mark the protective MBR entry as bootable using `fdisk -t mbr /dev/sda`, and it will work on some BIOSes. However, the UEFI specification prohibits the protective MBR partition entry from being bootable, and UEFI-based boards do care about this, even in the legacy boot mode. So, this matters if one wants to create a GPT-based USB flash drive that is supposed to boot both on modern UEFI-based boards and also on old BIOSes that insist on finding a bootable MBR partition. It is not possible to solve this problem using traditional tools such as fdisk or gdisk, but it is possible to create a fake MBR partition entry suitable for both kinds of BIOSes manually as a sequence of bytes.

The command below will overwrite the second MBR partition slot and add a bootable partition there of type 0 (i.e. unused), covering only the first sector of the device. It will not interfere with the GPT or with the first MBR partition entry which normally contains a protective MBR partition.

    # printf '\200\0\0\0\0\0\0\0\0\0\0\0\001\0\0\0' | dd of=/dev/sda bs=1 seek=462

最終結果看起來是這樣的:

    # fdisk -t mbr -l /dev/sda

    Disk /dev/sda: 232.9 GiB, 250059350016 bytes, 488397168 sectors
    Disk model: ST3250820AS
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x00000000

    Device     Boot Start       End   Sectors   Size Id Type
    /dev/sda1           1 488397167 488397167 232.9G ee GPT
    /dev/sda2  *        0         0         1   512B  0 Empty

    Partition table entries are not in disk order.

### 啟用固件 RAID 時無法找到硬碟

如果在固件配置界面可以看到 SATA 或 NVMe 硬碟，但在 Linux 中找不到（例如 `fdisk -l` 中沒有），有可能控制器正處於固件 RAID 模式。

對於 NVMe，journal 會顯示如下信息：

    kernel: ahci 0000:00:17.0: Found 1 remapped NVMe devices.
    kernel: ahci 0000:00:17.0: Switch your BIOS from RAID to AHCI mode to use them.

解決方案是進入固件配置界面，禁用 NVMe RAID 模式並將 SATA 控制器運行模式從 RAID 修改為 AHCI。注意，該設置的名稱可能會有所不同（例如「Intel Rapid Storage Technology」，「Intel RST」，「Intel VMD controller」或「VMD」），且可能會是控制器或埠獨立的。

警告：在使用 Arch + Windows 雙系統的情況下，在更改控制器模式前需要進行些準備，具體請參考完成安裝後如何在 Windows 8 和 Windows 10 中啟用 AHCI。
注意：有些固件沒有單獨的 NVMe RAID 模式配置項，並會將 SATA 控制器運行模式應用到 NVMe 控制器上。在這些固件上，將「SATA 運行模式」設為「AHCI」會將 NVMe 控制器設為「不使用固件 RAID，使用原生運行模式」。[2][3][4]

## 參考資料

- Wikipedia:Disk partitioning
- Wikipedia:Binary prefix
- Understanding Disk Drive Terminology
- What is a Master Boot Record (MBR)?
- Rod Smith's page on What's a GPT? and Booting OSes from GPT
- Make the most of large drives with GPT and Linux - IBM Developer Works
- Microsoft's Windows and GPT FAQ
- Partition Alignment (with examples)

分類：​

- 文件系統
- 啟動過程
- 系統恢復

隱藏分類：​

- 包含損壞章節連結的頁面

分區
新增話題