parted: token inválido: swap

1

Estou tentando adicionar o sinalizador swap com parted , mas tenho um token inválido, por quê?

Model: Kingston DataTraveler 3.0 (scsi)
Disk /dev/sda: 15.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start  End     Size    Type     File system  Flags
 1      512B   2000MB  2000MB  primary  ext4         boot, lba

(parted) set                                                              
Partition number? 1                                                       
Flag to Invert? swap                                                      
parted: invalid token: swap
    
por Issac Young 26.08.2018 / 15:11

2 respostas

0

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.

    
por 26.08.2018 / 16:39
0

Uma partição contém um sistema de arquivos, neste caso ext4 , ou contém espaço de troca e nenhum sistema de arquivos. Portanto, não faz sentido adicionar o sinalizador swap a uma partição do sistema de arquivos.

Caso você queira criar um arquivo de troca no sistema de arquivos posteriormente, não há necessidade de adicionar o sinalizador à partição. Você acabou de criar o arquivo e usá-lo para swap.

    
por 26.08.2018 / 15:24

Tags