Anche su Linux e MacOS è disponibile VirtualBox, che già conosciamo bene, allora perché dovremo prendere in considerazione Quickemu, che tra l'altro è uno strumento che funziona da linea di comando, senza interfaccia grafica? Perché come si può intuire dal nome è molto veloce, non solo nell'emulazione delle macchine virtuali (dato che alla sua base c'è il fantastico Qemu, abbreviazione che sta per Quick Emulator, emulatore veloce) ma anche e soprattutto per la creazione delle stesse! Non ci credete? Continuate a leggere!

[LINUX][MacOS] virtualizzazione sistemi operativi non sarà più problema: guida Quickemu

» Leggi: La virtualizzazione dei sistemi operativi non sarà più un problema: guida a VirtualBox

Veloce, ma quanto veloce?

Volete sapere quanto è veloce creare una macchina virtuale con Quickemu? Basta un solo comando per creare, partendo da zero una macchina virtuale con una configurazione già ottimizzata, ad esempio, di Windows 11:

quickget windows 11

Non è necessario cercare e scaricare una ISO di installazione e montarla sul sistema virtuale, ci penserà Quickemu a farlo per noi. Non solo: l'installazione del sistema che seguirà appena lanciata la nuova macchina virtuale sarà del tipo "non presenziata" (unattend), creerà un account Amministratore con nome Quickemu e password quickemu, così che potremo saltare tutta la parte di configurazione!

» Leggi: Come creare una immagine ISO di Windows 11 personalizzata senza controllo requisiti hardware, account online, app e tanto altro

E con la stessa facilità potremo installare quasi altri mille sistemi operativi compresi diverse distribuzioni Linux, diverse versioni di Windows ma anche di MacOS, BSD e altri! E se quelli preconfigurati non vi bastano, potete anche aggiungerne altri (ma dovrete fare la configurare della macchina virtuale da soli).

Il vantaggio nell'utilizzo di Quickemu non è "solo" la velocità di creazione di una macchina virtuale, c'è molto di più: quando possibile viene attivata da subito la condivisione della clipboard (per il copia/incolla) e di una cartella per facilitare lo scambio di file tra sistema host e guest, è possibile far vedere le periferiche USB al sistema virtualizzato, c'è il supporto per l'audio full-duplex, è possibile inoltrare le porte di rete tra i sistemi e la porta per SSH viene inoltrata automaticamente.

» Leggi: SSH con Windows, Linux, Mac: la Guida Definitiva - Come accedere ad un VPS, server cloud AWS/Azure o server aziendale con facilità

Installazione di Quickemu

Ma procediamo in ordine; la prima cosa da fare è installare Quickemu sul nostro sistema e qui la prima nota dolente (ma non vi preoccupate troppo, continuare a leggere!): infatti si trova nei repository di solo una manciata di particolari distribuzioni Linux, tra cui non ci sono Debian né tutte le sue derivate. La buona notizia è che lo sviluppatore mette a disposizione un pacchetto .deb per Debian e anche un repository per Ubuntu (che può essere utilizzato anche su Linux Mint). Gli altri non devono però disperare perché l'installazione è possibile su qualunque distribuzione ed è piuttosto semplice: dato che non è richiesta compilazione ma basta un semplice comando. In questa guida vedremo l'installazione sulla mia distro preferita, OpenSUSE.

» Leggi: OpenSUSE Tumbleweed: buon divertimento con la migliore distro!

Per prima cosa assicuriamoci di avere i giusti requisiti per poter far funzionare Quickemu, verifichiamo di aver installato i programmi e le librerie necessarie al corretto funzionamento di Quickemu. Una lista è disponibile sul Github ufficiale e riporto un immagine anche qui per comodità.

[LINUX][MacOS] virtualizzazione sistemi operativi non sarà più problema: guida Quickemu

Su OpenSUSE andranno aggiustati alcuni nomi dei pacchetti e in particolare: python3 sarà python312, EDK II sarà ovmf-tools, glxinfo sarà Mesa-demo-x, spicy sarà spice-client-gtk. Il comando da impartire è quindi:

sudo zypper in qemu coreutils curl ovmf-tools gawk grep Mesa-demo-x jq pciutils procps python312 mkisofs usbutils util-linux sed socat spice-gtk swtpm xdg-user-dirs xrandr zsync unzip

Potrebbe essere necessari ulteriori pacchetti e vi accorgerete della loro mancanza al momento della creazione o dell'avvio della macchina virtuale: se il processo si interromperà per la mancanza di qualcosa dovremo interpretare l'errore e cercare quale pacchetto è necessario. Durante le mie prove, ad esempio, ho notato la mancanza di qemu-audio-pa richiesta per la corretta funzione dell'audio del sistema guest.

Su altre distro il nome dei pacchetti potrebbe variare ma basterà una veloce ricerca su Internet e/o nei repository per trovare il nome del giusto pacchetto da installare.

Su MacOS, possiamo utilizzare Homebrew per installare i pacchetti necessari con il seguente comando; l'installazione di quickemu invece sarà del tutto simile a quella che vedremo tra breve:

brew install bash cdrtools coreutils jq python3 qemu usbutils samba socat swtpm zsync

» Leggi: Guida a Homebrew: il gestore pacchetti mancanti per MacOS

Adesso il nostro sistema è pronto per l'installazione di Quickemu; scarichiamo quindi l'ultima versione disponibile direttamente da Github, possiamo farlo con un semplice comando da terminale:

git clone --filter=blob:none https://github.com/quickemu-project/quickemu

[LINUX][MacOS] virtualizzazione sistemi operativi non sarà più problema: guida Quickemu

Questo scaricherà tutti i file necessari (e anche qualcuno in più, specifico solo per particolari distro) in una nuova cartella chiamata quickemu. All'interno di questa cartella troveremo, tra gli altri file, i due eseguibili (o meglio, script!) principali quickget e quickemu che dovremo invocare da terminale rispettivamente per creare e lanciare la macchina virtuale. Dato che non si trovano in un percorso conosciuto dal sistema dovremo invocarli specificando ogni volta il percorso (relativo o assoluto) dove risiedono. Per ovviare a ciò possiamo creare un collegamento a questi nel percorso /usr/locale/bin/ con i seguenti comandi (nel caso in esempio la cartella quickemu è stata creata nel home del mio utente):

sudo ln -s ~/quickemu/quickget /usr/local/bin/quickget

sudo ln -s ~/quickemu/quickemu /usr/local/bin/quickemu

[LINUX][MacOS] virtualizzazione sistemi operativi non sarà più problema: guida Quickemu

A questo punto siamo pronti per creare la nostra prima macchina virtuale!

Creazione della macchina virtuale

Abbiamo già visto il semplice comando per la creazione di una macchina virtuale, adesso approfondiamolo un po'. Lo script che si occupa della creazione della macchina virtuale è quickget e a questo dobbiamo passare come parametri, il sistema operativo, la versione e per alcuni la lingua desiderata. Per vedere la lista dei sistemi operativi e delle versioni supportate possiamo utilizzare il seguente comando; dato l'output molto lungo possiamo impaginarlo passandolo con un pipe a less:

quickget --list | less

[LINUX][MacOS] virtualizzazione sistemi operativi non sarà più problema: guida Quickemu

Una volta individuato il sistema operativo (compreso versione e lingua) possiamo passarlo a quickget come visto in precedenza e attendere pazientemente il termine dell'operazione la cui durata può variare a secondo di vari fattori, uno su tutti la nostra velocità di connessione. Io scelgo di virtualizzare Mac OS Sonoma (attenzione: per emulare questo sistema operativo è richiesta una quantità di ram superiore agli 8 GB, meglio se superiore a 16 GB); dato che quickget creerà una cartella e un file con il nome del sistema scelto nel percorso dove viene eseguito, consiglio di eseguirlo sempre all'interno di una stessa cartella che può anche essere la home del nostro utente ma ritengo più ordinato creare una nuova cartella (ad esempio, VM) ed eseguirlo sempre da lì.

NB: se abbiamo Btrfs come file system può essere una buona idea disabilitare il Copy-On-Write (con il secondo comando qui sotto) per questa cartella perché diminuirà la frammentazione del disco virtuale migliorando leggermente le prestazioni; questa operazione va fatta prima della creazione del disco o il Copy-On-Write non verrà disattivato!

» Leggi: [LINUX] Come e quando passare da ext4 a btrfs (anche con partizione criptata!)

I comandi saranno quindi:

mkdir VM

chattr +C VM

cd VM

quickget macos sonoma

In questo caso, quickget si preoccuperà non solo di scaricare l'immagine per l'installazione del sistema Mac ma anche di scaricare il bootloader OpenCore, necessario per avviare questo sistema operativo su macchine diverse da quelle di Apple.

[LINUX][MacOS] virtualizzazione sistemi operativi non sarà più problema: guida Quickemu

Una volta terminata l'operazione, ci viene suggerito il comando per avviare la macchina virtuale in modo da poter procedere con l'installazione del sistema (per la quale vi rimando alla guida specifica sul Github di Quickemu):

quickemu --vm macos-sonoma.conf

[LINUX][MacOS] virtualizzazione sistemi operativi non sarà più problema: guida Quickemu

Chi ha osservato attentamente l'immagine sopra potrebbe aver notato un altro argomento passato al comando quickemu, --display gtk, opzione che serve per utilizzare un diverso tipo di display, è un opzione propria di Qemu ed ho dovuto specificarla perché il display utilizzato per impostazione predefinita (sdl) non funzionava.

Questo ci offre la possibilità di parlare di altre opzioni che si possono specificare all'avvio della macchina virtuale e che si possono vedere con il comando

quickemu --help

[LINUX][MacOS] virtualizzazione sistemi operativi non sarà più problema: guida Quickemu

Tutte queste opzioni sono da specificare dopo aver indicato a quickemu a quale macchina virtuale vogliamo applicarle, sarà quindi indispensabile farle precedere da --vm nomemacchinavirtuale.conf e potranno essere concatenate in modo da poterne specificare più di una.

Alcune delle più utili riguardano la possibilità di modificare la grandezza dello finestra della macchina virtuale, rendendola "a tutto schermo" (con l'opzione --fullscreen) o personalizzando larghezza e altezza con le opzioni --width e --height seguite da un valore che rappresenta i pixel e da utilizzare insieme.

Altre opzioni riguardano la possibilità di creare delle istantanee dello stato della macchina virtuale con l'opzione --snapshot create seguita dal nome con cui vogliamo identificare quell'istantanea; l'opzione --snapshot info consente di avere informazioni su tutte le istantanee create per quella determinata macchina virtuale, --snapshot delete nome consente di cancellare l'istantanea nome mentre --snapshot apply nome consente di ripristinare lo stato della macchina virtuale a quell'istantanea.

Ancora --public-dir seguito dal percorso ad una cartella consente di condividerla con la macchina virtuale, --offline consente di avviale la VM senza connessione ad internet e --kill di terminare il processo della macchina virtuale se rimanesse attivo.

Ci sono poi le opzioni per la cancellazione --delete-vm consente di eliminare disco virtuale e configurazione della VM interessata, mentre --delete-disk rimuoverà solo il disco virtuale.

Un'altra opzione interessante è --extra_args che consente di passare argomenti direttamente a qemu.

L'ultimo comando che vi segnalo, estremamente utile per evitare di dover aprire il terminale ogni volta che vogliamo avviare la macchina virtuale, è --shortcut che consente di creare un avviatore nel menu dei programmi per poter avviare la VM con un click del mouse.

Interfaccia grafica

Per chi proprio non digerisce la linea di comando, anche per programmi semplicei come quickemu, è disponibile un interfaccia grafica da aggiungere a quickemu: QuickGUI. Per i sistemi basati su Debian vengono rilasciati pacchetti .deb ed è disponibile anche un repository dedicato. Per tutti gli altri è comunque possibile installarlo ma va compilato perché il pacchetto contenente il binario già compilato non sembra più essere disponibile (l'ultimo risale alla versione 1.2.4). La compilazione richiede di preparare un ambiente di sviluppo per Flutter (linguaggio con il quale è scritto QuickGUI) e questo fa sì che la complessità per la compilazione renda vana la semplificazione nell'utilizzo di Quickemu tramite GUI.

[LINUX][MacOS] virtualizzazione sistemi operativi non sarà più problema: guida Quickemu

Un'alternativa è qqX non una vera e propria GUI ma utilizza il terminale per mostrare varie opzioni con chiari messaggi tra cui poter scegliere per gestire le VM tramite quickget e quickemu. L'installazione è semplice: basta scaricare l'ultima versione disponibile dal Github, scompattare l'archivio (magari nella stessa cartella di quickemu) e lanciare tramite terminale l'eseguibile qqX_setup_and_install e seguire le istruzioni facendo le scelte necessarie a personalizzare la nostra installazione.

[LINUX][MacOS] virtualizzazione sistemi operativi non sarà più problema: guida Quickemu

Se avete seguito passo passo la mia guida, dovrete cambiare la cartella della macchine virtuali configurata in qqX che per impostazione predefinita è ~/VQMS in ~/VM; sarà possibile farlo nella nuova finestra che si aprirà alla fine della procedura di installazione automatica, premendo Invio e modificando la stringa indicata nella seguente immagine con il proprio percorso alle macchine virtuali; ricordatevi di salvare prima di chiudere l'editor di testo!

[LINUX][MacOS] virtualizzazione sistemi operativi non sarà più problema: guida Quickemu

A questo punto potremo riavviare qqX, questa volta potremo farlo direttamente dal nostro menu dei programmi e le macchine virtuali precedentemente create saranno disponibili per essere avviate.

[LINUX][MacOS] virtualizzazione sistemi operativi non sarà più problema: guida Quickemu