如果我运行这些命令:
parted -s /dev/sda \
mklabel gpt \
mkpart primary 1MiB 261MiB \
set 1 esp on \
mkpart primary 261MiB 50GiB \
mkpart primary 50GiB 550GiB \
mkpart primary 550GiB 100%
mkfs.fat -F32 /dev/sda1
yes | mkfs.ext4 /dev/sda2
yes | mkfs.ext4 /dev/sda3
yes | mkfs.ext4 /dev/sda4
我得到的primary
所有这些分区的名称如下:
Model: ATA ST2000LM003 HN-M (scsi)
Disk /dev/sda: 2000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 274MB 273MB fat32 primary boot, esp
2 274MB 53.7GB 53.4GB ext4 primary
3 53.7GB 591GB 537GB ext4 primary
4 591GB 2000GB 1410GB ext4 primary
我不想要这些名称,如何避免这种自动命名?
编辑
如果我mkpart
像这样更改该部分:
parted -s /dev/sda \
mklabel gpt \
mkpart 1MiB 261MiB \
set 1 esp on \
mkpart 261MiB 50GiB \
mkpart 50GiB 550GiB \
mkpart 550GiB 100%
并运行脚本,我得到这些:
Error: Invalid number.
mkfs.fat 4.1 (2017-01-24)
mkfs.fat: unable to open /dev/sda1: No such file or directory
mke2fs 1.45.3 (14-Jul-2019)
The file /dev/sda2 does not exist and no size was specified.
mke2fs 1.45.3 (14-Jul-2019)
The file /dev/sda3 does not exist and no size was specified.
mke2fs 1.45.3 (14-Jul-2019)
The file /dev/sda4 does not exist and no size was specified.
编辑
gparted
可以这样做:
在这里,我从最后一个分区中删除了标签,gparted
但它没有显示命令它是如何做到这一点的!
答案1
从分开的文档:
命令:mkpart[部分类型 fs 类型名称] 开始 结束
...
零件类型primary
是“ ”、“extended
”或“ ”之一,并且只能用“ ”或“ ”分区表logical
指定。 Amsdos
dvh
姓名必须指定为 'gpt
。两者都不零件类型也不姓名可以与“sun
”分区表一起使用。
使用parted时,您必须为GPT分区设置名称。
答案2
parted
您可以通过提供空字符串来避免在使用时命名分区。
我将使用相同的引用官方文档:
命令:mkpart[部分类型名称 fs-type] 开始 结束
...
零件类型primary
是“ ”、“extended
”或“ ”之一,并且只能用“ ”或“ ”分区表logical
指定。 Amsdos
dvh
姓名必须为“ ”分区表指定gpt
。两者都不零件类型也不姓名可以与“sun
”分区表一起使用。
现在,让我们剖析一下(强调我的):
零件类型
primary
是“ ”、“extended
”或“ ”之一logical
,并且只能指定'msdos
' 或 'dvh
' 分区表。
所以,当你创建gpt
分区表时你不使用 part-type
(出于显而易见的原因:只有一种类型的分区)。这意味着对于gpt
磁盘,命令变为
mkpart [name fs-type] start end
这意味着第一个参数mkpart
是name
.让我们回到引用:
A姓名 必须指定对于“
gpt
”分区表。
换句话说,第一个参数是强制性的,因此mkpart
命令后面的任何字符串都将被解释为分区的指定名称。现在,parted
在交互模式下使用时如何创建一个没有名称的新分区?您使用空字符串""
,例如
(parted) mkpart "" 0% 100%
当您在脚本模式下运行该命令时,您必须避免这些引号被 shell 扩展(什么都没有),它们需要按字面传递,因此parted
您必须转义/引用它们,例如
parted -a optimal -s /dev/sda mklabel gpt mkpart '""' 0% 100%
也就是说,在您的特定情况下,而不是使用“基本的”它将用作分区的名称,您可以使用空字符串:
parted -s /dev/sda \
mklabel gpt \
mkpart '""' 1MiB 261MiB \
set 1 esp on \
mkpart '""' 261MiB 50GiB \
mkpart '""' 50GiB 550GiB \
mkpart '""' 550GiB 100%
答案3
您可以使用fdisk
您可以使用fdisk
util-linux 2.31.1,也可能使用其他一些相当新的版本。
我使用以下脚本文件进行了测试,其中 X 应替换为目标驱动器的实际设备盘符。当然,您必须设置正确的分区数量及其大小。您可以通过交互运行来了解要使用的语法fdisk
。
#!/bin/bash
LANG=C
echo "g
n
+256m
n
+1g
n
w" | fdisk /dev/sdX
解释
以下列表不起作用(fdisk 不接受注释),但它有助于理解上面的脚本。
#!/bin/bash
LANG=C
echo "g # gpt, GUID partition table
n # new partition
# default partition number
# default start location
+256m # size
# default answer to partition name
n # new partition
# default partition number
# default start location
+1g # size
# default answer to partition name
n # new partition
# default partition number
# default start location
# default end location at the drive's tail end
# default answer to partition name
w # write to the drive" | fdisk /dev/sdX
验证不会有“名称”
$ sudo partprobe;sleep 1;LANG=C sudo parted /dev/sdc p
Model: Kingston DataTraveler G3 (scsi)
Disk /dev/sdc: 4010MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 269MB 268MB
2 269MB 1343MB 1074MB
3 1343MB 4010MB 2667MB