Installazione di linux su dischi GPT (GUID Partition Table)

Con l’abbassarsi dei costi dei dischi , spesso ci troviamo davanti a qualche terabyte da gestire o meglio ancora da installarci un sistema operativo.
La gestione del boot dei dischi con capacità superiore a 2TiB è impossibile per i limiti dell’MBR, infatti capita sempre più spesso di trovarsi davanti a storage con tabella di partizioni GUID (GPT).
Un documento esplicativo dell’architettura GPT è riportato su wikipedia, dal quale si nota anche la difficoltà di boot dei sistemi windows su questo tipo di storage, ma questa è un’altra storia, dentro “Inside the Linux boot process“, troviamo invece una bella analisi del processo di boot.

Sempre sul sito IBM c’è un bel documento che analizza e spiega i limiti di MBR e i vantaggi di GPT:

Make the most of large drives with GPT and Linux

Preparing for future disk storage with the GUID Partition Table

Una prima cosa da tener presente è che molte distribuzioni hanno problemi, o meglio li hanno gli installers usati, per installarsi su dischi con tabella GPT

Ad esempio anaconda su CentOS va patchato per poter superare il warning della tabella GPT, cosi come ben descritto in questo post, mentre l’uso di tools come fdisk, cfdisk e sfdisk non è supportato. Con fdisk per esempio otteniamo

WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util fdisk doesn't support GPT. Use GNU Parted.

Ci viene suggerito di usare gparted, o meglio parted.

Un altro tool che gestisce tabelle GPT è gdisk, presente in sysrescuecd e usato nel test seguente.

Per simulare uno storage GPT ho usato VirtualBox (qualcuno sta pensando che esagero? 😀 ) gdisk e parted presenti in SystemRescueCd su un disco da 500GB virtuale.
Prima con gdisk si crea una nuova tabella GPT (tasto ‘o’)
o create a new empty GUID partition table (GPT)
alla fine ci dovremmo trovare questo output:

% gdisk -l /dev/sda

GPT fdisk (gdisk) version 0.7.1

Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present

dopo possiamo creare le partizioni con parted:

(parted) mkpart primary 0 100M                                            
(parted) name 1 boot                                                      
(parted) mkpart primary 100M 495G
(parted) name 2 root                                                      
(parted) mkpart primary 495G 100%                                    
(parted) name 3 swap                                                      
(parted) set 1 boot on                                                    
(parted) p                                                                
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 537GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End    Size    File system  Name  Flags
 1      17.4kB  100MB  100MB                boot  boot
 2      101MB   495GB  495GB                root
 3      495GB   537GB  41.9GB               swap

Quindi verifichiamo con gdisk cosa è successo:

% gdisk -l /dev/sda
GPT fdisk (gdisk) version 0.7.1

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 1048576000 sectors, 500.0 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 976C6EF7-9802-415C-A7CC-E6CD272223EF
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 1048575966
Partitions will be aligned on 8-sector boundaries
Total free space is 3310 sectors (1.6 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1              34          195312   95.4 MiB    EF00  boot
   2          196608       966797311   460.9 GiB   0700  root
   3       966797312      1048573951   39.0 GiB    8200  swap

Come si nota dalla colonna ‘Code’ i codici sono EF00 (EFI boot),
0700 (linux/windows data) e 8200 (swap)

Non ci resta che installare la nostra distribuzione, personalizzando durante l’installazione specificando /dev/sda1 come boot e /dev/sda2 come root /

Enjoy 😉

 

2 thoughts on “Installazione di linux su dischi GPT (GUID Partition Table)

  1. Ciao,
    io ho un pc asus su cui è installato windows 7 ma partizionato in GPT.
    Vorrei installarci sopra anche ubuntu e avere la possibilità di scegliere il sistema operativo con grub.
    Ovviamente l’instalalzione guidata di ubuntu mi vede l’hd totalmente vuote e da formattare
    Nella guida hai spiegato come risolvere il problema ma mi chiedo se poi grub riuscirebbe a rilevare windows o meno

  2. @Francesco
    il problema non è grub, Ubiquity tentra di usare fdisk immagino.
    Credo che tu debba prima partizionare il disco magari usando gparted e poi l’installazione dovrebbe rilevare le corrette partizioni.
    Non mi assumo la responsabilità, ma potresti fare il boot con sysrescuecd che contiene gparted aggiornato e con questo ridimensionare il disco.
    Ovvio che ci potrebbe sempre essere una percentuale di rischio.
    Prova prima a vedere se usando il comando
    gdisk -l /dev/sda
    riesci a vedere lo stato del disco con la tabella GPT 😉

    Fammi sapere.
    Ciao,
    Antonio

Leave a Reply