塊設備持久化命名 - Arch Linux 中文维基

跳至內容

# 塊設備持久化命名

出自 Arch Linux 中文维基
翻譯狀態：

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

相關文章

- fstab
- udev
- LVM

本文講述如何為你的塊設備提供持久化命名。udev 的導入使之成為可能，也使之優於基於總線的命名法。如果你的設備上有多個硬碟使用同一套命名方案，那麼添加對應設備節點的順序是完全隨機的。這可能會使每次啟動時塊設備的名稱（例如 `/dev/sda` 和 `/dev/sdb`，`/dev/nvme0n1` 和 `/dev/nvme1n1`，`/dev/mmcblk0` 和 `/dev/mmcblk1`）都被隨機調換，並導致系統無法啟動，內核錯誤或是塊設備消失等問題出現。持久化命名法可以解決這些問題。

注意：

- 持久化命名存在一些超出本文範圍的限制，比如雖然 mkinitcpio 支持某個方法，但 systemd 會對啟動時支持的設備名添加額外的限制（例如 FS#42884）。
- 本文與 LVM 邏輯卷無關，因為 `/dev/VolumeGroupName/LogicalVolumeName` 設備路徑是持久化的。

## 持久化命名的方法

有多種方案可以提供由 udev 管理的持久化命名：

- `60-persistent-storage.rules` 提供了四種默認方案：通過標籤、通過 uuid、通過 id 和 通過路徑。對於使用 GUID 分區表（GPT）的硬碟還有額外兩種方案：通過分區標籤和通過分區 uuid。
- `99-systemd.rules` 還為支持 GPT 分區自動掛載的環境提供了 gpt-auto 方案

`/dev/disk/` 中的文件夾是動態創建和銷毀的，這取決於其中是否有設備。

注意：請注意硬碟克隆會創建兩個有著相同名字的不同磁碟。

下面講解各種命名方案及其用法。

lsblk 命令用於以圖示方式查看第一種方案：

    $ lsblk -f

    NAME        FSTYPE LABEL      UUID                                 MOUNTPOINT
    sda
    ├─sda1      vfat              CBB6-24F2                            /boot
    ├─sda2      ext4   Arch Linux 0a3407de-014b-458b-b5c1-848e92a327a3 /
    ├─sda3      ext4   Data       b411dc99-f0a0-4c87-9e05-184977be8539 /home
    └─sda4      swap              f9fe0b69-a280-415d-a03a-a32752370dee [SWAP]
    mmcblk0
    └─mmcblk0p1 vfat              F4CA-5D75

使用 GPT 時應改用 `blkid` 命令，這個命令更方便腳本使用但可讀性低：

    # blkid

    /dev/sda1: UUID="CBB6-24F2" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="d0d0d110-0a71-4ed6-936a-304969ea36af"
    /dev/sda2: LABEL="Arch Linux" UUID="0a3407de-014b-458b-b5c1-848e92a327a3" TYPE="ext4" PARTLABEL="GNU/Linux" PARTUUID="98a81274-10f7-40db-872a-03df048df366"
    /dev/sda3: LABEL="Data" UUID="b411dc99-f0a0-4c87-9e05-184977be8539" TYPE="ext4" PARTLABEL="Home" PARTUUID="7280201c-fc5d-40f2-a9b2-466611d3d49e"
    /dev/sda4: UUID="f9fe0b69-a280-415d-a03a-a32752370dee" TYPE="swap" PARTLABEL="Swap" PARTUUID="039b6c1c-7553-4455-9537-1befbc9fbc5b"
    /dev/mmcblk0: PTUUID="0003e1e5" PTTYPE="dos"
    /dev/mmcblk0p1: UUID="F4CA-5D75" TYPE="vfat" PARTUUID="0003e1e5-01"

### 通過標籤

幾乎每一種文件系統都可以有一個標籤。所有有標籤的卷都在 `/dev/disk/by-label` 目錄中列出。

    $ ls -l /dev/disk/by-label/

    total 0
    lrwxrwxrwx 1 root root 10 May 27 23:31 Data -> ../../sda3
    lrwxrwxrwx 1 root root 10 May 27 23:31 Arch\x20Linux -> ../../sda2

大多數文件系統都支持在創建文件系統時設置標籤，詳見相關的 `mkfs.*` 工具的 man 手冊。有些文件系統還能修改標籤。下面列出了一些常見文件系統修改標籤的方式:

btrfs
  `btrfs filesystem label /dev/XXX "new label"`（如已掛載，需使用掛載點）- 需要 btrfs-progs包
crypto_LUKS（僅 LUKS2）
  `cryptsetup config --label="new label" /dev/XXX` - 需要 cryptsetup包
exfat
  `tune.exfat -L "new label" /dev/XXX` - 需要 exfatprogs包
  `exfatlabel /dev/XXX "new label"` - 需要 exfatprogs包 或 exfat-utils包
ext2/3/4
  `e2label /dev/XXX "new label"` - 需要 e2fsprogs包
fat/vfat
  `fatlabel /dev/XXX "new label"` - 需要 dosfstools包
  `mlabel -i /dev/XXX ::"new label"` - 需要 mtools包
jfs
  `jfs_tune -L "new label" /dev/XXX` - 需要 jfsutils包
ntfs
  `ntfslabel /dev/XXX "new label"` - 需要 ntfs-3g包
reiserfs
  `reiserfstune -l "new label" /dev/XXX` - 需要 reiserfsprogsAUR
swap
  `swaplabel -L "new label" /dev/XXX` - 需要 util-linux包
udf
  `udflabel /dev/XXX "new label"` - 需要 udftools包
xfs
  `xfs_admin -L "new label" /dev/XXX`（如已掛載，需使用掛載點）- 需要 xfsprogs包

可以通過 lsblk 獲得設備的標籤：

    $ lsblk -dno LABEL /dev/sda2

    Arch Linux

也可以使用 blkid：

    # blkid -s LABEL -o value /dev/sda2

    Arch Linux

注意：

- 標籤必須是唯一的，以防止可能的衝突。
- 標籤最多可以有 16 個字符。
- 標籤是文件系統的一個屬性，所以無法持久地表示單個硬碟陣列（RAID）設備。
- 在使用 dm-crypt 的加密容器時，容器內的文件系統的標籤在容器被鎖定/加密時是不可用的。

### 通過 uuid

UUID 是一種為每個文件系統提供唯一標識符的機制。這些標識符是在設備被格式化時，通過文件系統工具生成的（例如 `mkfs.*`），並且在設計上不太可能發生衝突。所有 GNU/Linux 文件系統 (包括 swap 和全加密設備的 LUKS 頭欄位）都支持 UUID。FAT，exFAT 和 NTFS 文件系統不支持 UUID，但是依舊會有一個較短的 UID（唯一標識符）在 `/dev/disk/by-uuid/` 中列出：

    $ ls -l /dev/disk/by-uuid/

    total 0
    lrwxrwxrwx 1 root root 10 May 27 23:31 0a3407de-014b-458b-b5c1-848e92a327a3 -> ../../sda2
    lrwxrwxrwx 1 root root 10 May 27 23:31 b411dc99-f0a0-4c87-9e05-184977be8539 -> ../../sda3
    lrwxrwxrwx 1 root root 10 May 27 23:31 CBB6-24F2 -> ../../sda1
    lrwxrwxrwx 1 root root 10 May 27 23:31 f9fe0b69-a280-415d-a03a-a32752370dee -> ../../sda4
    lrwxrwxrwx 1 root root 10 May 27 23:31 F4CA-5D75 -> ../../mmcblk0p1

可以通過 lsblk 獲取設備的 UUID：

    $ lsblk -dno UUID /dev/sda1

    CBB6-24F2

或使用 blkid：

    # blkid -s UUID -o value /dev/sda1

    CBB6-24F2

使用 UUID 方法的優勢在於，與使用標籤相比，發生名稱衝突的可能性要小得多。此外，它是在創建文件系統時自動生成的。舉個例子，即使設備插入另一個系統（那個系統上可能有一個具有相同標籤的設備），它也會保持唯一。

這個方法的壞處是 UUID 使長代碼行難以閱讀，並會打亂許多配置文件中的格式（例如 fstab 或 crypttab）。此外,每次重新格式化卷時都會生成一個新的 UUID，使得必須手動調整配置文件。

提示：如果您的交換卷沒有分配 UUID，你將需要使用 mkswap 工具來重置它。

### 通過 id 和 通過路徑

`by-id` 會依據硬體序列號創建一個唯一的名字，`by-path` 則取決於最短的物理路徑（根據 sysfs）。兩者都包含字符串以指示它們屬於哪個子系統（例如 `by-path` 中的 `-ide-` 和 `by-id` 中的 `-ata-`），使得它們與控制設備的硬體相關聯。這意味著不同級別的持久性：`by-path` 會在設備插入控制器的不同埠時改變，`by-id` 會在設備插入受另一個子系統約束的硬體控制器的埠時改變。[1]因此,兩者都不適合實現針對硬體更改的持久化命名。

然而,兩者都提供了在大型硬體基礎設施中查找特定設備的重要信息。舉個例子,如果你沒有手動分配持久性的標籤（`by-label` 或 `by-partlabel`），但保留有一個包含硬體埠使用情況的目錄，那可以通過 `by-id` 和 `by-path` 來找到特定的設備。[2] [3]

注意：

- `by-id` 和 `by-path` 連結只能被視為硬碟持久化,而不是分區。分區將通過其在分區表中的編號進行引用,並且如果對分區重新排序,該編號可能會發生變化。
- 如果添加或移除了 PCIe 設備，或是系統固件無法對它們進行枚舉，那麼 NVMe 設備的 `/dev/disk/by-path/pci-*` 路徑可能會產生變化。
- 不帶命名空間標識符（NSID）的 NVMe 設備 `by-id` 連結已過時。請使用在設備序列號後帶有命名空間的連結（例如為首個命名空間使用 `_1`，或是對首個命名空間的首個分區使用 `_1-part1`。）

    $ ls -l /dev/disk/by-id/

    total 0
    lrwxrwxrwx 1 root root 10 May 27 23:31 ata-WDC_WD2500BEVT-22ZCT0_WD-WXE908VF0470 -> ../../sda
    lrwxrwxrwx 1 root root 10 May 27 23:31 ata-WDC_WD2500BEVT-22ZCT0_WD-WXE908VF0470-part1 -> ../../sda1
    lrwxrwxrwx 1 root root 10 May 27 23:31 ata-WDC_WD2500BEVT-22ZCT0_WD-WXE908VF0470-part2 -> ../../sda2
    lrwxrwxrwx 1 root root 10 May 27 23:31 ata-WDC_WD2500BEVT-22ZCT0_WD-WXE908VF0470-part3 -> ../../sda3
    lrwxrwxrwx 1 root root 10 May 27 23:31 ata-WDC_WD2500BEVT-22ZCT0_WD-WXE908VF0470-part4 -> ../../sda4
    lrwxrwxrwx 1 root root 10 May 27 23:31 mmc-SD32G_0x0040006d -> ../../mmcblk0
    lrwxrwxrwx 1 root root 10 May 27 23:31 mmc-SD32G_0x0040006d-part1 -> ../../mmcblk0p1
    lrwxrwxrwx 1 root root 13 May 27 23:31 nvme-Samsung_SSD_970_EVO_Plus_2TB_S4J4NJ0N704064T -> ../../nvme1n1
    lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-Samsung_SSD_970_EVO_Plus_2TB_S4J4NJ0N704064T-part1 -> ../../nvme1n1p1
    lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-Samsung_SSD_970_EVO_Plus_2TB_S4J4NJ0N704064T-part2 -> ../../nvme1n1p2
    lrwxrwxrwx 1 root root 13 May 27 23:31 nvme-Samsung_SSD_970_EVO_Plus_2TB_S4J4NJ0N704064T_1 -> ../../nvme1n1
    lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-Samsung_SSD_970_EVO_Plus_2TB_S4J4NJ0N704064T_1-part1 -> ../../nvme1n1p1
    lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-Samsung_SSD_970_EVO_Plus_2TB_S4J4NJ0N704064T_1-part2 -> ../../nvme1n1p2
    lrwxrwxrwx 1 root root 13 May 27 23:31 nvme-WDS100T1X0E-00AFY0_21455A801268 -> ../../nvme0n1
    lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-WDS100T1X0E-00AFY0_21455A801268-part1 -> ../../nvme0n1p1
    lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-WDS100T1X0E-00AFY0_21455A801268-part2 -> ../../nvme0n1p2
    lrwxrwxrwx 1 root root 13 May 27 23:31 nvme-WDS100T1X0E-00AFY0_21455A801268_1 -> ../../nvme0n1
    lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-WDS100T1X0E-00AFY0_21455A801268_1-part1 -> ../../nvme0n1p1
    lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-WDS100T1X0E-00AFY0_21455A801268_2-part2 -> ../../nvme0n1p2
    lrwxrwxrwx 1 root root 13 May 27 23:31 nvme-eui.002538570142d716 -> ../../nvme1n1
    lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-eui.002538570142d716-part1 -> ../../nvme1n1p1
    lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-eui.002538570142d716-part2 -> ../../nvme1n1p2
    lrwxrwxrwx 1 root root 13 May 27 23:31 nvme-eui.e8238fa6bf530001001b448b4566aa1a -> ../../nvme0n1
    lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-eui.e8238fa6bf530001001b448b4566aa1a-part1 -> ../../nvme0n1p1
    lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-eui.e8238fa6bf530001001b448b4566aa1a-part2 -> ../../nvme0n1p2
    lrwxrwxrwx 1 root root 10 May 27 23:31 wwn-0x60015ee0000b237f -> ../../sda
    lrwxrwxrwx 1 root root 10 May 27 23:31 wwn-0x60015ee0000b237f-part1 -> ../../sda1
    lrwxrwxrwx 1 root root 10 May 27 23:31 wwn-0x60015ee0000b237f-part2 -> ../../sda2
    lrwxrwxrwx 1 root root 10 May 27 23:31 wwn-0x60015ee0000b237f-part3 -> ../../sda3
    lrwxrwxrwx 1 root root 10 May 27 23:31 wwn-0x60015ee0000b237f-part4 -> ../../sda4

    $ ls -l /dev/disk/by-path/

    total 0
    lrwxrwxrwx 1 root root 10 May 27 23:31 pci-0000:00:1f.2-ata-1 -> ../../sda
    lrwxrwxrwx 1 root root 10 May 27 23:31 pci-0000:00:1f.2-ata-1-part1 -> ../../sda1
    lrwxrwxrwx 1 root root 10 May 27 23:31 pci-0000:00:1f.2-ata-1-part2 -> ../../sda2
    lrwxrwxrwx 1 root root 10 May 27 23:31 pci-0000:00:1f.2-ata-1-part3 -> ../../sda3
    lrwxrwxrwx 1 root root 10 May 27 23:31 pci-0000:00:1f.2-ata-1-part4 -> ../../sda4
    lrwxrwxrwx 1 root root 13 May 27 23:31 pci-0000:01:00.0-nvme-1 -> ../../nvme0n1
    lrwxrwxrwx 1 root root 15 May 27 23:31 pci-0000:01:00.0-nvme-1-part1 -> ../../nvme0n1p1
    lrwxrwxrwx 1 root root 15 May 27 23:31 pci-0000:01:00.0-nvme-1-part2 -> ../../nvme0n1p2
    lrwxrwxrwx 1 root root 13 May 27 23:31 pci-0000:04:00.0-nvme-1 -> ../../nvme1n1
    lrwxrwxrwx 1 root root 15 May 27 23:31 pci-0000:04:00.0-nvme-1-part1 -> ../../nvme1n1p1
    lrwxrwxrwx 1 root root 15 May 27 23:31 pci-0000:04:00.0-nvme-1-part2 -> ../../nvme1n1p2
    lrwxrwxrwx 1 root root 10 May 27 23:31 pci-0000:07:00.0-platform-rtsx_pci_sdmmc.0 -> ../../mmcblk0
    lrwxrwxrwx 1 root root 10 May 27 23:31 pci-0000:07:00.0-platform-rtsx_pci_sdmmc.0-part1 -> ../../mmcblk0p1

#### 全局名稱（World Wide Name）

`by-id` 還會為支持的存儲設備創建全局名稱（World Wide Name，WWN）連結。與其它 `by-id` 連結不同，WWN 是完全持久化的，不會隨使用的子系統而變化。

SATA 和 SAS 設備帶有 `wwn-` 前綴，而 NVMe 設備會使用不同的 WWN 格式，其前綴為 `nvme-eui.`。[4]

提示：存儲設備的 WWN 通常會寫在其標籤（硬碟上面的貼紙）上。

    $ ls -l /dev/disk/by-id/{wwn-,nvme-eui.}*

    lrwxrwxrwx 1 root root 13 May 27 23:31 nvme-eui.002538570142d716 -> ../../nvme1n1
    lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-eui.002538570142d716-part1 -> ../../nvme1n1p1
    lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-eui.002538570142d716-part2 -> ../../nvme1n1p2
    lrwxrwxrwx 1 root root 13 May 27 23:31 nvme-eui.e8238fa6bf530001001b448b4566aa1a -> ../../nvme0n1
    lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-eui.e8238fa6bf530001001b448b4566aa1a-part1 -> ../../nvme0n1p1
    lrwxrwxrwx 1 root root 15 May 27 23:31 nvme-eui.e8238fa6bf530001001b448b4566aa1a-part2 -> ../../nvme0n1p2
    lrwxrwxrwx 1 root root 10 May 27 23:31 wwn-0x60015ee0000b237f -> ../../sda
    lrwxrwxrwx 1 root root 10 May 27 23:31 wwn-0x60015ee0000b237f-part1 -> ../../sda1
    lrwxrwxrwx 1 root root 10 May 27 23:31 wwn-0x60015ee0000b237f-part2 -> ../../sda2
    lrwxrwxrwx 1 root root 10 May 27 23:31 wwn-0x60015ee0000b237f-part3 -> ../../sda3
    lrwxrwxrwx 1 root root 10 May 27 23:31 wwn-0x60015ee0000b237f-part4 -> ../../sda4

### 通過分區標籤

注意：此方法僅涉及具有 GUID 分區表（GPT）的硬碟。

在 GPT 硬碟上，GPT 分區標籤可以在分區條目的頭欄位中定義。

這個方法與文件系統標籤很相似，但是分區標籤不隨分區文件系統的修改而變動。

所有分區的分區標籤都於 `/dev/disk/by-partlabel` 目錄中列出。

    $ ls -l /dev/disk/by-partlabel/

    total 0
    lrwxrwxrwx 1 root root 10 May 27 23:31 EFI\x20system\x20partition -> ../../sda1
    lrwxrwxrwx 1 root root 10 May 27 23:31 GNU\x2fLinux -> ../../sda2
    lrwxrwxrwx 1 root root 10 May 27 23:31 Home -> ../../sda3
    lrwxrwxrwx 1 root root 10 May 27 23:31 Swap -> ../../sda4

設備的分區標籤可以用 lsblk 獲取：

    $ lsblk -dno PARTLABEL /dev/sda1

    EFI system partition

或使用 blkid：

    # blkid -s PARTLABEL -o value /dev/sda1

    EFI system partition

注意：

- GPT 分區標籤也需要各不相同來避免衝突。要想改變分區標籤，你可以使用 gdisk 或基於 ncurse 的 cgdisk。它們都可通過 gptfdisk包 軟體包獲取。具體信息請參考分區#分區工具。
- 根據規範,GPT 分區標籤最多可以有 72 字符長。

### 通過分區 uuid

與 GPT 分區標籤類似，GPT 分區 UUID 也在 GPT 硬碟的分區條目中定義。

MBR 不支持分區 UUID，但是使用 libblkid[5] 的 Linux[6] 和軟體（例如 udev[7]）能夠為 MBR 分區生成偽分區 UUID。其格式為 `SSSSSSSS-PP`，其中 `SSSSSSSS` 是一個零填充的 32 位 MBR 硬碟簽名，而 `PP` 則是一個十六進制形式的零填充分區號。和一般的 GPT 分區的分區 UUID 不同，MBR 的偽分區 UUID 會在分區改變時改變。

動態目錄與其它方法相似，就像文件系統 UUID，比起標籤更推薦使用 UUID。

    $ ls -l /dev/disk/by-partuuid/

    total 0
    lrwxrwxrwx 1 root root 10 May 27 23:31 0003e1e5-01 -> ../../mmcblk0p1
    lrwxrwxrwx 1 root root 10 May 27 23:31 039b6c1c-7553-4455-9537-1befbc9fbc5b -> ../../sda4
    lrwxrwxrwx 1 root root 10 May 27 23:31 7280201c-fc5d-40f2-a9b2-466611d3d49e -> ../../sda3
    lrwxrwxrwx 1 root root 10 May 27 23:31 98a81274-10f7-40db-872a-03df048df366 -> ../../sda2
    lrwxrwxrwx 1 root root 10 May 27 23:31 d0d0d110-0a71-4ed6-936a-304969ea36af -> ../../sda1

設備的分區 UUID 可以用 lsblk 獲得：

    $ lsblk -dno PARTUUID /dev/sda1

    d0d0d110-0a71-4ed6-936a-304969ea36af

或使用 blkid：

    # blkid -s PARTUUID -o value /dev/sda1

    d0d0d110-0a71-4ed6-936a-304969ea36af

### gpt-auto

如果滿足了 systemd-gpt-auto-generator 的所有需求，那麼 udev 會自動創建指向根卷設備的 `/dev/gpt-auto-root` 符號連結。如果根分區使用了 LUKS 加密，那麼 `/dev/gpt-auto-root` 會指向已解鎖/映射的卷，而 `/dev/gpt-auto-root-luks` 會指向加密了的分區。

    $ ls -l /dev/gpt-auto-*

    lrwxrwxrwx 1 root root 10 May 27 23:31 /dev/gpt-auto-root -> dm-0
    lrwxrwxrwx 1 root root 10 May 27 23:31 /dev/gpt-auto-root-luks -> nvme1n1p2

## 使用持久名稱

有多種應用可以配置為使用持久名稱。下面列出了一些配置的例子：

### fstab

請見主文章：fstab#文件系統標識。

### 內核參數

要在內核參數中使用持久化名稱，需要滿足下列先決條件。在遵循安裝指南的標準安裝中，需滿足兩個條件：

- 你在使用一個包含 udev 的 initramfs 鏡像。
- 對於 mkinitcpio，需在 `/etc/mkinitcpio.conf` 中啟用 `udev` 或 `systemd` 鉤子。

根文件系統的位置在內核命令行中是通過 `root` 參數傳遞的。內核命令行是通過引導加載程序配置的，詳見內核參數#啟動管理器配置。要想修改為持久化設備名，只需修改用於指定塊設備的參數，例如 `root` 和 `resume`，而其它參數則保持不變。支持多種命名方案：

在這個以 `Arch Linux` 為根文件系統標籤的例子中，展示了使用標籤的持久化設備名和 `LABEL=` 格式：

    root="LABEL=Arch Linux"

在這個以 `0a3407de-014b-458b-b5c1-848e92a327a3` 為根文件系統 UUID 的例子中，展示了使用 uuid 的持久化設備名和 `UUID=` 格式：

    root=UUID=0a3407de-014b-458b-b5c1-848e92a327a3

在這個以 `wwn-0x60015ee0000b237f-part2` 為根分區 id 的例子中，展示了使用磁碟 id 的持久化設備名和 `/dev` 路徑格式。

    root=/dev/disk/by-id/wwn-0x60015ee0000b237f-part2

在這個以 `98a81274-10f7-40db-872a-03df048df366` 為根分區的分區 UUID 的例子中，展示了使用 GPT 分區 UUID 的持久化設備名和 `PARTUUID=` 格式：

    root=PARTUUID=98a81274-10f7-40db-872a-03df048df366

在這個以 `GNU/Linux` 為根分區的分區標籤的例子中，展示了使用 GPT 分區標籤的持久化設備名和 `PARTLABEL=` 格式。

    root="PARTLABEL=GNU/Linux"

在使用 GPT 分區自動掛載時，可以直接省略 `root=` 參數。如果希望顯式進行指定，可以使用：

    root=gpt-auto

分類：​

- 啟動過程
- 文件系統
- 硬體檢測和故障排除

塊設備持久化命名
新增話題