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