LINUX: Firmware UEFI per utenti Linux

18 / 100

Oggi facciamo un riassunto al firmware del nostro computer. Nello specifico, ci concentreremo su BIOS e UEFI .

UEFI BIOS o solo UEFI?

Vedrai online che molte persone si riferiscono ad esso come UEFI BIOS . A rigor di termini, questo è sbagliato, perché BIOS non è un termine generico per il firmware. Il BIOS è un firmware specifico per PC compatibile IBM, quindi dovremmo chiamare il firmware più recente UEFI .

Perché abbiamo bisogno del BIOS?

BIOS è l’acronimo di Basic Input / Output System. È responsabile delle seguenti attività.

  • Inizializza CPU e RAM.
  • POST (Power On Self Test)
  • Inizializza la LAN, PCIe.
  • Avvia il boot loader dal disco rigido, dalla chiavetta USB o dalla LAN.

Una volta terminato il suo lavoro, il BIOS passa il controllo al sistema operativo.

Cosa significa Legacy BIOS?

Il BIOS ha 38 anni. È stato inventato nel 1981. Legacy si riferisce a vecchie interfacce o meccanismi come tastiere PS / 2, floppy disk. Oggi, pochissime persone usano queste vecchie cose, ma il codice che si occupa di queste vecchie cose è ancora nel Legacy BIOS.

Cos’è UEFI?

UEFI proviene da EFI che sta per interfaccia firmware estensibile . 

È stato avviato da Intel alla fine degli anni ’90. All’epoca Intel stava sviluppando un processore a 64 bit. Il BIOS legacy viene eseguito solo in modalità a 16 bit e non può utilizzare tutte le funzionalità del nuovo processore. Quindi vogliono sbarazzarsi del vecchio meccanismo del BIOS. Hanno rilasciato la prima versione di EFI nel 2002. Nel 2005 è nato UEFI Forum. UEFI sta per interfaccia firmware estensibile unificata.

UEFI è una specifica del firmware, non un’implementazione del firmware. Chiunque può prendere la specifica UEFI e scrivere il proprio firmware compatibile UEFI. Ad esempio, Proxmox utilizza OVMF (Open Virtual Machine Firmware), che è una porta dell’implementazione TianoCore UEFI open source di Intel, per abilitare il supporto UEFI per le macchine virtuali.

Differenze tra BIOS e UEFI

Sono principalmente 4 differenze di cui voglio parlare in questo articolo.

Linguaggio di programmazione

Il BIOS è programmato utilizzando il linguaggio assembly mentre il firmware UEFI è il codice del linguaggio C al 99%. Il linguaggio C è molto più facile da leggere, mantenere e aggiungere nuove funzioni per i programmatori. Ed è molto facile rimuovere le vecchie funzioni.

OptionROMs vs driver

OptionROM viene fornito con il BIOS. optionROM ha un limite di dimensione di 64 KB. Non può essere caricato su disco rigido o unità USB. Inoltre, OptionROM deve essere adatto a ogni hardware. Quindi, se cambi il tuo hardware, devi anche cambiare il codice di OptionROMs.

Con il firmware UEFI, non hai più optionROM. Invece, i programmatori scrivono i driver. I driver non hanno le limitazioni di optionROM menzionate sopra.

MBR contro GPT

Con il BIOS, il disco rigido utilizza uno stile di partizione chiamato MBR che sta per Master Boot Record. Non è possibile accedere a un disco rigido superiore a 2 TB con lo stile di partizione MBR. MBR inoltre non consente più di 4 partizioni primarie.

Con il firmware UEFI, il disco rigido utilizza lo stile di partizione GPT, che sta per GUID Partition Table . GPT consente fino a 128 partizioni primarie e può accedere a un disco rigido di oltre 2 TB.

Il BIOS fornisce ancora alcuni servizi dopo aver terminato l’inizializzazione dell’hardware e del POST. UEFI è solo il pre-avvio e il tempo di avvio. Dopo aver inizializzato l’hardware, UEFI passa completamente il controllo al sistema operativo.

Caricatore di avvio singolo vs caricatori di avvio multipli

Il BIOS consente un solo boot loader, che è memorizzato nel record di avvio principale. UEFI consente di installare più bootloader nella partizione EFI sul disco rigido. Ciò significa che puoi installare Linux e Windows sullo stesso disco rigido in modalità UEFI senza cancellare il boot loader di Grub o il boot loader di Windows.

UEFI Shell

La shell UEFI sembra una finestra di terminale Linux o una finestra DOS, ti dà la possibilità di eseguire alcune applicazioni UEFI. Ha una propria sintassi.

Modalità di avvio

Alcuni firmware UEFI hanno un modulo di supporto della compatibilità (CSM). CSM consente al sistema di eseguire il fallback al BIOS legacy. Un sistema come questo ha tre diverse modalità di avvio.

  • Modalità BIOS
  • Modalità ibrida BIOS e UEFI
  • Modalità nativa UEFI

Tieni presente che la modalità ibrida non è la modalità UEFI nativa. Se vuoi davvero usare UEFI, devi abilitare solo UEFI e non abilitare il BIOS. I computer hanno tempi di avvio più rapidi in modalità UEFI nativa perché non è necessario caricare il BIOS.

Supporto OS

Microsoft Windows supporta solo UEFI con disco rigido GPT. Linux può essere avviato in modalità UEFI con disco rigido GPT o MBR. L’implementazione EFI per Mac è una combinazione di EFI 1.xe UEFI 2.x. Questo tipo di firmware non è un firmware UEFI standard.

Architettura del processore firmware UEFI

La maggior parte delle piattaforme Intel supporta sia l’architettura a 32 bit che quella a 64 bit, nonché il codice 8086/80286 a 16 bit. Quindi il firmware UEFI su queste piattaforme può essere compilato in modalità 32 o 64 bit.

La specifica UEFI richiede che l’architettura del boot loader corrisponda all’architettura del firmware per ridurre i problemi. In altre parole, UEFI a 32 bit può eseguire solo un boot loader a 32 bit e UEFI a 64 bit può eseguire solo un boot loader a 64 bit. Tuttavia, è possibile eseguire il sistema operativo a 64 bit con UEFI a 32 bit e il sistema operativo a 32 bit con UEFI a 64 bit.

Come faccio a sapere che il mio computer ha un firmware UEFI a 32 o 64 bit?

Su Linux esegui il seguente comando.

cat / sys / firmware / efi / fw_platform_size
Testimone UEFI

Come puoi vedere, il mio computer ha un firmware UEFI a 64 bit. La maggior parte dei nuovi PC è dotata di firmware UEFI a 64 bit.

Come faccio a sapere se Linux è installato in modalità UEFI?

Sulle distribuzioni Linux basate su Debian, ci sono due versioni di Grub boot manger.

  • grub-efi
  • grub-pc

Se il tuo Linux è installato in modalità UEFI, viene fornito con grub-efiinvece di grub-pc.

grub-efi

Grub-efiè per il firmware UEFI mentre grub-pcè per il BIOS.

grub-pc

Come faccio a sapere se il mio computer è stato avviato in modalità UEFI

Innanzitutto, puoi disabilitare il BIOS legacy nel firmware e impostarlo in modalità nativa UEFI per assicurarti che il computer venga avviato in modalità UEFI.

Se stai usando Linux, puoi controllare se il tuo sistema ha una /sys/firmware/efi/directory. Se questa directory esiste, il computer viene avviato in modalità UEFI.

Modalità UEFI

Partizione di sistema EFI

UEFI richiede che il disco rigido abbia una partizione di sistema EFI, o ESP in breve. È formattato con file system FAT32, FAT16 o vFAT e si consiglia di mantenere almeno 512 MB di spazio per ESP. È un luogo di archiviazione per i bootloader UEFI. La partizione ESP deve essere montata /boot/efisu Linux. Ha un flag di avvio e di esp in Gparted. Non deve essere la prima partizione.

Partizione di sistema EFI

Avvio sicuro

Secure Boot è un’estensione di UEFI. Sebbene la maggior parte delle distribuzioni Linux come Debian, Ubuntu, Fedora, OpenSUSE supportino l’avvio sicuro, non consiglio di abilitare l’avvio sicuro perché quando installi driver grafici, driver della scheda wireless, driver Virtualbox sul tuo sistema Linux, ci sono moduli aggiunti a Linux kernel, quindi Secure Boot non riconoscerà più il tuo sistema Linux.

Translate »