跳转至内容

Parted

来自 ArchWiki
(重定向自 GNU Parted)

GNU Parted 是一个用于创建和操作分区表的程序。GParted 是一个图形前端。

安装

安装以下软件包之一

注意 运行 GParted 作为 Wayland 上的 root 需要可选依赖项 xorg-xhost[1]

用法

Parted 有两种模式:命令行模式和交互模式。Parted 应该始终以

# parted device

其中 device块设备名称,如 /dev/sda/dev/nvme0n1/dev/mmcblk0 等。如果您省略 device 参数,parted 将尝试猜测您想要的设备。

命令行模式

在命令行模式下,后面跟有一个或多个命令。例如

# parted /dev/sda --script mklabel gpt mkpart P1 ext3 1MiB 8MiB 
注意 选项(如 --help)只能在命令行中指定。

交互模式

交互模式通过自动将所有分区命令应用于指定设备来简化分区过程并减少不必要的重复。

为了开始操作设备,执行

# parted /dev/sdx

您会注意到命令行提示符从井号 (#) 变为 (parted):这也意味着新的提示符不是在运行示例命令时手动输入的命令。

要查看可用命令列表,请输入

(parted) help

完成后,或者如果您希望为另一个设备实现分区表或方案,请使用以下命令退出 parted

(parted) quit

退出后,命令行提示符将变回 #

如果您没有为命令提供参数,Parted 将会提示您输入。例如

(parted) mklabel
New disk label type? gpt

取整

由于许多分区系统都有复杂的限制,Parted 通常会执行与您要求的略有不同的操作。(例如,创建一个从 10.352MB 开始的分区,而不是 10.4MB)如果计算出的值差异太大,Parted 将会要求您确认。如果您确切地知道您想要什么,或者想确切地看到 Parted 在做什么,指定分区的结束点(以扇区为单位,带有“s”后缀)并给出“unit s”命令将有助于使分区结束点以扇区显示。

从 parted-2.4 开始,当您使用 IEC 二进制单位(如“MiB”、“GiB”、“TiB”等)指定开始和/或结束值时,parted 将这些值视为精确值,等同于以字节为单位指定的相同数量(即,带有“B”后缀),它不会提供“有用的”模糊范围。与此形成对比的是,分区开始请求“4GB”可能会解析到该点之前或之后最多 500MB 的某个扇区。因此,在创建分区时,您应该优先指定字节(“B”)、扇区(“s”)或 IEC 二进制单位(如“MiB”)作为单位,而不是“MB”、“GB”等。

分区

创建新的分区表

警告 如果在有数据的磁盘上创建新的分区表,它将擦除磁盘上的所有数据。请确保这是您想要做的。
提示

当设备从未分区过,或者您想更改其分区表类型时,您需要(重新)创建设备的(分区)表。当需要从头开始重构分区方案时,重新创建设备的(分区)表也很有用。

使用以下命令打开每个必须(重新)创建(分区)表的设备

# parted /dev/sdx

要创建新的 GUID 分区表,请使用以下命令

(parted) mklabel gpt

要创建新的 主引导记录/MS-DOS 分区表,请使用

(parted) mklabel msdos

分区方案

本文章或章节需要扩充。

原因: 将所有百分比替换为明确的 MiB 对齐大小,以防止 对齐问题。同时警告有关这些问题。(在 Talk:Installation guide#Remove parted 中讨论)

您可以决定设备应被分割成分区的数量和大小,以及安装系统中将用于挂载分区的目录(也称为挂载点)。有关所需分区,请参阅 分区#分区方案

以下命令将用于创建分区

(parted) mkpart part-type-or-part-label fs-type start end
  • part-type-or-part-label 的解释根据分区表而有所不同
    • MBR:该参数被解释为 part-type,它可以是 primaryextendedlogical 之一。
    • GPT:该参数被解释为 part-label,它设置分区的 PARTLABEL 属性。要避免设置分区标签,请传递一个空的带引号的字符串 ("")。
      注意 网上许多教程使用的命令都以 mkpart primary 开头,即使是 GPT。它们是错误的,这会将“primary”设置为分区标签。
  • fs-type 是通过输入 help mkpart 列出的标识符中选择的最接近您将使用的文件系统的标识符。mkpart 命令实际上不会创建文件系统:fs-type 参数仅用于 parted 设置 GPT 分区的 分区类型 GUID 或 MBR 分区的 分区类型 ID
    提示
    • parted 将以 Linux 原生文件系统命名的类型映射到相同的“Linux filesystem”分区类型(GUID 0FC63DAF-8483-4772-8E79-3D69D8477DE4 或 ID 0x83),因此例如使用 ext2 来格式化为 ext4 的分区是完全安全的。
    • 使用 GPT 时,建议遵循 可发现分区规范,因为 systemd-gpt-auto-generator 可以自动挂载它们。EFI 系统分区、XBOOTLDR 分区、swap 分区和 home 分区类型可以使用 set 命令进行更改,而对于根分区和其他分区,您需要使用 type 命令手动指定分区类型 UUID。
  • start 是分区从设备开始的位置。它由一个数字后跟一个 单位组成,例如 1MiB 表示从 1 MiB 开始。
  • end 是分区从设备开始的位置(不是start 值开始)。它具有与 start 相同的语法,例如 100% 表示在设备末尾结束(使用所有剩余空间)。
提示
  • 在具有 MBR 分区表的磁盘上,请在磁盘末尾留出至少 33 个 512 字节的扇区(16.5 KiB)的未分区空间,以便能够 在 MBR 和 GPT 之间进行转换
  • 如果您不想在设备上留下未使用的空间,请确保每个分区都从前一个分区结束的位置开始。
  • parted 不支持指定分区相对于前一个分区的开始和结束。请参阅 bug #59176bug #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]
  • legacy_boot 设置 Legacy BIOS 可引导属性。此属性由 syslinux[3] 和其他具有传统 PC-AT BIOS 固件实现的软件使用。[4]

本文章或章节需要扩充。

原因: 解释 bootlegacy_bootesp 标志及其在 MBR 和 GPT 上的不同用法。(在 Talk:Parted 中讨论)

UEFI/GPT 示例

在所有情况下,都需要一个特殊的、可引导的 EFI 系统分区

如果创建新的 EFI 系统分区,请使用以下命令(推荐大小至少为 1 GiB)

(parted) mkpart "EFI system partition" fat32 1MiB 1025MiB
(parted) set 1 esp on

其余分区方案完全取决于您。对于使用剩余空间 100% 的一个根分区

(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 的 swap 分区,然后创建一个使用所有剩余空间的 / 分区

(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%

调整分区大小

警告 要调整大小的 ext2/3/4 分区必须已卸载且未使用。在运行的操作系统上尝试编辑根文件系统既困难又危险;请改用 live 媒体/救援系统。
  • 使用 parted,您只能移动分区的末尾。
  • 从 parted v3.2 开始,resizepart 可能需要使用 #交互模式[5]
  • 这些说明适用于具有 ext2、ext3、ext4 或 btrfs 文件系统的分区。

如果您正在扩展分区,您必须先调整分区大小,然后调整其上的文件系统大小;而对于缩小,必须先调整文件系统大小,然后再调整分区大小,以避免数据丢失。

扩展分区

要扩展分区(在 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
注意 与 parted 不同,resize2fs(8) 使用 K、M、G 和 T 分别表示 KiB、MiB、GiB 和 TiB。请注意,e2fsprogs 的文档错误地将 kibibytes、mebibytes、gibibytes 和 tebibytes 称为“power-of-two kilobytes, megabytes, gigabytes, terabytes”。

缩小 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 字节扇区为单位。

已知问题

Parted 总是会在执行可能危险的操作之前警告您,除非该命令本身就是危险的(例如 rmmklabelmkpart)。

对齐

警告 parted 只对齐分区的起始位置,而不对齐大小。这对于 dm-crypt/LUKS 来说不够,请参阅 Advanced Format#分区对齐

创建分区时,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%

技巧与提示

检查对齐

警告 parted 只验证分区的起始位置对齐,而不验证大小。这对于 dm-crypt/LUKS 来说不够,请参阅 Advanced Format#分区对齐

在已分区磁盘上,您可以使用 parted 来验证设备上分区的对齐方式。例如,要验证 /dev/sda 上分区 1 的对齐方式

# parted /dev/sda
(parted) align-check optimal 1
1 aligned

参见

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.