Parted
GNU Parted 是創建和處理分區表的程序。GParted 是 GUI 前端。
安裝[編輯 | 編輯原始碼]
安裝下列任一軟體包:
使用[編輯 | 編輯原始碼]
Parted 有兩種模式:命令行模式和交互模式,請用下面命令啟動:
# parted device
其中 device
是要編輯的塊設備(例如 /dev/sda
,/dev/nvme0n1
,/dev/mmcblk0
等)。如果你預設了 device
參數,parted 將嘗試猜測要使用的設備。
命令行模式[編輯 | 編輯原始碼]
在命令行模式下,可以同時執行一個或多個命令:
# parted /dev/sda mklabel gpt mkpart P1 ext3 1MiB 8MiB
--help
等參數只有在命令行中才能指定。交互模式[編輯 | 編輯原始碼]
交互模式簡化了分區過程,並自動將所有命令應用到指定的設備上,無需反覆指定目標設備。
In order to start operating on a device, execute:
# parted /dev/sdx
命令提示符會從 (#
) 變成 (parted)
:這也意味著無需將新的命令提示符作為命令的一部分進行輸入。
要查看可用的命令,輸入:
(parted) help
完成操作後,或是要對另一個設備創建分區表或格式時,用下面命令退出:
(parted) quit
退出後命令提示符會變回到 #
。
如果命令沒帶參數,Parted 會進行詢問:
(parted) mklabel New disk label type? gpt
數值設定[編輯 | 編輯原始碼]
很多分區系統有複雜的限制,Parted 可能會對輸入的數值進行稍微的修改。例如設定了 10.4Mb,實際會使用 10.352Mb。如果修正後的數值差異太大,Parted 會進行提示確認。如果你有需要指定數值,或是想看看 Parted 所做的操作,可以用扇區值加上「s」後綴指定數值,並使用「unit s」命令讓分區信息以扇區值為單位顯示。
從 parted-2.4 開始,當使用 「MiB」, 「GiB」, 「TiB」 等 IEC 單位時,parted 會使用與對應的字節值(即「B」後綴)相同的精確數值,不進行任何修正。而使用「4GB」這樣的值時,可能會落到最大前後相差 500MB 的位置上。因此,在創建分區時,建議使用字節(「B」),扇區(「s」)或是像「MiB」這樣的 IEC 二進制單位,而不是「MB」,「GB」等。
分區[編輯 | 編輯原始碼]
創建新分區表[編輯 | 編輯原始碼]
如果一個硬碟沒有做過分區,或者是你想要修改分區表的類型,你需要為對應的設備創建/重建分區表。另外,對於分區方案要完全重建的設備來說,重建分區表也很有用。
用下面的命令打開要創建/重建分區表的設備:
# parted /dev/sdx
使用以下命令創建 GUID 分區表:
(parted) mklabel gpt
使用下列命令創建 MBR/MS-DOS 分區表:
(parted) mklabel msdos
分區方案[編輯 | 編輯原始碼]
你可以決定磁碟分區的數量和各自的大小,以及分區應掛載到安裝的系統上哪些文件夾(一般稱為掛載點)。可以在分區#分區方案查看具體需要的分區。
創建分區將用到如下命令:
(parted) mkpart part-type-or-part-label fs-type start end
- 根據分區表的不同,
part-type-or-part-label
有不同的解釋:- MBR:參數被用作為
分區類型
,可選值為primary
,extended
或logical
。 - GPT:參數被用作為
part-label
,即分區的 PARTLABEL 參數。如果想不設置分區標籤,可以使用引上的空字符(""
)。注意:網上的很多教程對 GPT 也使用了mkpart primary
開頭的錯誤命令,這一命令會將分區標籤設置為「primary」。
- MBR:參數被用作為
fs-type
是help mkpart
命令顯示的標識符中最接近使用的文件系統的一項。mkpart 命令並不會創建文件系統:fs-type
參數只是簡單地被 parted 用於為 GPT 分區設置分區類型 GUID 或是為 MBR 分區設置分區類型 ID。提示:parted 將 Linux 原生文件系統都映射為同一「Linux 文件系統」分區類型(GUID0FC63DAF-8483-4772-8E79-3D69D8477DE4
或是 ID0x83
),所以可以安全地進行例如為 ext4 格式的分區使用ext2
類型的操作。start
是相對於設備起始位置的分區開始位置,由一個數字加上單位組成,例如1MiB
值從 1 MiB 的位置開始。end
是相對於設備起始位置的分區結束位置(不是從start
的值開始)。它的格式與start
相同,例如100%
表示到設備的末端(使用所有剩餘空間)。
- 對於使用 MBR 分區表的硬碟,建議在硬碟末端留下至少 33 個 512-byte 扇區(16.5 KiB)的未分區空間,以保證 MBR 與 GPT 間轉換的兼容性。
- 為了不留空隙,分區的開始和結束應該首尾相連。
- parted 不支持指定一個分區相對於前一個分區的開始和結束位置。參見 bug #59176 和 bug #55841.
- parted 可能會報出以下錯誤:
Warning: The resulting partition is not properly aligned for best performance. Ignore/Cancel?在這種情況下,請參考分區#分區對齊並參照#對齊進行修復。
下列命令將包含 /boot
目錄的分區標記為可啟動:
(parted) set partition boot on
partition
是要標記的分區編號(參考print
命令的輸出)。esp
是 GPT 上boot
的別名。[2]
UEFI/GPT 示例[編輯 | 編輯原始碼]
在每一個實例上都需要一個特殊的 EFI 系統分區。
首先需要一個 EFI 系統分區.如果是和 Windows 雙系統啟動,此分區已經存在,不要重新創建。
使用如下命令創建新的 EFI 系統分區(建議至少 1 GiB):
(parted) mkpart "EFI system partition" fat32 1MiB 1025MiB (parted) set 1 esp on
剩下的空間可以隨你決定,例如完全用在根分區上:
(parted) mkpart "root partition" ext4 1025MiB 100% (parted) type 2 4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709
如果要拆分為 swap (4 GiB)和 /
(剩餘所有空間)兩個分區:
(parted) mkpart "swap partition" linux-swap 1025MiB 5121MiB (parted) mkpart "root partition" ext4 5121MiB 100% (parted) type 3 4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709
如果要拆分為 swap(4 GiB),/
(32 GiB)和 /home
(剩餘所有空間)三個分區:
(parted) mkpart "swap partition" linux-swap 1025MiB 5121MiB (parted) mkpart "root partition" ext4 5121MiB 37889MiB (parted) type 3 4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709 (parted) mkpart "home partition" ext4 37889MiB 100% (parted) set 4 linux-home on
BIOS/MBR 示例[編輯 | 編輯原始碼]
最簡單的方案是使用如下命令創建使用所有空間的單一主分區:
(parted) mkpart primary ext4 1MiB 100% (parted) set 1 boot on
在下面的示例中,將創建一個 4 GiB 的交換分區,然後使用所有剩餘空間創建一個 /
分區:
(parted) mkpart primary linux-swap 1MiB 4097MiB parted) mkpart primary ext4 4097MiB 100% (parted) set 2 boot on
在下面的最後一個示例中,將創建獨立的 /boot
(1 GiB)、swap (4 GiB)、/
(32 GiB) 和 /home
(所有剩餘空間)分區:
(parted) mkpart primary ext4 1MiB 1025MiB (parted) set 1 boot on (parted) set 1 bls_boot on (parted) mkpart primary linux-swap 1025MiB 5121MiB (parted) mkpart primary ext4 5121MiB 37889MiB (parted) mkpart primary ext4 37889MiB 100%
調整分區[編輯 | 編輯原始碼]
如果要擴展分區,必須先調整分區的大小,然後調整其上文件系統的大小;如果要縮小分區,必須先調整文件系統的大小,再調整分區,以避免數據丟失。
擴展分區[編輯 | 編輯原始碼]
在 parted 交互模式下擴展分區,使用:
(parted) resizepart number end
其中 number
是您正在擴展的分區的編號,而 end
是該分區的新末端(需要大於舊的末端)。
要擴展分區上的 ext2/3/4 文件系統,使用如下命令(如果沒有指定 size
,默認值為分區的大小):
# resize2fs /dev/sdaX size
要擴展 Btrfs 文件系統:
# btrfs filesystem resize size /path/to/mount/point
其中 /path/to/mount/point
代表要擴展的分區的掛載點,size
是新大小(格式如 16G
)或是修改值(格式如 +1G
)。使用 max
可以填充分區中的所有剩餘空間。
縮小分區[編輯 | 編輯原始碼]
縮小分區上的 ext2/3/4 文件系統:
# resize2fs /dev/sdaX size
縮小 Btrfs 文件系統:
# btrfs filesystem resize size /path/to/mount/point
其中 /path/to/mount/point
代表要縮小的分區的掛載點,而 size
是該分區的新大小。
然後在 parted 交互模式下縮小分區:
(parted) resizepart number end
其中 number
是要縮小的分區的編號,而 end
是該分區的新末端(需要小於舊末端)。
完成後,使用 util-linux包 中的 resizepart 命令告訴內核新的分區大小:
# resizepart device number size
其中 device
是保存分區的設備,number
是分區的編號, size
是格式為 512 字節扇區的分區新大小。
已知問題[編輯 | 編輯原始碼]
除非命令本身就具有危險性(例如rm,mklabel 和 mkpart),Parted 始終會在進行具有潛在危險性的操作前發出警告。
對齊[編輯 | 編輯原始碼]
在創建分區時,parted 可能會對分區未對齊發出警告,但不會對正確對齊的分區發出提示。例如:
(parted) mkpart primary fat16 0 32M Warning: The resulting partition is not properly aligned for best performance. Ignore/Cancel?
這一警告意味著分區的起始端未對其。輸入「Ignore」來無視警告,以扇區為格式輸出分區表來查看起始端位置,以捨入到 2 次方的值遞增作為起始端移除並重建分區,直到警告停止。 舉個例子,在具有 512B 扇區的快閃記憶體盤上,Parted 期望扇區的起始位置為 2048 的乘積,即 1 MiB 對齊。
如果你希望 parted 自動計算正確的對齊值,可以使用 0% 而不是特定值作為起始端。例如,如果要創建一個大 ext4 分區,可以使用如下命令:
(parted) mkpart primary ext4 0% 100%
小技巧[編輯 | 編輯原始碼]
Check alignment[編輯 | 編輯原始碼]
在已分區的硬碟上,你可以用 parted 驗證單個分區是否對齊。例如,要驗證 /dev/sda
上的分區 1,可以使用如下命令:
# parted /dev/sda (parted) align-check optimal 1 1 aligned