Difference between revisions of "Gdisk (简体中文)"

From ArchWiki
Jump to: navigation, search
(Convert between MBR and GPT: Update translation.)
(Update translation.)
Line 8: Line 8:
 
{{Related|GNU Parted (简体中文)}}
 
{{Related|GNU Parted (简体中文)}}
 
{{Related articles end}}
 
{{Related articles end}}
[https://www.rodsbooks.com/gdisk/ GPT fdisk] (consisting of the ''gdisk'', ''cgdisk'', ''sgdisk'', and ''fixparts'' programs) is a set of text-mode partitioning tools made by Rod Smith. They work on Globally Unique Identifier (GUID) Partition Table (GPT) disks, rather than on the older (and once more common) Master Boot Record (MBR) partition tables.
+
 
 +
[https://www.rodsbooks.com/gdisk/ GPT fdisk] 是编辑 GPT 硬盘的文本模式工具集。由 gdisk, sgdisk 和 cgdisk 组成. 用于 Globally Unique Identifier Partition Table(GPT) 而不是老的 Master Boot Record (MBR) 分区表.
  
 
This article covers {{man|8|gdisk}} and {{man|8|sgdisk}} utilities.
 
This article covers {{man|8|gdisk}} and {{man|8|sgdisk}} utilities.
Line 19: Line 20:
 
== Installation ==
 
== Installation ==
  
[[Install]] the {{pkg|gptfdisk}} package.
+
[[Install|安装]] 软件包 {{pkg|gptfdisk}}
  
 
== List partitions ==
 
== List partitions ==
Line 59: Line 60:
 
The following shows how to use ''gdisk'' to perform both the creation of a partition table and the creation of the actual partitions. Alternatively, you may use the curses-based version called ''cgdisk''; however, the following instructions do not apply to it. See {{man|8|cgdisk}} for its usage.
 
The following shows how to use ''gdisk'' to perform both the creation of a partition table and the creation of the actual partitions. Alternatively, you may use the curses-based version called ''cgdisk''; however, the following instructions do not apply to it. See {{man|8|cgdisk}} for its usage.
  
''gdisk'' performs partition alignment automatically on a 2048 512-byte sector (1 MiB) block size base which should be compatible with all [[Advanced Format]] HDDs and the vast majority of [[SSD]]s if not all.
+
performs partition alignment automatically on a 2048 512-byte sector (1 MiB) block size base which should be compatible with all [[Advanced Format]] HDDs and the vast majority of [[SSD]]s if not all.
  
To use ''gdisk'', run the program with the name of the device you want to change/edit. This example uses {{ic|/dev/sda}}:
+
''gdisk'' 自动将分区按 2048 512-byte 扇区(1 MiB)对齐,这个设置兼容所有 [[Advanced Format]] HDD 和大部分的 [[SSD]]。
 +
 
 +
要使用 ''gdisk'', 将要编辑的分区作为命令参数, 例如要编辑 {{ic|/dev/sda}}:
  
 
  # gdisk /dev/sda
 
  # gdisk /dev/sda
Line 69: Line 72:
 
{{Warning|If you create a new partition table on a disk with data on it, it will erase all the data on the disk. Make sure this is what you want to do.}}
 
{{Warning|If you create a new partition table on a disk with data on it, it will erase all the data on the disk. Make sure this is what you want to do.}}
  
To create a new GUID Partition Table and clear all current partition data, type {{ic|o}} at the prompt. Skip this step if the table you require has already been created.
+
如果是全新的磁盘,或要清空所有当前分区表数据,使用 {{ic|o}} 命令建立一个新的空 GUID 分区表,如果分区已经创建分区,请跳过此步骤。
  
 
=== Create partitions ===
 
=== Create partitions ===
  
Create a new partition with the {{ic|n}} command. You must enter the partition number, first sector, last sector and the partition type.
+
使用 {{ic|n}} 命令创建一个新的分区. You must enter the partition number, first sector, last sector and the partition type.
  
 
{{Note|See [[Partitioning#Partition scheme]] for considerations concerning the size and location of partitions.}}
 
{{Note|See [[Partitioning#Partition scheme]] for considerations concerning the size and location of partitions.}}
Line 80: Line 83:
 
* It is advised to follow the [https://www.freedesktop.org/wiki/Specifications/DiscoverablePartitionsSpec/ Discoverable Partitions Specification] since {{man|8|systemd-gpt-auto-generator}} will automount them. See [[#Prevent GPT partition automounting]] if you want to disable automounting for a partition.
 
* It is advised to follow the [https://www.freedesktop.org/wiki/Specifications/DiscoverablePartitionsSpec/ Discoverable Partitions Specification] since {{man|8|systemd-gpt-auto-generator}} will automount them. See [[#Prevent GPT partition automounting]] if you want to disable automounting for a partition.
 
* Leave a 1 MiB free space somewhere in the first 2 TiB of the disk (e.g. by using {{ic|+1M}} as the first sector of a partition) in case you ever need to create a [[BIOS boot partition]].
 
* Leave a 1 MiB free space somewhere in the first 2 TiB of the disk (e.g. by using {{ic|+1M}} as the first sector of a partition) in case you ever need to create a [[BIOS boot partition]].
}}
+
 
 +
* 如果可能需要建立一个 [[BIOS boot partition]],在磁盘前 2TiB 内预留一个 1MiB 的空间,例如用 {{ic|+1M}} 在磁盘最前面空出一段。}}
  
 
==== Partition number ====
 
==== Partition number ====
Line 103: Line 107:
 
==== Partition type ====
 
==== Partition type ====
  
Select the partition's type by entering gdisk's internal type code or specifying the [[Wikipedia:GUID Partition Table#Partition type GUIDs|partition type GUID]] manually. The default, {{ic|Linux filesystem}} (GUID {{ic|0FC63DAF-8483-4772-8E79-3D69D8477DE4}}, gdisk's internal code {{ic|8300}}), should be fine for most use cases.
+
Select the partition's type by entering gdisk's internal type code or specifying the manually. The default, {{ic|Linux filesystem}} (GUID {{ic|0FC63DAF-8483-4772-8E79-3D69D8477DE4}}, gdisk's internal code {{ic|8300}}), should be fine for most use cases.
 +
 
 +
选择 gdisk 类型编码或手动输入[[Wikipedia:GUID Partition Table#Partition type GUIDs|分区类型 GUID]],默认的 {{ic|Linux filesystem}} 的 gdisk 代码是 {{ic|8300}},GUID 是 {{ic|0FC63DAF-8483-4772-8E79-3D69D8477DE4}},在大多数情况下都可以使用此类型。
  
 
{| class="wikitable"
 
{| class="wikitable"
Line 169: Line 175:
 
|}
 
|}
  
{{Tip|Press {{ic|L}} to show gdisk's internal code list.}}
+
{{Tip|按下 {{ic|L}} 可以显示 gdisk 的内部编码列表。}}
  
 
Repeat this procedure until you have the partitions you desire.
 
Repeat this procedure until you have the partitions you desire.
Line 177: Line 183:
 
{{Tip|Use the command {{ic|c}} to change a partition's name ([[Persistent block device naming#by-partlabel|PARTLABEL]]) for easy identification.}}
 
{{Tip|Use the command {{ic|c}} to change a partition's name ([[Persistent block device naming#by-partlabel|PARTLABEL]]) for easy identification.}}
  
Write the table to disk and exit via the {{ic|w}} command.
+
使用 {{ic|w}} 命令将分区表写入磁盘并退出。
  
 
== Tips and tricks ==
 
== Tips and tricks ==

Revision as of 07:08, 31 August 2018

GPT fdisk 是编辑 GPT 硬盘的文本模式工具集。由 gdisk, sgdisk 和 cgdisk 组成. 用于 Globally Unique Identifier Partition Table(GPT) 而不是老的 Master Boot Record (MBR) 分区表.

This article covers gdisk(8) and sgdisk(8) utilities.

Tip:
  • For basic partitioning functionality with a text user interface, cgdisk(8) can be used.
  • GPT fdisk website has detailed walkthroughs for gdisk, cgdisk, sgdisk and FixParts.

Installation

安装 软件包 gptfdisk

List partitions

To list partition tables and partitions on a device, you can run the following, where device is a name like /dev/sda:

# gdisk -l /dev/sda

or alternatively the same action using sgdisk:

# sgdisk -p /dev/sda

Backup and restore partition table

Before making changes to a disk, you may want to backup the partition table and partition scheme of the drive. You can also use a backup to copy the same partition layout to numerous drives.

Using sgdisk you can create a binary backup consisting of the protective MBR, the main GPT header, the backup GPT header, and one copy of the partition table. The example below will save the partition table of /dev/sda to a file sgdisk-sda.bin:

# sgdisk -b=sgdisk-sda.bin /dev/sda

You can later restore the backup by running:

# sgdisk -l=sgdisk-sda.bin /dev/sda

If you want to clone your current device's partition layout (/dev/sda in this case) to another drive (/dev/sdc) run:

# sgdisk -R=/dev/sdc /dev/sda

If both drives will be in the same computer, you need to randomize the disk and partition GUIDs:

# sgdisk -G /dev/sdc

Create a partition table and partitions

The first step to partitioning a disk is making a partition table. After that, the actual partitions are created according to the desired partition scheme.

Before beginning, you may wish to backup your current partition table and scheme.

The following shows how to use gdisk to perform both the creation of a partition table and the creation of the actual partitions. Alternatively, you may use the curses-based version called cgdisk; however, the following instructions do not apply to it. See cgdisk(8) for its usage.

performs partition alignment automatically on a 2048 512-byte sector (1 MiB) block size base which should be compatible with all Advanced Format HDDs and the vast majority of SSDs if not all.

gdisk 自动将分区按 2048 512-byte 扇区(1 MiB)对齐,这个设置兼容所有 Advanced Format HDD 和大部分的 SSD

要使用 gdisk, 将要编辑的分区作为命令参数, 例如要编辑 /dev/sda:

# gdisk /dev/sda

Create new table

Warning: If you create a new partition table on a disk with data on it, it will erase all the data on the disk. Make sure this is what you want to do.

如果是全新的磁盘,或要清空所有当前分区表数据,使用 o 命令建立一个新的空 GUID 分区表,如果分区已经创建分区,请跳过此步骤。

Create partitions

使用 n 命令创建一个新的分区. You must enter the partition number, first sector, last sector and the partition type.

Note: See Partitioning#Partition scheme for considerations concerning the size and location of partitions.
Tip:
  • 如果可能需要建立一个 BIOS boot partition,在磁盘前 2TiB 内预留一个 1MiB 的空间,例如用 +1M 在磁盘最前面空出一段。

Partition number

A partition number is the number assigned to a partition, e.g. a partition with number 1 on a disk /dev/sda would be /dev/sda1. Partition numbers may not always match the order of partitions on disk, in which case they can be sorted.

It is advised to choose the default number suggested by gdisk.

First and last sector

The first and last sectors of the partition can be specified in sector numbers or as positions measured in kibibytes (K), mebibytes (M), gibibytes (G), tebibytes (T), or pebibytes (P);

The position can be specified in:

  • absolute terms from the star of the disk. E.g. 40M as a first sector specifies a position 40 MiB from the start of the disk.
  • relative terms by preceding the size with +size or -size. E.g. +2G to specify a point 2 GiB after the default start sector, or -200M to specify a point 200 MiB before the last available sector.

Pressing the Enter key with no input specifies the default value, which is the start of the largest available block for the first sector and the end of the same block for the last sector.

Tip: When partitioning it is always a good idea to specify partition sizes using relative terms with the +size{M,G,T,P} notation and not use sizes smaller than 1 MiB. Such partitions will always be aligned according to the device properties.

Partition type

Select the partition's type by entering gdisk's internal type code or specifying the manually. The default, Linux filesystem (GUID 0FC63DAF-8483-4772-8E79-3D69D8477DE4, gdisk's internal code 8300), should be fine for most use cases.

选择 gdisk 类型编码或手动输入分区类型 GUID,默认的 Linux filesystem 的 gdisk 代码是 8300,GUID 是 0FC63DAF-8483-4772-8E79-3D69D8477DE4,在大多数情况下都可以使用此类型。

Common partition types
Partition type Mountpoint gdisk's

code

Partition type GUID
Linux filesystem Any 8300 0FC63DAF-8483-4772-8E79-3D69D8477DE4
EFI system partition Any ef00 C12A7328-F81F-11D2-BA4B-00A0C93EC93B
BIOS boot partition None ef02 21686148-6449-6E6F-744E-656564454649
Linux x86-64 root (/) / 8304 4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709
Linux swap [SWAP] 8200 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
Linux /home /home 8302 933AC7E1-2EB4-4F13-B844-0E14E2AEF915
Linux /srv /srv 8306 3B8F8425-20E0-4F3B-907F-1A25A76F98E8
Linux LVM Any 8e00 E6D6D379-F507-44C2-A23C-238F2A3DF928
Linux RAID Any fd00 A19D880F-05FC-4D3B-A006-743F0F84911E
Linux LUKS Any 8309 CA7D7CCB-63ED-4C53-861C-1742536059CC
Linux dm-crypt Any 8308 7FFEC5C9-2D00-49B7-8941-3EA10A5586B7
Tip: 按下 L 可以显示 gdisk 的内部编码列表。

Repeat this procedure until you have the partitions you desire.

Write changes to disk

Tip: Use the command c to change a partition's name (PARTLABEL) for easy identification.

使用 w 命令将分区表写入磁盘并退出。

Tips and tricks

Convert between MBR and GPT

Tip: 更多信息请阅读 Rod Smith 的 MBR 到 GPT 转换说明

转换之后,需要重新安装 bootloaders 并配置为从 GPT 启动。

gdisk、sgdisk 和 cgdisk 能将 MBR 和 BSD 盘符 无损转换为 GPT。转换时,所有 MBR 主分区和逻辑分区都会变成 GPT 分区并生成有正确的分区类型 GUID 和唯一分区 GUID.

Warning:
  • GPT 在硬盘末尾存储了第二分区表。这个数据结构默认有 33512B 空间。MBR 不具有类似数据结构,这意味着 MBR 硬盘的最后一个分区的最后一部分可能被占用进而妨碍到完全的转换。如果这发生在你身上,你必须放弃转换,改变最后一个分区的大小。
  • 在 RAID 模式下的基于 Intel的笔记本有一些关于备份 GPT 表损坏的问题,解决方法是尽可能使用 AHCI 替代 RAID.

只需打开 MBR, 用 gdisk 的"w"选项来把改变写入到硬盘(和 fdisk 类似)以转换到 GPT. 警惕所有错误并在写入硬盘之前修复它们,因为你会有损失数据的风险。

要用 sgdisk 将 MBR 分区表转换为 GPT,使用 -g/--mbrtogpt 选项:

# sgdisk -g /dev/sda

要将 GPT 转换为 MBR,使用 -m/--gpttombr 选项,注意最多只能转换四个分区。

# sgdisk -m /dev/sda

Sort partitions

This applies for when a new partition is created in the space between two partitions or a partition is deleted. /dev/sda is used in this example.

# sgdisk -s /dev/sda

After sorting the partitions if you are not using Persistent block device naming, it might be required to adjust the /etc/fstab and/or the /etc/crypttab configuration files.

Note: The kernel must read the new partition table for the partitions (e.g. /dev/sda1) to be usable. Reboot the system or tell the kernel to reread the partition table.

Recover GPT header

In case main GPT header or backup GPT header gets damaged, you can recover one from the other with gdisk. /dev/sda is used in this example.

# gdisk /dev/sda

choose r for recovery and transformation options (experts only). From there choose either

  • b: use backup GPT header (rebuilding main)
  • d: use main GPT header (rebuilding backup)

When done write the table to disk and exit via the w command.

Expand a GPT disk

After enlarging a disk (e.g. in hardware RAID or a virtual machine disk) the newly added free space will not be immediately usable since GPT keeps data at the end of the disk. You must relocate the backup GPT header to the new end of the disk.

Run sgdisk with the option -e/--move-second-header, e.g.:

# sgdisk -e /dev/sda

Afterwards print the partition table; the total free space should now be increased.

Prevent GPT partition automounting

systemd-gpt-auto-generator(8) will automount partitions following the Discoverable Partitions Specification. Sometimes that may not be desirable.

The automounting can be disabled by setting the partition attribute 63 "do not automount" on the partition.

Start gdisk, e.g.:

# gdisk /dev/sda

Press p to print the partition table and take note of the partition number(s) of the for which you want to disable automounting.

Press x extra functionality (experts only).

Press a set attributes. Input the partition number and set the attribute 63. Under Set fields are: it should now show 63 (do not automount). Press Enter to end attribute changing. Repeat this for all partitions you want to prevent from automounting.

When done write the table to disk and exit via the w command.

Alternatively using sgdisk, the attribute can be set using the -A/--attributes= option; see sgdisk(8) for usage. For example, to set partition attribute 63 "do not automount" on /dev/sda2 run:

# sgdisk -A 2:set:63 /dev/sda

See also