Linux KVM – Virtual Machine Manager

15 maggio 2012 Lascia un commento

Virtual Machine ManagerNell’articolo precedente abbiamo fatto una breve introduzione sulle funzionalità di KVM, e lo abbiamo installato insieme a tutte le sue dipendenze ; ora è giunto il momento di prendere il controllo della virtualizzazione e creare delle macchine virtuali utilizzando il tool grafico “Virtual Machine Manager” ; se non l’avete fatto vi consiglio di leggere l’articolo “Linux KVM – Introduzione alla virtualizzazione con QEMU-KVM” .

Se avete già installato KVM e libvirt ma non avete installato Virtual Machine Manager, su Fedora potete installarlo con il comando :

#yum install virt-manager

Questo software è una console per gestire QEMU-KVM , ma può essere utilizzato anche per XEN e LXC ; non è necessario che sia installato sulla stessa macchina in cui gira KVM.

Se volessimo fare le cose ben fatte potremmo installare KVM su un server senza interfaccia grafica , e sul nostro desktop con Fedora installare Virtual Machine Manager; in questo modo la piattaforma di virtualizzazione risulta essere più pulita senza servizi inutili .

Il cuore di Virtual Machine Manager è scritto in Python mentre l’interfaccia grafica è stata fatta con Glade e GTK+ . L’applicazione utilizza libvirt per comunicare con l’hypervisor in questo modo è indipendente dalle diverse tecnologie di virtualizzazione .

Possiamo trovare l’applicazione in Applicazioni->;;Strumenti di Sistema ; per poter utilizzare l’applicazione è necessario sapere la password dell’utente root .

Avvio Virtual Machine Manager

A prima vista potremmo trovarci un po spaesati in quanto l’applicazione nella schermata principale non offre molte informazioni , se non il nome del host QEMU/KVM a cui siamo collegati (in questo caso localhost) .

Virtual Machine Manager

Facendo doppio clic sul host name , si aprirà una nuova finestra composta da 4 tab chiamata dettagli connessione , il primo tab denominato “Panoramica” mostra informazioni generali come il nome host, il tipo di Hypervisor utilizzato, la memoria ram disponibile, il numero di CPU logiche, l’architettura (es. i686) e due grafici sul utilizzo della CPU e della RAM . Proseguendo troviamo “Reti Virtuali” , in cui è presente una rete denominata “default”; vista la complessità che potrebbe avere l’argomento virtual network verrà trattato in un articolo separato; per il momento vi basti sapere che durante l’installazione di una VM la rete “default” viene utilizzata per collegare il server virtuale al mondo esterno ; al vostro server verrà assegnato dinamicamente un indirizzo IP che non fa parte della vostra rete, e attraverso il NAT potete raggiungere il mondo esterno .

Il tab “Storage” consente di gestire i “volumi/dischi” in cui vanno a finire le macchine virtuali ; di default i dischi virtuali vengono salvati in /var/lib/libvirt/images . Da qui possiamo vedere lo spazio a disposizione i dischi virtuali presenti a da quale VM sono utilizzati , è inoltre possibile aggiungere altre tipologie di storage (iSCSI, NFS ecc.) . Infine nell’ultimo tab denominato “Interfacce” possiamo creare interfacce bridge, bond ….

Dettagli Host

Passiamo ora alla creazione della nostra prima macchina virtuale , la procedura è veramente molto semplice l’unica cosa di cui abbiamo bisogno è un’immagine ISO di una qualunque distribuzione linux .
(Al seguente link potete trovare una piccolo manuale in PDF con la procedura per la creazione di una macchina virtuale con gli screenshot delle operazioni da eseguire .)

Clicchiamo sul pulsante a forma di monitor con un segno di play all’interno ; comparirà il wizard per la creazione di una nuova macchina virtuale .

L’operazione si conclude in pochi passi , in cui dobbiamo inserire :

  1. il nome della macchina ed il tipo di installazione
  2. la sorgente di installazione (dove si trova l’immagine ISO o il cd fisico da cui installare ) , e il sistema operativo
  3. Ram e CPU da assegnare alla machina
  4. Dimensione del disco virtuale

Alla fine di questi passaggi apparirà una schermata di riepilogo con le scelte da noi fatte ed in cui possiamo scegliere la rete a cui collegare la nostra macchina virtuale ed anche il tipo di hypervisor da utilizzare .

Al termine della procedura verrà creata e attivata la macchina virtuale , la quale farà boot dall’immagine ISO che gli abbiamo assegnato , che molto probabilmente sarà un CD d’installazione ; procediamo quindi con l’installazione del sistema operativo .

Finita l’installazione avremmo a disposizione la nostra prima macchina virtuale ; con la configurazione che abbiamo fatto il nostro server potrà accedere a internet ed alla nostra rete locale ma non può essere raggiunto dall’esterno in quanto la rete a cui è collegata la VM utilizza il NAT .
Quindi possiamo tranquillamente aggiornare il server ma i computer nella nostra rete non potranno comunicare con essa.

Nel prossimo articolo analizzeremo il funzionamento delle reti virtuali e vedremmo come far raggiungere la nostra macchina virtuale dal mondo esterno alla virtualizzazione.

Annunci

Google Play Books

image

Nella giornata di ieri Google ha finalmente reso disponibile in Italia Play Books , il servizio di vendita online di ebook.

Se ora accediamo al Play Store ci troveremo difronte ad un nuovo layout. Come possismo vedere dall’immagine sotto è stata rinnovata la pagina iniziale in cui troviamo in prima posizione l’applicazione per leggere gli ebook (chiamata Play Books) , mentre sulla sinistra troviamo Applicazioni e Libri , queste due rimandano ai rispettivi store per scaricare le applicazioni android ed i libri .

Andiamo a vedere la nuova sezione dedicata ai libri ; selezionando “Libri” dal Play Store entreremo nella sezione “in primo piano” in cui come avviene per le applicazioni troviamo i libri in sconto o comunque degni di nota ; andando verso destra troviamo la sezione “i più venduti” , una classifica degli ebook più venduti in questo momento . Continuando sempre verso destra troviamo i nuovi arrivi per le sezioni “narrativa” e “saggistica” ed in fine l’ultima sezione è dedicata ai libri “gratis”.

Play Books Store

Play Books Store

Per poter leggere gli ebook scaricati dal Play Store di deve installare l’applicazione “Google Play Libri” (Play Books) , disponibile gratuitamente sul Play Store .

Google Books App su Android Play Store

Google Books App su Android Play Store

Una volta installata, al primo avvio troveremo alcuni libri d’esempio già disponibili alla lettura ; i libri sono in inglese ma sono utili per capire come funziona l’applicazione e quale è la qualità di lettura.

Google Books - Schermata Principale

Google Books – Schermata Principale

Le opzioni disponibili durante la lettura sono suddivise su due barre collocate una nella parte superiore ed una in quella inferiore , che durante la lettura scompaiono ; inoltre premendo il tasto menu del telefono comparirà un menu a tendina in cui sono disponibili diverse opzioni .

image  

La barra superiore ci mostrerà il titolo del libro ,l’autore e sulla sinistra troviamo un’icona a lente di ingrandimento per le ricerche nel libro . Selezionando il titolo del libro comparirà la copertina del libro con alcune informazioni come la data di pubblicazione il numero delle pagine ed in fine la possibilità di fare +1 con google + .

Google Books – Informazioni Libro

La parte di ricerca nel libro funziona molto bene ed i risultati compariranno in una tendina sulla destra, basta “tappare” sull’icona a forma di lente ed inserire la parola o la frase da ricercare .

Google Books – Risultati della Ricerca

La barra inferiore mostra un linea con un indicatore di forma circolare azzurro che serve per spostarsi velocemente tra le pagine , sopra al cursore è presente un “fumetto” che ci mostrerà il capitolo ed il numero della pagina.

Google Books – Barra Inferiore

Andiamo ora a vedere il menù delle opzioni che apparirà premendo il tasto menu del nostro telefono ; da qui possiamo gestire alcuni aspetti riguardanti la lettura degli ebook , ma possiamo anche visualizzare il sommario del libro , vedere ulteriori informazioni come le recensioni degli utenti, scaricare completamente l’ebook per renderlo disponibile in modalità offline e possiamo anche decidere di farci leggere il libro selezionando l’opzione “Leggi ad alta voce” . Di seguito gli screenshot delle varie sezioni del menu .

Google Books - Indice Libro

Google Books – Indice Libro

Google Books - Opzioni di Visualizzazione

Opzioni di Visualizzazione

Google Books - Visualizzazione Notturna

Visualizzazione Notturna

Google Books - Recensione Utenti

Recensione Utenti

 

 

 

 

 

 

 

YUM plug-in : FS-SNAPSHOT

fs-snapshot (yum-plugin-fs-snapshot) è un plug-in che estende le funzionalità di yum permettendogli di creare uno snapshot del sistema nel momento in cui vengono eseguiti degli Update o vengono rimossi dei pacchetti .
Se qualcosa dovesse andar storto durante la rimozione di un pacchetto perchè vengono eliminate delle dipendeze che servono ad altri software o dopo un aggiornamento ci si accorge che qualcosa non funziona correttamente , grazie a questo plug-in è possibile tornare ialla situazione precedente.

Per funzionare il filesystem root ( / ) deve essere un volume LVM o Btrfs . Per utilizzare fs-snapshot su un volume LVM si deve :

N.B. = La seguente procedura è stata provata su un server virtuale , per tale motivo aggiungere un disco è un gioco da ragazzi . Le cose potrebbero essere più complicate se si tratta di un server fisico , in quanto occorre installare un disco fisico .

1. Assicurarsi che il Volume Group in cui risiede il file system / abbia abbastanza extent liberi . Lo spazio necessario dovrebbe essere il 50-80% delle dimensioni del volume originale. Questo valore dipende comunque da quanti cambiamenti vengono apportati .
Per vedere le informazioni dettagliate di un volume group , usare il comando vgdisplay come utente root

#vgdisplay nome_volume_group

Il numero degli extents liberi è visibile alla voce Free PE/Size .

2. Se il volume group in cui risiede il file system / non ha abbastanza spazio è necessario aggiungere un volume:

A. come utente root , utilizzate il comando pvcreate per inizializzarlo come volume da utilizzare con LVM:
#pvcreate nome-device

B. Usiamo poi vgextend per aggiungere il volume fisico al volume group :

#vgextend volume-group volume

3. Ora dobbiamo modificare il file di configurazione del plugin situato in /etc/yum/pluginconf.d/fs-snapshot.conf facendo le seguenti modifiche nella sezione [lvm] :

A. Cambiamo il valore dell’opzione enabled a 1 :

enabled = 1

B. Rimuoviamo il carattere # all’inizio della linea lvcreate_size_args e configuriamo la percentuale di spazio che verrà allocata per lo snapshot :

lvcreate_size_args = -l 80%ORIGIN

4. A questo punto possiamo provare l’installazione di un’pacchetto , ad esmpio proviamo ad installare nmap :

#yum install nmap

Ci accorgeremo che dopo aver scaricato i pacchetti necessari comparirà una voce del tipo :

snapshotting file_system (/dev/volume_group/logical_volume): logical_volume_yum_timestamp
fs-snapshot: snapshotting / (/dev/VolGroup/lv_root): lv_root_yum_20120403112435

Se diamo il comando lvdisplay vedremo un nuovo volume chiamato lv_root_yum_20120403112435 (questo nome dipende da come si chiama il vostro volume root di cosenguenza può essere diverso)

Ora abbiamo due possibilià per gestire questo snapshot :

1. Dopo aver verificato che il sistema funzioni correttamente e nel modo in cui ce lo aspettavamo possiamo eliminare lo snapshot . Come utente root diamo il comando :

lvremove /dev/volume_group/logical_volume_yum_timestamp

N.B. : Fate molta attenzione perchè YUM non elimina gli snapshot , bisogna quindi ricordarsi di farlo a mano

2. Decidiamo che le modfiche apportate dagli aggiornamenti o dal software installato non vanno bene quindi dobbiamo tornare alla situazione precedente :

N.B. : E’ importante tenere presente che se nel server stanno girando servizi come DB o cose del genere e stanno eseguendo delle transazioni, nel momento in cui torneremo allo stato precedente perderemo le ultime transazioni eseguite .

A. Come utente root diamo il seguente comando per eseguire il merge dello snapshot con il sistema

#lvconvert --merge /dev/volume_group/logical_volume_yum_timestamp
#lvconvert --merge /dev/VolGroup/lv_root_yum_20120403112435

L’utility ci avviserà che sarà necessario eseguire un riavvio perchè le modifiche abbiano effetto .

B. reboot

Dopo il riavvio il server sarà esattamente come era prima dello snapshot .

Yum – Prendiamo il controllo degli aggiornamenti

Gestire l’installazione e l’aggiornamento dei software insatallati su distribuzioni basate su pacchetti RPM è diventato col tempo molto semplice ; in questo articolo vedremo come tenere sotto controllo i pacchetti che vengono aggiornati o installati nel nostro sistema.

YUM HISTORY

Il comando che ci permette di controllare le transazioni eseguite da YUM è “yum history” al quale possiamo dare diversi parametri :

#yum history list

questo primo comando ci dà una lista delle prime 20 transazioni eseguite da yum , l’output è suddiviso in colonne che riportano : l’ID delle transazioni(ID), l’utente che ha eseguito la transazione (Login user), la data (Date and time), il tipo di operazioni eseguite (Action) e infine il numero di pacchetti modificati (Altered).

Prima di continuare analizziamo i valori che possono assumere le colonne Action e Altered

Action

Downgrade D Uno o più pacchetti sono riportati ad una versione più vecchia
Erase E Uno o più pacchetti sono stati rimossi
Install I Uno o più pacchetti sono stati installati
Obsoletin O Uno o più pacchetti sono stati marcati come obsoleti
Reinstall R Uno o più pacchetti sono stati reinstallati
Update U Uno o più pacchetti sono stati aggiornati

Altered

<; Prima della fine della transazione , il database rpmdb è cambiato
>; Dopo la transazione , il database rpmdb è cambiato
* La transazione è fallita
# La transazione è finita correttamente , ma yum è terminato con un errore
E La transazione è finita correttamente, ma è stato riportato un errore o un avviso
P La transazione è finita correttamente, ma un problema è presente nel database rpmdb
s La transazione è finita correttamente, ma è stata utilizzata l’opzione –skip-borken e alcuni pacchetti sono stati ignorati

Se vogliamo vedere tutte le transazioni eseguite da yum dobbiamo usare il comando :

#yum history list all

Possiamo anche sceglire di visualizzare un range di transazioni utilizzando gli ID :

#yum history list start_id..end_id
#yum hisroty list 2..6

In questo modo vedremo le transazioni dal ID 2 al ID 6.

Se vogliamo analizzare nel dettagio una transazione per vedere i pacchetti che sono stati modificati possiamo usare il comando :

#yum history info id_transazione
#yum history info 4

L’output ci dirà quando è iniziata la transazione (Begin Time) , quando è terminata (End Time), come è terminata (Return-Code) ed i pacchetti modificati.
Se non specifichiamo nessun ID ci verrà visualizzata l’ultima transazione eseguita .

I comandi appena visti sono orientati in generale alle transazioni , ma se volessimo sapere la storia di un determinato pacchetto come quando è stato installato o aggiornato?
per questo ci viene in aiuto l’opzione “package-list” :

#yum history package-list gnome/*

Con questo comando vedremo tutti i cambiamenti (Update,Installazione ecc) apportati ai pacchetti il cui nome inizia con “gnome” .

E’ possibile ottenere anche altre informazioni , come quali opzioni di configurazione yum ha utilizzato per una determinata transazione o da quali repository certi pacchetti sono stati installati .

Per vedere quali informazioni aggiuntive sono disponibili per una transazione si utilizza il comando :

#yum history addon-info id_transazione
#yum history addon-info 2

Come per “yum history info” se non specifichiamo nessuna transazione ci verrà visualizata l’ultima eseguita .

Le voci che possiamo trovare sono :

config-main : Le opzioni globali di yum usate durante la transazione
config-repos : Le opsioni usate per i singoli repository
saved_tx : I dati che possono essere utilizzati con il comando “yum load-transaction” per ripetere la transazione su un’altro computer .

Oltre a poter verificare la storia delle transazioni il comando yum history permette anche di ripetere una transazione o di tornare alla situazione precedente alla transazione .

Vista la delicatezza di queste procedure non tanto per il comando ma per quello che comporta verrà trattato nel prossimo articolo insieme al comando “yum load-transaction” .

Linux KVM – Introuduzione alla virtualizzazione con QEMU-KVM

29 marzo 2012 3 commenti

KVM è un’acronimo di Kernel-based Virtual Machine , ed è una soluzione di virtualizzazione per sistemi x86/x86_64 (in realta è stato eseguito il porting anche su processori S/390,PowerPc ed altri) i cui processori contengano le estensioni per la virtualizzazione (Intel VT o AMD-V).

KVM è incluso nel kernel linux a partire dalla versione 2.6.20 rilasciata nel Febbraio 2007 ; è composto ad un modulo caricabile dinamicamente kvm.ko , che fornisce il nucleo dell’infrastruttura di virtualizzazione e da due moduli specifici per il tipo di processore kvm-intel.ko e kvm-amd.ko .

KVM di per se non esegue nessuna emulazione , ma mette a disposizione un interfeccia (/dev/kvm), a cui si interfacciano tools come Qemu per generare macchine virtuali ; KVM fa quindi da “tramite” tra le richieste fatte da Qemu ed il kernel ; questo però non per tutto, la gestione della memoria RAM della Vm e la schedulazione dei processi è fatta direttamente dal Kernel .

Per le macchine virtuali Qemu/KVM viene utilizzato il bios SeaBIOS.

Per un utente non vi è nessuna differenza tra una VM Qemu con KVM disabilitato ed una KVM abilitato , se non per la velocità di esecuzione .

Nel tempo KVM è stato molto migliorato e sono state aggiunte diverse funzionalità molto interessanti, questo perche deve confrontarsi con giganti presenti nel campo della virtualizzazione come VMware.
Vista questa necessità troviamo funzionalità come :

  • Live Migration delle VM
  • Paravirtualized network (migliori perfomance nel networking)
  • Paravirtualized block Device (migliori perfomance nel accesso al disco)
  • PCI-Express passthrough
  • Kernel Sharedpage Merging (KSM) (esegue il merge delle pagine di memoria uguali)

Queste sono solo alcune delle potenzialità di QEMU/KVM ; se poi si vogliono provare le novità più recenti vi consiglio di utilizzare Fedora , in cui normalmente vengono inserite le ultime tecnologie riguardanti la virtualizzazione .

Proviamolo sul Campo

Ora che seppiamo che cosa è KVM passiamo alla pratica ; per avere le ultime funzionalità messe a disposizione da KVM utilizzeremo Fedora 16 ma puo andar bene anche la versione precedente.
Inizieremo ad utilizzare i tool grafici per la gestione delle macchine virtuali , e man mano che andremo avanti impareremo ad usare anche la linea di comando per creare/gestire le VM ed anche per gestire qemu-kvm.

Prima di tutto dobbiamo capire se il nostro computer ha le estensioni per la virtualizzazione , possiamo fare queso dando il seguente comando come utente root :

#grep -E 'svm|vmx' /proc/cpuinfo

Analizzando l’output del comando dobbiamo verificare che nei flag sia predente VMX per i processori Intel o SVM per i processori AMD .

Per completezza vi rimando ad un link di wikipedia in cui potete trovare i processori con questo tipo di estensioni Intel e AMD , la pagina è in inglese perché quella italiana non è aggiornata .

http://en.wikipedia.org/wiki/X86_virtualization

Vi ricordo inoltre che alcuni produttori disabilitano queste estensioni da BIOS , quindi bisogna accedere nel BIOS e attivarle.

Nel caso in cui non abbiate le estensioni per la virtualizzazione potete comunque continuare con questo percorso , in quanto come detto in precedenza il fatto di utilizzare o meno KVM è trasparente , la differenza sarà che la VM che creeremo sarà emulata da qemu e di conseguenza andrà più lenta.

Assicuriamoci che il nostro sistema sia completamente aggiornato dando il comando :

#sudo yum check-update

Se il comando restituisce dei pacchetti da aggiornare diamo il comando :

#sudo yum -y update

Adesso siamo pronti per installare i pacchetti necessari per la virtualizzazione , quindi da linea di comando :

#sudo yum install qemu-kvm libvirt virt-manager virt-viewer python-virtinst

In questo modo installeremo tutto il necessario per iniziare a famigliarizzare la virtualizzazione .

Per oggi è tutto , nel prossimo articolo inizieremo a prendere famigliarità con “Virtual Machine Manager” un tool grafico per la gestione di qemu-kvm e delle macchine virtuali.

Fedora 17 – Virtualization

Fedora 17 verrà rilasciata ufficialmente l’8 maggio ; in questo post andremo ad analizzare alcune nuove funzionalità riguardanti la virtualizzazione in particolare :

  • KVM Live Block Migration
  • Miglioramenti per i dischi Thin Provisioned in KVM
  • Virtualizaion Sandbox

KVM Live Block Migration

Questa funzionalità consente di copiare l’immagine disco di una VM mentre la stessa è in funzione permettendo di fatto uno Storage VM Motion.
i principali casi d’uso potrebberro essere :

  • Si vuole muovere una VM da una LUN a basse performance su una LUN più prestante
  • Si vuole cambiare il tipo di disco della VM passando da qcow a raw per aumentare le performance
  • Si vuole spostare una VM dallo storage locale ad uno condiviso (SAN, NFS, ecc.)

Ad oggi ( 27/03/12 ) questà funzionalità risulta implementata per il 70% in Fedora 17 , dovremmo quindi aspettare la versione Beta , peer vederla completamente funzionante. Per maggiori informazioni è possibile consultare la pagina ufficiale di QEMU (http://wiki.qemu.org/Features/LiveBlockMigration) , in cui viene spiegato più nel dettaglio questa funzione . Appena sarà completamente implementata faremo un’articolo di approfondimento per questa funzionalità molto interessante .

Link alla pagina di Fedora 17 – KVM Live Block Migration :

https://fedoraproject.org/wiki/Features/KVM_Live_Block_Migration

Thin provisioning improvements in KVM

È stato migliorato il supporto per i dischi thin-provisioned . Ora le macchine virtuali con dischi thin-provisioned possono passare a thick-porivisioned per aumentare le performance in background e mentre la VM sta funzionando.

Attualmente la pagina che ospita questa funzionalità non è molto chiara e mancano alcuni informazioni riguardanti la documentazione .

Link alla pagina di Fedora 17 – Thin Provisioning Improvement :

https://fedoraproject.org/wiki/Features/KVMThinProv

Virtualization Sandbox

In Fedora 16 è stato introdotto un tool da righa di comando “sandbox” ; questo tool permette di far girare delle applicazione in modo confinato ed isolato attraverso delle policy SElinux ; è possibile come opzione fa vedere all’applicazione alcune parti del nostro filesystem .

Grazie alla funzionalità che sarà introdotto con Fedora 17 , il demone libvirt conterà un driver LXC che esporà un container virtualizzato per le nostre applicazioni , ed un driver QEMU per avere a disposizione anche una virtualizzazione KVM .

Attualmente anche questa funzionalità non è completa nella documentazione dovremmo quindi aspettare per poter provare questa funzione.

Link alla pagina di Fedora 17 – Virtualization Sandbox :

https://fedoraproject.org/wiki/Features/VirtSandbox

Linux e UEFI – Introduzione

Prima di iniziare a leggere Vi informo che questo primo articolo è puramente teorico ; quindi se no Vi interessa la teoria non sprecate il Vostro tempo ed aspettate l’uscita dell’articolo successivo .

Un po’ di Storia

EFI è l’acronimo di Extensible Firmware Interface , lo scopo di questa tecnologia è di sostituire Il vecchio e limitato BIOS delle schede madri .Inizialmente l’esigenza venne durante lo sviluppo della prima piattaforma Intel-HP Itanium a metà degli anni 90 . Il BIOS ha diverse limitazioni ( 16-bit processor mode , 1 MB si spazio indirizzabile, etc.) e queste non erano accettabili per la piattaforma Itanium.
Nel 2005 Intel cesso lo sviluppo della EFI ed entro a far parte del Unified EFI Forum , che ha evoluto e standardizzato le specifiche diventando così UEFI.
La versione 2.1 della UEFI fu rilasciata nel 2007 e aggiunse la crittografia , l’autenticazione tramite rete e l’architettura per l’interfaccia utente .

Inizialmente nel 2006 Apple lo inserì nei primi iMac Intel Dual Core , ma la sua vera introduzione ebbe inizio con l’introduzione da parte di Intel dei processori con architettura Sandy Bridge.
Dal 2011 ASRock, ASUSTeK, Gigabyte e MSI hanno lanciato diverse schede madri con UEFI

Introduzione

Per capire i vantaggi che introduce l’UEFI rispetto al vecchio BIOS , occorre prima capire cosa sia in generale un firmware ed in cosa l’UEFI differisce dal BIOS.
In generale il firmware è un software residente nella memoria non volatile di un dispositivo ; un esempio potrebbero essere le schede che inseriamo nella motherboard; queste hanno al loro interno un firmware.
Sia il BIOS che l’UEFI risiedono nella scheda madre , ed eseguono diverse operazioni molto importanti; all’interno di essi vi è il codice che viene eseguito dal computer all’avvio, il codice per il controllo del hardware e le funzioni per leggere ed eseguire programmi dal hard disk.

Il BIOS fu introdotto con i pc IBM nel 1981 , ed è molto limitato per gli attuali standard . Il BIOS carica i primi settori del disco di avvio e gli esegue; negli hard disk i primi settori è chiamato Master Boot Record (MBR) e le sue limitazioni hanno portato diversi problemi :

  • Il bootloader residente nel MBR è piccolo , per tale motivo tipicamente questo pezzo di software serve caricare altro codice presente nella partizione di boot .
  • Il processo di boot è vulnerabile a cambiamenti apportati al MBR . L’installazione si nuovi OS può portare la riscrittura dei dati nel MBR e rendere impossibile l’avvio di OS esistenti . Alcuni Virus potevano anche insediarsi nel MBR .
  •  Il “design” del BIOS risale a circa 30 anni fa , per tale motivo opera in modalità 16-bit 8086 . Nei computer a 32-bit o a 64-bit non vi è la necessità di operare in questa modalità , se non per il processo di boot ; i produttori di CPU sono perciò costretti a continuare ad inserire il codice per questa modalità unicamente per il BIOS .

Il fimware EFI mira a risolvere queste limitazioni del BIOS , anche se risulta essere più complesso nel suo utilizzo ; questo pechè implementa funzionalità
che prima non era possibile inserire . Alcune funzionalità chiave della UEFI sono :

  • L’UEFI può analizzare la tabbela delle partizioni e dei filesystem , pertanto i bootloader posso risiedere su un file in una partizione e questo permette di avere più bootloader nel proprio sistema e sceglire quale far partire .
  • L’UEFI solitamente include un modo per selezionare quale bootloader utilizzare e di conseguenza quale OS far partire.
  • Se i sistemi operativi che utilizziamo sono ben fatti non andranno a sovrascrivere il bootloader degli altri ; sfortunatamente alcuni bug possono causare a volte questo problema.
  • l’UEFI supporta i driver per i filesystem e per l’hardware , questo permette di fare il boot anche da hardware non dotato di firmware .
  • l’UEFI supporta GPT (GUID Partittion Table) come schema di partizione per l’hard disk , che risolve diverse limitazioni del DOS MBR , come il limite nel numero delle partizioni e delle dimensioni (fino a 4 partizioni , con un massimo di 2.2TB) .GPT supporta partizioni con dimensioni massime di 9.4 ZB.

Linux supporta il boot da UEFI a partire dal 2000 , utilizzando elilo EFI boot loader o il più moderno GRUB.

Nel prossimo articolo analizzeremo il processo di boot da UEFI andando a vedere nello specifico i file di configurazione coinvolti e come questo processo influisca sui sistemi Linux .