Un paio di azioni per migliorare l'integrazione di VM desktop dentro hypervisor KVM.
Gli ambienti desktop Linux offrono di default lo stack QEmu, KVM, libvirt, Spice e Virt-Manager per virtualizzare restando aderenti alla filosofia Open Source e nella liceità delle licenze aperte.
A differenza delle soluzioni commerciali, però, alcune componenti migliorative sui client vanno reperite e aggiunte manualmente.
Il processo si complica ulteriormente perché non esiste una sola distribuzione, ci sono più siti e repositori di riferimento, la documentazione è pensata per sviluppatori o tecnici esperti; insomma: è veramente complicato capire e arrivare a fine impresa.
Vediamo come e cosa fare con una virtualizzazione Windows ed una Virtualizzazione Linux Desktop.
Non vedremo la parte di installazione dell'ambiente di virtualizzazione nell'host, né la creazione delle VM.
Windows
Terminata la creazione della VM passiamo a installare i driver.
L'operazione è in due passi:
- attività sull'host (la macchina che virtualizza)
- attività sulla macchina virtualizzata.
Attività sull'host
- Collegarsi all'URL https://github.com/virtio-win/virtio-win-pkg-scripts/blob/master/README.md e scaricare il "Latest virtio-win ISO"
- aggiungere il file ISO come CD alla macchina virtuale Windows.
Attività sulla VM
Dopo aver fatto le due operazioni sopra:
- accedere alla macchina virtuale Windows e autenticarso con un utente amministratore
- aprire il CD e lanciare il file "virtio-win-gt-x64.msi"
- riavviare Windows.
Linux
Esistendo molte distribuzioni diverse di Linux. In queste istruzioni prenderemo in considerazioni le sole Debian based (istruzioni apt
) e le Red Hat based (istruzione dnf
).
Inoltre si tenga presente che alcune distribuzioni automaticamente già durante l'installazione aggiungono da sole alcuni pacchetti per la migliore interoperabilità con il computer host.
Infine suggerisco di installare per prima cosa il server ssh; non è un requisito strettamente necessario, ma è molto comodo operare sulla VM tramite un terminale remoto!
Estensioni Standard
Dopo aver creato la VM con Linux:
- accedere alla macchina virtuale Linux e autenticarsi con un utente amministratore
- aprire un terminale e installare il server ssh
sudo apt install openssh-server -y
sudo dnf install openssh-server -y
al termine di questa operazione la VM sarà già raggiungibile via SSH: suggerisco di accedervi via ssh.
- procediamo installando l'agente guest di Qemu
sudo apt install qemu-guest-agent -y
sudo dnf install qemu-guest-agent -y
- installiamo i drive spice
sudo apt install spice-vdagent xserver-xorg-video-qxl -y
sudo apt install spice-client-gtk -y
sudo dnf install spice-vdagent xserver-xorg-video-qxl -y
sudo dnf install spice-client-gtk -y
- riavviamo la vm
sudo systemctl reboot
Dopo il riavvio vedremo:
- la VM *risponde* automaticamente a *segnali* mandati dall'hypervisor (segnali di spegnimento, montaggio a caldo di cartelle o dischi, ecc...)
- migliore supporto dell'aggiunta di hardware virtuale a caldo
- supporto completo dei video QXL e VirtIO
- resize automatico dello schermo virtuale alle dimensioni della finestra.
Estensioni Avanzata
Un problema per le macchine virtualizzate è il basso livello di entropia.
Il problema si evidenzia con alcune attività particolari, come la creazione di certificati. In questi casi le operazioni vanno a buon porto, ma sono molto lunghe rispetto al tempo necessario.
Il problema si risolve installando un demone che ripristina una pseudo-causalità che permette di riportare a livelli normali l'entropia.
Devo anche evidenziare che i virtualizzatori (gli hypervisor)), a seconda del tipo, offrono dell'hardware virtuale che genera casualità: può essere una buona soluzione.
Da evidenziare anche che dalla versione 5.10.118 è cambiato l'algoritmo del kernel che gestisce la crittografia (e la disponibilità di numeri casuali). Pertanto da questa versione in poi del kernel la situazione è radicalmente cambiata per macchine virtualizzate.
Procediamo installando la soluzione software:
- accediamo alla VM e apriamo un terminale o accediamogli direttmaente via terminale
- installiamo RNG
sudo apt install -y rng-tools-debian
sudo dnf install -y rng-tools
- avviamo il demone
sudo systemctl enable rng-tools-debian
sudo systemctl start rng-tools-debian
sudo systemctl enable rng-tools
sudo systemctl start rng-tools
WebGrafia
https://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers