Linux KVM – Virtual Machine Manager
Nell’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 .
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) .
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 ….

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 :
- il nome della macchina ed il tipo di installazione
- la sorgente di installazione (dove si trova l’immagine ISO o il cd fisico da cui installare ) , e il sistema operativo
- Ram e CPU da assegnare alla machina
- 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.
Google Play Books

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
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
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
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 .
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 + .
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 .
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.
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 .
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
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 :
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 .










