Embora help set
(assim como a página man) apenas forneça uma lista desimpedida de flags, ela não informa quais flags são suportados por qual esquema de partição.
A mensagem de token inválida parece ser exatamente o que você recebe quando um sinalizador está indisponível. Deve haver uma mensagem de erro mais amigável.
No parted 3.2, para partições GPT, os sinalizadores swap
, root
, lba
não estão disponíveis:
static int
gpt_partition_is_flag_available (const PedPartition *part,
PedPartitionFlag flag)
{
switch (flag)
{
case PED_PARTITION_RAID:
case PED_PARTITION_LVM:
case PED_PARTITION_BOOT:
case PED_PARTITION_BIOS_GRUB:
case PED_PARTITION_HPSERVICE:
case PED_PARTITION_MSFT_RESERVED:
case PED_PARTITION_MSFT_DATA:
case PED_PARTITION_DIAG:
case PED_PARTITION_APPLE_TV_RECOVERY:
case PED_PARTITION_HIDDEN:
case PED_PARTITION_LEGACY_BOOT:
case PED_PARTITION_PREP:
case PED_PARTITION_IRST:
case PED_PARTITION_ESP:
return 1;
case PED_PARTITION_SWAP:
case PED_PARTITION_ROOT:
case PED_PARTITION_LBA:
default:
return 0;
}
return 0;
}
O MSDOS suporta apenas esses sinalizadores:
static int
msdos_partition_is_flag_available (const PedPartition* part,
PedPartitionFlag flag)
{
switch (flag) {
case PED_PARTITION_HIDDEN:
if (part->type == PED_PARTITION_EXTENDED)
return 0;
else
return 1;
case PED_PARTITION_BOOT:
case PED_PARTITION_RAID:
case PED_PARTITION_LVM:
case PED_PARTITION_LBA:
case PED_PARTITION_PALO:
case PED_PARTITION_PREP:
case PED_PARTITION_IRST:
case PED_PARTITION_ESP:
case PED_PARTITION_DIAG:
return 1;
default:
return 0;
}
}
Então, o que há com o sinal swap
?
Acontece que é suportado pelo DVH:
static int
dvh_partition_is_flag_available (const PedPartition* part,
PedPartitionFlag flag)
{
switch (flag) {
case PED_PARTITION_ROOT:
case PED_PARTITION_SWAP:
case PED_PARTITION_BOOT:
return 1;
... bem como partições MAC:
static int
mac_partition_is_flag_available (
const PedPartition* part, PedPartitionFlag flag)
{
switch (flag) {
case PED_PARTITION_BOOT:
case PED_PARTITION_ROOT:
case PED_PARTITION_SWAP:
case PED_PARTITION_LVM:
case PED_PARTITION_RAID:
return 1;
A boa notícia é que o Linux não liga muito para os tipos de partição, em primeiro lugar. Então você pode usar qualquer partição para swap, independentemente de a tabela de partição indicar isso.
De acordo com o código acima, para o rótulo de partição do msdos, você não pode definir hidden
flag se a partição for estendida. Esta é uma boa maneira de testar a mensagem de erro dada por parted:
(parted) mklabel msdos # new dos partition
(parted) mkpart primary 1MiB 2MiB # primary
(parted) mkpart extended 2MiB 10MiB # extended
(parted) mkpart logical 3MiB 4MiB # logical
(parted) set 1 hidden on # OK
(parted) set 2 hidden on # FAIL
parted: invalid token: hidden # very helpful message
Flag to Invert? # I didn't mistype
(parted) set 5 hidden on # OK
Então lá estamos nós. Sinalizadores não suportados apenas recebem uma mensagem de token inválida, e meio que implica que você tenha digitado errado ou algo assim, mas você não fez nada errado, é apenas parted não suportando essas sinalizações em alguns casos.