Como construir uma tabela de partição somente GPT no Linux?

5

Todas as ferramentas que testei até agora só foram capazes de criar uma tabela de partições dupla (GPT e MBR), em que as quatro primeiras partições da GPT foram espelhadas para uma partição MBR compatível.

Isso não é o que eu quero. Eu quero uma tabela de partição GPT pura, ou seja, onde não há tabela MBR no disco e, portanto, também não há qualquer sincronização entre eles.

É de alguma forma possível?

    
por peterh 11.07.2015 / 07:04

2 respostas

11

PARA ENDEREÇAR O SEU EDIT:

Eu não notei a edição da sua pergunta até agora. Como está escrito agora, a questão é completamente diferente de quando respondi pela primeira vez. O mirror que você descreve não é na especificação, na verdade, já que é um hack bastante perigoso e feio conhecido como uma partição MBR-híbrida formato. Esta questão faz um muito mais sentido agora - não é de todo tolo, de fato.

A principal diferença entre um disco GPT e um disco híbrido MBR é que o MBR da GPT irá descrever o disco inteiro como uma única partição MBR, enquanto um O MBR híbrido tentará se proteger da compatibilidade (extremamente feia) e descrever apenas a área coberta pelas quatro primeiras partições. O problema com essa situação é que as tentativas de híbrido MBR de compatibilidade derrotam completamente o propósito do Protective MBR da GPT em primeiro lugar . / p>

Como mencionado abaixo, o Protective MBR deve proteger um disco GPT de aplicativos estúpidos, mas se algum disco aparecer para ser não alocado para aqueles, todas as apostas estão desativadas. Não use um MBR híbrido se ele puder ser de alguma forma ajudado - o que, se em um Mac, significa não usar o padrão Bootcamp configuration .

Em geral, se você está procurando conselhos sobre questões relacionadas a EFI / GPT, não há nenhum outro lugar (exceto talvez um ligeiro desvio aqui primeiro) mas para rodsbooks.com .

ahem ...

Essa (costumava ser) uma pergunta idiota - acho que você está perguntando como particionar um disco GPT sem um MBR protetor . A resposta a essa pergunta é que você não pode - porque o GPT é um padrão de formato de tabela de partição de disco, e esse padrão especifica uma proteção MBR posicionado na cabeça do disco. Vêem?

OquevocêpodefazeréapagaroMBRousobrescrevê-lo-elenãoimpediráqueosmaisaplicativoscomreconhecimentodeGPTacessemosdadosdapartiçãodequalquermaneira,masarazãoestáincluídonaespecificaçãoéevitarqueaplicativosnon-GPTapareçamcomatabeladepartições.IssoevitaissoapenasinformandoqueodiscointeiroéumapartiçãodotipoMBRjáexistente,eninguémdevetentargravarumsistemadearquivosneleporquejáestáalocadonoespaço.RemoveroMBRremoveessaproteção.

Dequalquerforma,vejacomo:

  • Issocriaumarquivo4G./imgcheiodeNULs...

    </dev/zero >./img \ dd ibs=4k obs=4kx1k count=1kx1k
    1048576+0 records in
    1024+0 records out
    4294967296 bytes (4.3 GB) copied, 3.38218 s, 1.3 GB/s
    
  • Isso grava uma tabela de partições nele - para incluir o MBR protetor

    principal.

    • Cada um dos argumentos de printf é seguido por um \n ewline e gravado em stdin de gdisk .
    • gdisk interpreta os comandos como se tivessem sido digitados de forma interativa e atuem de acordo, para criar duas entradas de partição GPT na Tabela de Partição GUID que ele grava na cabeça do ./img arquivo.
    • Toda a saída do terminal é descarregada para >/dev/null (porque é muito e vamos dar uma olhada nos resultados atualmente mesmo assim) .

      printf %s\n o y n 1 '' +750M ef00 \
                       n 2 '' '' '' ''   \
                   w y | >/dev/null      \
      gdisk ./img      
      
  • Isso obtém a representação formatada em quatro colunas de pr do strings acompanhado por deslocamento no primeiro 2K de ./img .

    <./img dd count=4 |
    strings -1 -td    | 
    pr -w100   -t4
    
    4+0 records in
    4+0 records out
    2048 bytes (2.0 kB) copied, 7.1933e-05 s, 28.5 MB/s
    
        451 *           1033 K           1094 t           1212 n
        510 U           1037 >           1096 e           1214 u
        512 EFI PART    1039 ;@fY        1098 m           1216 x
        524 \           1044 30          1153 =           1218
        529 P           1047 L           1158 rG          1220 f
        531 (           1050 E           1161 y=i         1222 i
        552 "           1065 w           1165 G}          1224 l
        568 V           1080 E           1170 $U.b        1226 e
        573 G           1082 F           1175 N           1228 s
        575 G           1084 I           1178 C           1230 y
        577 y           1086             1180 b           1232 s
        583 G           1088 S           1185 x           1234 t
        602 Ml          1090 y           1208 L           1236 e
       1024 (s*         1092 s           1210 i           1238 m
    

Você pode ver onde o MBR termina aí, sim? Byte 512.

  • Isto escreve 512 espaços nos primeiros 512 bytes em ./img .

    <>./img >&0 printf %0512s
    

E agora para os frutos do nosso trabalho.

  • Esta é uma execução interativa de gdisk em ./img .

    gdisk ./img
    
    GPT fdisk (gdisk) version 1.0.0
    
    Partition table scan:
      MBR: not present
      BSD: not present
      APM: not present
      GPT: present
    
    Found valid GPT with corrupt MBR; using GPT and will write new
    protective MBR on save.
    
    Command (? for help): p
    
    Disk ./img: 8388608 sectors, 4.0 GiB
    Logical sector size: 512 bytes
    Disk identifier (GUID): 0528394A-9A2C-423B-9FDE-592CB74B17B3
    Partition table holds up to 128 entries
    First usable sector is 34, last usable sector is 8388574
    Partitions will be aligned on 2048-sector boundaries
    Total free space is 2014 sectors (1007.0 KiB)
    
    Number  Start (sector)    End (sector)  Size       Code  Name
       1            2048         1538047   750.0 MiB   EF00  EFI System
       2         1538048         8388574   3.3 GiB     8300  Linux filesystem
    
por 11.07.2015 / 08:19
0

No seu caso e sempre você precisa criar uma partição > 2TB. Você deve usar o comando parted .

Antes de criar o comando de partição, devemos definir o rótulo do disco para GPT. GPT significa formato de tabela de partição GUID (GPT). Use o comando mklabel do parted para definir o rótulo do disco para GPT, conforme mostrado abaixo.

# parted /dev/sdb
GNU Parted 2.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) print
Error: /dev/sdb: unrecognised disk label

(parted) mklabel gpt

(parted) print
Model: Unknown (unknown)
Disk /dev/sdb: 5909GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start  End  Size  File system  Name  Flags

Crie > 2TB Partition usando Parted mkpart.

Use o comando mkpart do parted, conforme mostrado abaixo, para criar uma partição com mais de 2 TB. Neste exemplo, estamos criando uma partição com aproximadamente 6 TB de tamanho.

#parted /dev/sdb

(parted) mkpart primary 0GB 5909GB

(parted) print
Model: Unknown (unknown)
Disk /dev/sdb: 5909GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  5909GB  5909GB               primary
    
por 11.07.2015 / 21:08