Esegui VirtualBox in background, senza una finestra?


106

Mi chiedevo se fosse possibile eseguire una macchina virtuale Ubuntu usando VirtualBox in background, intendo, senza alcuna finestra aperta.

L'idea è quella di connettersi tramite SSH all'host Linux, che sarebbe in esecuzione in background.

Qualcuno ha mai fatto qualcosa del genere? È possibile?


Intendi connetterti via SSH al guest linux ? Puoi farlo molto facilmente con QEMU che eseguirà effettivamente l'ospite nel tuo terminale.
Felix,

Quindi potresti anche essere interessato alla configurazione SSH: superuser.com/questions/424083/virtualbox-host-ssh-to-guest
Fabricio PH


1
Lasciare aperta poiché questa domanda viene trattata meglio come l'originale; votato per chiudere come duplicato sull'altra domanda.
bwDraco,

Completamente d'accordo con @DragonLord - fai clic qui per passare all'altra domanda e chiuderla come duplicata di questa.
Raystafarian,

Risposte:


92

VBoxManage startvm $VM --type headless avvierà la macchina virtuale specificata in background.

Per spegnerlo, richiedere l'arresto dall'ospite.


Sarai in grado di accedere a SSH nel computer solo se hai configurato correttamente la rete. Penso che sia necessario utilizzare il bridge in modo che la macchina virtuale e la macchina siano sulla stessa rete. Inoltre, VirtualBox eseguirà comunque la GUI del sistema operativo di destinazione e puoi collegarti tramite desktop remoto, "rdesktop" (ottieni da apt poiché sei in Ubuntu)
basszero,

1
Vero. Presumo che la VM sia in genere eseguita prima attraverso la GUI di VirtualBox per installarla e configurarla. Utilizzare VBoxManage solo quando tutto funziona (incluso il networking).
developmentalinsanity

Con altri software VM, posso chiudere la finestra in modo che non sia sempre aperta e continui a funzionare in background, ma apro la finestra quando voglio interfacciarmi. È questo che fa?
JFA

Assicurati di ssh sulla macchina senza -X o -Y poiché quelli sembrano fare in modo che il comando precedente colleghi il processo alla shell, quindi se esci, la VM si interrompe.
Moritz,


23

Assolutamente! Stai cercando un'installazione senza testa (Virtualbox). Il modo per avviare la macchina dalla riga di comando è qualcosa di simile:

VBoxHeadless --startvm Debian --vrdp=off

Tuttavia avrai bisogno di un modo per connetterti. Quello che faccio è mappare le porte tra ospite e host. Con questa configurazione, la porta dell'host 2222 verrà mappata sulla porta 22 del computer guest.

VBoxManage setextradata "Debian" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol" TCP  
VBoxManage setextradata "Debian" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort" 22  
VBoxManage setextradata "Debian" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort" 2222  

Dopodiché puoi accedere con:

ssh localhost -p2222

vm deve ascoltare connessioni ssh, giusto? Potrebbe essere utile renderlo esplicito.
Matheus Santana,

3

un'alternativa a VBoxManage startvm "{VMName}" --type headlessè
VBoxHeadless -startvm "{VMName}"

In modo abbastanza divertente, ho appena finito di capire come eseguire una VM senza testa, su RDP.

Nota: almeno su Windows, bloccherà la finestra di comando. Se è necessario continuare a utilizzare la finestra della console, aprirne un'altra per avviare la VM.

Per arrestare la VM, è necessario arrestare il sistema operativo guest. VBoxHeadlessrilascia la console quando il Guest è completamente spento (è possibile Ctrl+C, ma penso che potrebbe essere analogo a un hard reset su una macchina reale).


Il fatto che vboxheadless blocchi molto la console vanifica lo scopo di una modalità senza testa. Su Mac OS X (e presumibilmente su Linux e Solaris) la modalità headless funziona quando invii vboxheadless in background usando &.
Andrew J. Brehm,

Immagino che ci sia un modo per farlo su Windows, non l'ho trovato. In ogni caso, un VM senza testa utilizza certamente meno risorse sul computer server rispetto a uno che esegue una GUI completa.
Nome falso

2

Sto usando VBoxTool da http://vboxtool.sourceforge.net/ e funziona perfettamente per me. Può avviare automaticamente le macchine virtuali all'avvio e arrestare / salvare le macchine virtuali allo spegnimento e fornisce un'interfaccia a riga di comando semplice e pulita.


2

Non penso che la modalità seamless sia esattamente ciò che sta cercando qui, penso che la cosa giusta sarebbe VBoxHeadless quali dettagli di te puoi trovare nel manuale. Funziona utilizzando un'interfaccia command-lin e verrebbe utilizzato, ad esempio, se una macchina virtuale era in esecuzione su un server ma la visualizzazione non era desiderata dal server. Sarai in grado di eseguire il desktop remoto sulla macchina (a condizione che tu sappia come impostare l'opzione dalla riga di comando).

Consiglierei di chiedere questo nei forum di virtualbox. In realtà, prima fai una ricerca perché mi aspetto che questo sia già stato chiesto.


VBoxManage era la cosa giusta, scusa. Collegare le informazioni nel manuale http://www.virtualbox.org/manual/ch08.html


2

Per iniziare in modalità senza testa usando la GUI:

Tenere premuto il tasto Maiusc quando si avvia la macchina virtuale.

Successivamente, sarà anche possibile connettersi e disconnettersi dalla GUI (Uso di Show and Machine -> Detach GUI options).


1

Ho scoperto che la modalità senza testa sembra funzionare bene quando si esegue il background in Linux (CentOS 5.6), ma si perde l'accesso alla funzionalità RDP fintanto che il processo è in background. Fai un 'fg' per riportare il processo in primo piano e la funzionalità RDP viene ripristinata. Sembra che l'avvio di vm senza testa sia realizzato al meglio tramite uno script init, in cui non è richiesta l'interattività con la console.


1

Puoi usare VBoxHeadless o (e mi chiedo perché nessuno lo abbia menzionato prima di me) puoi semplicemente selezionare una delle opzioni di avvio, che eseguirà la VM senza alcuna GUI.

Tieni premuto MAIUSC e avvia la macchina oppure fai clic con il pulsante destro del mouse sulla macchina e cerca qualcosa come "Esegui senza output" alla voce "Esegui"


0

Ho aggiunto queste righe al mio .bashrc:

VM='anakim'
alias vm='VBoxManage startvm $VM --type headless'
alias sshvm='ssh -p2222 localhost'

Per l'accesso ssh non è necessario modificare la configurazione, basta mantenere il NAT e impostare la tabella di port forwarding come segue:

Name      | Protocol | Host Port | Guest Port
guestssh  | TCP      | 2222      | 22
localhost | TCP      | 8080      | 80

Quando si inserisce localhost: 8080 nel browser del computer, viene aperta la pagina dalla macchina virtuale (sulla porta 80).


0

Se la VM è in esecuzione e lo schermo è visualizzato, è possibile nasconderlo procedendo come segue.

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.