使用 sgdisk 管理分割區

2019-04-24 11:33:00

Roderick W. Smithsgdisk 命令可在命令列中管理硬碟的分割區。下面將介紹使用它所需的基礎知識。

使用 sgdisk 的大多數基本功能只需要了解以下六個引數:

1、-p 列印 分割區表:

# sgdisk -p /dev/sda

2、 -d x 刪除 分割區 x:

# sgdisk -d 1 /dev/sda

3、 -n x:y:z 建立一個編號 x 的分割區,從 y 開始,從 z 結束:

# sgdisk -n 1:1MiB:2MiB /dev/sda

4、-c x:y 更改分割區 x 的名稱為 y:

# sgdisk -c 1:grub /dev/sda

5、-t x:y 將分割區 x 的型別更改為 y:

# sgdisk -t 1:ef02 /dev/sda

6、–list-types 列出分割區型別程式碼:

# sgdisk --list-types

如你在上面的例子中所見,大多數命令都要求將要操作的硬碟的裝置檔名指定為最後一個引數。

可以組合上面的引數,這樣你可以一次定義所有分割區:

# sgdisk -n 1:1MiB:2MiB -t 1:ef02 -c 1:grub /dev/sda

在值的前面加上 + 符號,可以為某些欄位指定相對值。如果你使用相對值,sgdisk 會為你做數學運算。例如,上面的例子可以寫成:

# sgdisk -n 1:1MiB:+1MiB -t 1:ef02 -c 1:grub /dev/sda

0 值對於以下幾個欄位有特殊意義:

  • 對於分割區號欄位,0 表示應使用下一個可用編號(編號從 1 開始)。
  • 對於起始地址欄位,0 表示使用最大可用空閒塊的頭。硬碟開頭的一些空間始終保留給分割區表本身。
  • 對於結束地址欄位,0 表示使用最大可用空閒塊的末尾。

通過在適當的欄位中使用 0 和相對值,你可以建立一系列分割區,而無需預先計算任何絕對值。例如,如果在一塊空白硬碟中,以下 sgdisk 命令序列將建立典型 Linux 安裝所需的所有基本分割區:

# sgdisk -n 0:0:+1MiB -t 0:ef02 -c 0:grub /dev/sda# sgdisk -n 0:0:+1GiB -t 0:ea00 -c 0:boot /dev/sda# sgdisk -n 0:0:+4GiB -t 0:8200 -c 0:swap /dev/sda# sgdisk -n 0:0:0 -t 0:8300 -c 0:root /dev/sda

上面的例子展示了如何為基於 BIOS 的計算機分割區硬碟。基於 UEFI 的計算機上不需要 grub 分割區。由於 sgdisk 在上面的範例中為你計算了所有絕對值,因此你可以在基於 UEFI 的計算機上跳過第一個命令,並且可以無需修改即可執行其餘命令。同樣,你可以跳過建立交換分割區,並且不需要修改其餘命令。

還有使用一個命令刪除硬碟上所有分割區的快捷方式:

# sgdisk --zap-all /dev/sda

關於最新和詳細資訊,請檢視手冊頁:

$ man sgdisk