martedì 28 settembre 2021

00 - Introduzione ed ambiente di lavoro

Il presente corso è il risultato dell'elaborazione di una serie di appunti presi dal sottoscritto durante lo studio della virtualizzazione nelle CPU Intel, in particolare VT-x. A tale proposito, quindi, non c'è alcuna velleità pedagogica o educativa, ne tantomeno pretesa di originalità o attestazione di qualsivoglia proprietà intellettuale. Non scrivo con l'intendo di insegnare ma, semplicemente, di lasciare traccia ed evidenza, soprattutto a me stesso, di tutti gli sforzi ed il tempo che ho dedicato a questo argomento. Inoltre, è possibile che alcuni dettagli non siano corretti o, addirittura, che intere lezioni siano da rivedere (lasciate un commento per segnalare qualsiasi cosa). Fatta questa doverosa premessa, teoria e codice sorgente attorno a cui si svilupperà il corso prendono spunto da diverse fonti, in particolare le principali sono:



Lo scopo di questo corso sarà quello di creare un driver in grado di abilitare ed avviare la modalità virtualizzata nella CPU del proprio computer al fine di virtualizzare il sistema in uso (in questo caso Windows). A quel punto il nostro driver sarà in grado di regolare e controllare l'esecuzione delle istruzioni e la gestione degli eventi non solo da parte delle applicazioni utente ma addirittura dell'intero sistema. Benché le specifiche e la documentazione Intel sulla virtualizzazione siano assolutamente indipendenti dal sistema operativo, alla fine bisogna scrivere un driver e quindi è necessario scegliere su quale OS si vuole sviluppare ed eseguire il codice. Il sistema operativo di riferimento in questo corso sarà Windows 10 a 64 bit.
Testare e debuggare il codice di un simile driver su hardware reale potrebbe risultare non troppo agevole dato che sarebbe necessario farlo su un pc diverso da quello che si sta usando. Il perché è presto detto: per debuggare un driver è necessario bloccare l'esecuzione (tramite break point) dell'intero sistema operativo all'interno del quale questo è eseguito e, per tale motivo, sarebbe alquanto arduo cercare di debuggare un driver eseguito sullo stesso sistema da cui si avvia il debug. Il modo più semplice ed economico di risolvere il problema è quello di testare il codice su una macchina virtuale (VM). Esistono alcuni prodotti software sviluppati da terze parti che permettono la creazione di macchine virtuali (ad esempio VMWare o VirtualBox) ma Windows 10 ha già qualcosa del genere che è perfettamente integrata all'OS, pronta all'uso e gratuita: Hyper-V. Se non si è ancora abilitato Hyper-V e creata una VM si proceda con quanto descritto in [1]. 


I prerequisiti richiesti, per seguire il presente corso senza particolari problemi, sono essenzialmente due:

- Aver una conoscenza di base sulla programmazione dei driver in ambiente Windows. 
Se così non fosse si può seguire il corso presente su questo stesso sito (almeno le prime 9 lezioni; si veda [2]). Un'ulteriore risorsa molto valida è [5].
- Avere una conoscenza di base sull'architettura e sulle funzionalità delle CPU Intel.
Se così non fosse sarebbe auspicabile leggere prima la relativa documentazione Intel (Software Developer Manuals). In particolare il volume 1 (capitoli 1-7 e 20) ed il volume 3A (capitoli 1-11). Si vedano [3] e [4].

 Il resto verrà spiegato al momento opportuno.




Riferimenti:

Nessun commento:

Posta un commento