EFI-BIOS GPT-MBR

Il web è pieno di guide ben fatte e ottime spiegazioni riguardo all' argomento in oggetto. Mi limito quindi a scrivere qualche puntualizzazione su quei concetti che non mi son risultati particolarmente chiari.

"BIOS":"Master Boot Record (MBR)"= "EFI/UEFI":"GUID Partition table (GPT)"

Questa "proporzione" è sicuramente corretta anche se è poi possibile effettuare boot su un dispositivo che utilizzi bios e abbia le partizioni gpt, così come è possibile utilizzare la efi legacy boot per effettuare il boot su delle partizioni mbr.

MBR

Per master boot record intendiamo i primi 512byte di un disco in cui vengono memorizzate alcune informazioni per effettuare il boot (Master Boot Code) le la tavola delle partizioni: Questa viene così chiamata “mbr partition table”, oppure a volte “msdos”

 

Questa tavola delle partizioni mbr ha molte limitazioni che abbiamo imparato a conoscere nel corso dei decenni.

- Solo 4 partizioni primarie oppure 3 primarie più una estesa (che per l'mbr è semplicemente una partizione primaria che fa da contenitore) in cui definisci n unità logiche. La tavola completa è memorizzata in 64 Bytes.
- Il tipo di partizione (ID in fdisk) si definisce usando solo 1 byte (83 Linux, 85 Linux extended etc)
- I metadati delle unità logiche nella partizione estesa sono piuttosto fragili
- Le informazioni circa gli LBA delle partizioni sono memorizzati con 32bit, quindi potremo avere al massimo 2^32 LBA (settori). Essendo i settori nei dischi grossi 512 Byte (generalmente) la massima grandezza per una partizione è 512*2^32= 2199023255552 Bytes = 2TiB.
- La partition table non ha backup per cui, se persa o danneggiata, perdiamo la possibilità di accedere alle varie partizioni del disco

Spesso si sente dire che questo limite dei 2TiB vale solo per la partizione di boot del sistema operativo. Questa informazione è errata o al più incompleta: Per superare il limite devi usare gpt cosa che puoi fare senza problemi su un disco non di boot oppure su un disco di boot ma usando efi. Avendo invece il bios il disco su cui si fa boot ha bisogno dell'mbr (non del tutto vero) e da qui l'impossibilità di superare i 2TiB in qualunque partizione di questo disco.

GPT

GPT sta per GUID Partition table e utilizza un GUID (Globally Unique Identifiers) per definire le partizioni e identificarle

Supera tutte le limitazioni sopracitate dell'mbr, tra cui
- Memorizza le informazioni degli LBA con 64bit, per cui avremo 2^64x512=8ZiB (nel caso di settori da 512B).
(Giga-Tera-Peta-Exta-Zeta -> 2^30, 2^40, 2^50, 2^60,2^70 -> 10^9, 10^12, 10^15, 10^18, 10^21) -> Quindi 8ZiB sono 8 Miliardi (2^30) di TiB.
- Memorizza un backup della tavola delle partizioni a fine disco
- Si possono creare fino a 128 partizioni, e l'ID delle stesse è sempre univoco.

UEFI/EFI

Il firmware UEFI ha il supporto per leggere sia le tavole di partizioni mbr (legacy boot) che gpt (o anche APM, Apple Partition Map).
E' anche in grado di leggere filesystem di tipo FAT12-FAT32 su HDD/Flash Drive, e UDF/ISOxxxx (non ricordo l'iso..) su CD/DVD.
Il supporto può essere esteso in firmware e, per esempio, l'EFI dei mac legge anche HFS/HFS+

 

PROCESSO DI BOOT-UEFI - GRUB2

- Power on Self Test (POST)
- Il firmware UEFI viene caricato in memoria.
Qui puoi o premere il tasto per entrare nel pannello di configurazione della motherboard oppure lasciar partire il Boot Manager UEFI.
Il Boot Manager UEFI, sempre memorizzato nel firmware, ti permette di scegliere quale applicazione UEFI lanciare e da che disco/partizione farlo.
- Viene lanciata un'applicazione uefi (per esempio grubx64.efi) da un partizione formattata FA32 e con id UEFISYS.
- L'applicazione lancia un'altra applicazione, nel nostro caso grub che presenterà il suo boot manager andandosi a leggere la configurazione da /boot/grub.conf

Come si può notare da questo processo non si fa menzione di boot-sector che quindi non è necessario per effettuare il boot.

Per convenzione tutti i boot loader di sistemi operativi sono memorizzati in una partizione di sistema EFI (quindi con ID "0xEF" o "EF00" per MBR , "C12A7328-F81F-11D2-BA4B-00A0C93EC93B" per GPT): Puoi trovare una EFI system partition sia usando lo schema gpt che quello mbr/msdos.

Per esempio nella famiglia di Windows NT 6.x (vista/7/8) l'applicazione EFI che viene richiamata si chiama Bootmgfw.efi (in \EFI\Microsoft\Boot, o C:\Windows\Boot\EFI.) che altro non è che un'altro boot manager di microsoft che presenta un menù di sistemi avviabili leggendo la configurazione da un file.

Quindi mi sembra che la tendenza sia quella di non usare il boot manager uefi come tale ma solo come link ad altri boot manager tradizionali. E' possibile che questo comportamento (poco logico ma comprensibile in queste prime fasi) cambi con le prossime release di sistemi operativi.

NOTA: Il superblocck è tutt'altra cosa e non è correlato in nessun modo con il bootsector, mbr/gpt etc: E' legato al file system,  ne descrive dimensione, tipo, stato etc,  ed è replicato ogni tot bytes.


BIOS-Boot Partitioned (BIOS+GPT)

Per effettuare boot con bios e partizioni basate su gpt un modo è di utilizzare la bios-boot-partition.

Questa partizione è simile alla EFI system partition, (mbr id EF02, gpt 21686148-6449-6E6F-744E-656564454649) ma  non contiene un vero e proprio file-system ma del codice binario grezzo (raw). Grub 2 per esempio ha bisogno di una bios-boot partition che contiene lo stage2 (core.img), lo stage 1 sta nell' emulazione mbr di gpt (in caso di partizioni mbr lo stage 2 sta -in parte- in settori adiacenti l'mbr che non sono disponibili in caso di gpt)

 

Virtual Box UBUNTU UEFI e grub2.

Avendo effettuato l'installazione da una iso attaccata come storage e fatta partire col supporto efi abilitato mi appresto a "bootare" il sistema appena installato

1) Power-on-Check – POST
2) Uefi firmware -> Uefi Boot Manager

Da qui c'è un elenco di dispositivi uefi riconosciuti in automatico (opzione Boot Manager) e, se non parte nulla, in automatico fa parire la UEFI Interactive Shell (mappata sulla memoria, nel firmware uefi, per tornare al boot manager digiti exit)

Ora, una volta tornato nell' Uefi Boot Manager ho 2 opzioni
3a) Boot Maintenance Manager -
Boot From File-> Cerchi grubx64.efi e go

3b) Boot Option
Add Boot Option -> Cerchi grubx64.efi e lo aggiungi fra le opzioni

Per cambiare l'ordine e mettere questa nuova opzione come prima scelta

Boot Option -> Change Boot Order

A questo punto carica grub64x.efi che va a caricare grub come lo conosciamo: Grub ha un suo boot manager che permette di scegliere quale sistema far partire prendendo le configurazioni da /boot/grub/grub.conf (generato nel solito modo)

Quindi avremo la partizione
/boot/efi -> /dev/sda1 -> CODE EF00 (efi boot partition)
Con al suo interno
/boot/efi/EFI/ubuntu/grubx64.efi
E /boot è solo una directory della partizione montata su /

Fatto questo ubuntu parte ma si inchioda su lightdm per cui edito nel grub.conf inserendo la voce text e eliminando quiet splash. Vado poi a installare i giusti driver
sudo apt-get install virtualbox-guest-dkms virtualbox -guest-x11 (contiene il driver dri e il modulo drm per il kernel)
Ecco il risultato:

WIN8 – INSTALLAZIONE UEFI VIA CHIAVETTA USB
Volendo creare una chiavetta usb contenente l'installazione di win8/win7 non devo usare il tool ufficialle "Windows 7 USB DVD download tool" perchè  formatta la chiavetta in ntfs e quindi efi non riesce a riconoscerlo come dispositivo valido per effettuare il boot.
Non è neanche possibile seguire alla lettera le varie guide disponibili come questa
http://www.maximumpc.com/article/howtos/how_to_install_windows_7_beta_a_usb_key
in quanto formattano ntfs e creano il bootsector (cosa che con efi-gpt non mi serve)

Devo quindi procedere manualmente formattandola fat32 (non so se sia necessario creare partizioni gpt o mbr), copiandoci dentro l'intero contenuto del dvd (o della iso).

Mi assicuro poi che ci sia il file bootx64.efi (in \efi\boot, nel caso prendendo bootmgfw.efi e rinominandolo) che è l'applicazione efi che viene lanciata dal uefi boot manager. FINE

Fatto questo dobbiamo ora installare win8 su un hdd utilizzando uefi e gpt.
In fase di installazione cancelli tutte le partizioni/volumi in modo da lasciare il disco con spazio unallocated.

Poi clicchi new, apply (per l'intera dimensione del disco e ok)
Dovrebbe così creare 4 partizioni gpt primarie in questo modo:

Paritition 1 - Recovery
Partition 2 - System - Ovvero la EFI System Partition che contiene il file di configurazione del boot manager di windows, alcuni driver, NTLDR etc
Partition 3 - MSR - Ovvero Miicrosoft Reserved (MSR) partition (spazio riservato per altri scopi)
Partition 4 - Primary - La partizione su cui andrà installato il sistema operativo

Le 4 partizioni devono essere in questo esatto ordine.

Print Friendly, PDF & Email