Come creare macchine virtuali VirtualBox dal terminale Linux

Contenuti

Logo VirtualBox

La maggior parte dei fornitori di servizi cloud affitta server virtuali anziché hardware reale. Se intendi fare lo stesso sui tuoi server, se eseguire diversi sistemi operativi o gestire più ambienti, puoi farlo totalmente dal tuo terminale.

Se stai pianificando soltanto utilizzando macchine virtuali, potresti essere interessato a un hypervisor. Un hypervisor sostituisce il sistema operativo host ed è progettato su misura per gestire più macchine virtuali. Non sarai in grado di eseguire applicazioni sul sistema operativo host, ma puoi facilmente virtualizzare Ubuntu Server o qualcosa del genere ed eseguire le applicazioni sull'hypervisor.

Installazione di VirtualBox e del pacchetto di estensione VBox

VirtualBox è un software di virtualizzazione gratuito basato su GUI che viene eseguito come un'applicazione sul sistema operativo host (un hypervisor di tipo 2). Potresti averlo usato prima su un personal computer per configurare una macchina virtuale, ma VirtualBox ha in realtà un'interfaccia a riga di comando completa e può essere utilizzato completamente solo da un terminale, che lo rende perfetto per questo caso d'uso. Un'altra soluzione sarebbe QEMU, ma VirtualBox è testato ed è imbattibile per essere gratuito e open source.

Nonostante questo, VirtualBox CLI è un po' difficile da gestire, quindi se stai giocando solo su un server domestico e hai un po' di RAM di riserva, puoi installare un ambiente desktop leggero sul tuo server e configurare VirtualBox nel modo normale. Puoi ancora eseguire macchine virtuali in modalità headless per mantenerle in esecuzione dopo la disconnessione da DE.

Se hai intenzione di attenerti al CLI, l'installazione è abbastanza semplice, poiché è abilitato direttamente da apt:

sudo apt-get install virtualbox

Nonostante questo, vorrai prendere nota della versione installata ( VBoxManage -v ), poiché dovrai installare alcune altre cose. Perché stiamo impostando in modalità headless, avremo bisogno di un modo per connetterci alla macchina prima che SSH possa essere configurato / RDP.

Vai a Pagina di download di VirtualBoxe trova il collegamento al pacchetto di estensione per la versione su cui è in esecuzione. Scaricalo con wget:

wget https://download.virtualbox.org/virtualbox/5.2.42/Oracle_VM_VirtualBox_Extension_Pack-5.2.42.vbox-extpack

E installalo:

sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.2.42.extpack

Per qualche ragione, VRDE non sembrava funzionare per noi con il pacchetto di estensione VNC integrato installato. La rimozione di questo pacchetto ha risolto il problema:

sudo VBoxManage extpack disinstalla VNC

Configura una macchina virtuale

Iniziare, creeremo una nuova macchina virtuale chiamata “Ubuntu”. Puoi vedere un elenco di tipi di sistemi operativi supportati VBoxManage list ostypes.

sudo VBoxManage createvm --name "Ubuntu" --ostype Ubuntu_64 --register

Dai alla macchina un po' di RAM e crea un nuovo disco rigido. Andremo con 4 GB di RAM e 32 GB di spazio su disco rigido, ma entrambi possono essere espansi in seguito. Si prega di notare che il disco rigido è un disco virtuale e non è pre-allocato.

sudo VBoxManage editvm "Ubuntu" --memoria 4096
sudo VBoxManage createhd --filename "Ubuntu.vdi" --dimensione 32000

Imposta il numero di CPU virtuali. Questo è misurato in fili, non su core di CPU completi.

sudo VBoxManage editvm "Ubuntu" --cpu 2

Quella che segue è un'altra configurazione per il disco rigido. Generalmente, questo accade automaticamente quando si creano macchine dalla GUI, ma dovrai creare manualmente un controller SAS e collegarlo alla macchina virtuale affinché il disco rigido funzioni correttamente.

sudo VBoxManage storagectl "Ubuntu" --nome "Controller SAS" --add sas --controller LSILogicSAS
sudo VBoxManage storageattach "Ubuntu" --storagectl "Controller SAS" --porta 0 --dispositivo 0 --digita hdd --medium "Ubuntu.vdi"
sudo VBoxManage storagectl "Ubuntu" --nome "Controller SAS" --hostiocache acceso

Faremo lo stesso con il disco che conterrà l'ISO per installare il sistema operativo. Ciò presuppone che la tua ISO si trovi in /home/user/Ubuntu.iso, quindi cambiarlo di conseguenza.

sudo VBoxManage storagectl "Ubuntu" --nome "Controller IDE" --add ide --controller PIIX4
sudo VBoxManage storageattach "Ubuntu" --storagectl "Controller IDE" --porta 0 --dispositivo 0 --digita dvddrive --medium "/home/utente/Ubuntu.iso"

Dopo, abilitare alcune opzioni relative alle prestazioni per evitare rallentamenti dovuti all'utilizzo eccessivo della RAM:

sudo VBoxManage editvm "Ubuntu" --nestedpaging on
sudo VBoxManage modifyvm "Ubuntu" --pagine grandi su

Prossimo, creeremo la rete che utilizzerà questa macchina virtuale. Ci sono molte opzioni per questo passaggio:

  • NAT, il più semplice, che consente semplicemente alla VM di comunicare con il mondo esterno tramite la traduzione degli indirizzi di rete (NAT). Ciò non consente alle macchine virtuali di comunicare tra loro e non consente il contatto da host a guest a meno che la porta non venga inoltrata.
  • La rete NAT è equivalente a NAT, tranne che la rete è condivisa tra le macchine virtuali e possono comunicare tra loro. La rete NAT funge da sottorete virtuale.
  • a ponte, che lega la connessione fisica direttamente alla VM. La macchina virtuale ha un vero indirizzo IP sulla tua rete. Può funzionare anche con una singola connessione Wi-Fi / Ethernet, ma se hai una scheda di rete con molte porte Ethernet, può allocare un'interfaccia completa direttamente a una macchina virtuale.
  • Rosso virtuale, connessione di più istanze in una rete virtualizzata isolata. Questo è utile per modellare reti reali, ma non adatto per la maggior parte dei casi d'uso.
  • adattatore solo host, è equivalente alla rete virtuale, ma consente di parlare con l'host (senza Internet).

Per questo esempio, useremo la rete NAT, dal momento che è semplice da configurare e il più versatile del gruppo, offrendo un equilibrio tra connettività e isolamento.

Crea una nuova rete in 10.0.0.0/24 sottorete, inizialo:

sudo VBoxManage natnetwork add --netname natnet1 --network "10.0.0.0/24" --enable
sudo VBoxManage natnetwork start --netname natnet1

E allegalo alla VM:

sudo VBoxManage editvm "Ubuntu" --nic1 natnetwork --nat-network1 natnet1

Prossimo, dovremo configurare come accediamo a questa istanza. Perché lo stiamo installando su un server headless (nessuna uscita video), non saremo in grado di completare la procedura di installazione e installare un client RDP sul sistema operativo guest. Per risolvere questo, Useremo il server VirtualBox VRDE, il motivo principale per cui abbiamo installato il pacchetto di estensione VirtualBox in precedenza. Questo cattura l'output dello schermo virtuale e lo rende disponibile tramite RDP.

Attivalo e imposta una porta per questo. Ti consigliamo di assicurarti che il sistema operativo host abbia questa porta aperta.

sudo VBoxManage editvm "Ubuntu" --vrde on
sudo VBoxManage modifyvm "Ubuntu" --vrdeport 5587

Finalmente, possiamo avviare la macchina virtuale in modalità headless e avviare l'installazione del sistema operativo.

sudo VBoxManage startvm "Ubuntu" --tipo senza testa

Tieni presente che la modalità senza testa significa che stai utilizzando un server senza testa, e non che il sistema operativo guest non abbia output video.

Ci vorranno uno o due secondi per iniziare, e sarai in grado di avviare un client RDP e connetterti ad esso utilizzando la porta specificata. Puoi richiedere un nome utente e una password; VRDE predefinito è “amministratore” senza password.

Port forwarding dopo la configurazione

Una volta completata l'installazione del sistema operativo, dovrai eseguire il port forwarding per mantenere l'accesso dopo la chiusura di VRDE, essenzialmente come aprire le regole del firewall. Se stai configurando un ambiente headless come Linux, dovrai semplicemente inoltrare SSH. Il seguente comando aggiungerà una regola di port forwarding alla tua rete NAT per inoltrare la porta 2200 sul sistema operativo host alla porta SSH predefinita sul guest. Nota che questa porta dovrà essere aperta sul firewall del tuo host affinché funzioni.

sudo VBoxManage natnetwork modify --netname natnet1 --port-forward-4 "ssh:tcp:[]:2200:[10.0.0.2]:22"

Se stai configurando RDP, sarà necessario configurare il server RDP nel sistema operativo guest e assicurarsi che la porta RDP sia aperta sul firewall guest. Successivamente, puoi portare avanti allo stesso modo:

sudo VBoxManage natnetwork modify --netname natnet1 --port-forward-4 "rdp:tcp:[]:5589:[10.11.0.2]:3389"

Se è necessario cancellare le regole di port forwarding, dovrai rimuoverli per nome con questo comando piuttosto ingombrante (la prima stringa prima dei due punti):

sudo VBoxManage natnetwork modifica --netname natnet1 --port-forward-4 elimina rdp

Dopo aver verificato che puoi connetterti tramite SSH / RDP direttamente al sistema operativo guest, puoi disabilitare VRDE:

sudo VBoxManage editvm "Ubuntu" --via

Se prevedi di utilizzare questa macchina virtuale su RDP per lunghi periodi di tempo, potresti voler installare la suite VirtualBox Guest Additions per il tuo sistema operativo guest.


Se decidi di gestire VirtualBox utilizzando la GUI dopo aver configurato questa VM da CLI, nota che questa VM è stata creata come root, quindi dovrai avviare la GUI di VirtualBox come root per vedere questa macchina virtuale nell'elenco. Caso opposto, dovrebbe funzionare regolarmente.

Allo stesso tempo, se vuoi che la macchina funzioni mentre il tuo ambiente desktop è spento, dovrai fare clic con il tasto destro per avviare la macchina in modalità senza testa.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.