Eu tenho uma máquina VirtualBox com Windows XP em um host Windows XP.
Como posso iniciar o VirtualBox como um serviço, para que eu possa ter uma máquina virtual oculta e não precisar iniciar o VirtualBox para acessar minha máquina virtual (via VNC da rede)?
Descobri que o VirtualBox Manage pode ser o caminho a seguir, mas como sou iniciante nisso, não sei por onde começar.
Alguma ideia?
windows-xp
virtualbox
Jhonny D. Cano - Talheres-
fonte
fonte
Observe que a resposta atualmente aceita (Molly7244) realmente inicia a VM quando você faz login - não quando você inicializa a máquina. Em outras palavras, não é um serviço.
Para um serviço real que é executado quando a máquina é inicializada, eu uso dois scripts (originalmente daqui ) em conjunto com o cygwin (cygrunsrv). Utiliza o modo VBoxHeadless, conforme mencionado em outras partes desta página.
O primeiro script executa sua VM via VBoxHeadless; obtém o nome da VM correta para executar (e outras informações, como o diretório inicial do VBOX) a partir de variáveis de ambiente. O segundo script instala um serviço para uma VM específica (usando cygrunsrv para chamar o primeiro script com o ambiente correto definido). Finalmente, há um terceiro arquivo que contém funções comuns. Se você juntar tudo isso em um diretório, poderá instalar uma nova vm assim:
E, em seguida, inicie o serviço com "net start vboxd-MyVMName" ou "cygrunsrv -S vboxd-MyVMName".
Aqui está o script de execução da VM, "vboxd":
E aqui está o script do instalador, "vboxd-install":
E, finalmente, aqui está o script ".libcommon" referenciado por ambos:
Esta solução funciona muito bem para mim; espero que você tenha sorte semelhante.
fonte
Parece que a resposta mais simples neste momento é VBoxVMService . Ainda não tentei, tentarei lembrar de vir aqui e atualizar a resposta se / quando o fizer.
fonte
Concordou em VBoxVMService. É realmente fácil de configurar e parece estar funcionando bem. Você pode encontrar um guia sobre como configurá-lo aqui:
http://www.windows-noob.com/forums/index.php?/topic/4931-have-virtualbox-vms-start-as-a-service-on-a-windows-host/
**** EDIT **** Conforme a solicitação abaixo, um resumo do link. Embora a solução tenha funcionado para mim, o crédito é para Peter Upfold - http://peter.upfold.org.uk/
Substitua na VBOX_USER_HOME pela pasta .VirtualBox no diretório inicial do usuário correto, além das diretivas RunAsUser e UserPassword e defina o nome da máquina virtual de destino no aplicativo VirtualBox em VmName. Você também pode adicionar seções [Vmx] adicionais após [Vm0] com outras máquinas virtuais para iniciar quando a máquina inicializar.
Quando estiver satisfeito com sua configuração, em um prompt de comando ativado pelo administrador, execute o seguinte comando para instalar o serviço. Após a instalação do serviço, você pode remover sua senha de usuário do arquivo INI, pois ele é salvo na configuração do Serviço:
Agora, você deve reiniciar o computador antes de tentar iniciar o serviço pela primeira vez, ou ele não poderá localizar as VMs.
Na reinicialização, o serviço deve iniciar (sujeito ao atraso 'Automático (início atrasado)') e suas VMs serão iniciadas na inicialização.
fonte
Apenas oferecendo isso como outra opção:
Use o comando interno do Windows 'sc' para criar um serviço. Combine isso com 'vboxheadless' para chegar onde você quer estar.
Não testado especificamente com vboxheadless, mas criei um serviço de teste que executa o calc.exe. Você deveria estar fazendo algo assim:
sc create servicenamehere start= auto binPath= "C:\path\to\vboxheadless.exe --startvm name"
Consulte a documentação para sc para obter mais informações. Nota: Esses espaços após o sinal de igual são intencionais.
fonte
Se os scripts do vboxd estiverem lhe causando tantos problemas quanto eles, talvez você queira tentar isso; é uma solução bastante mais simples, implementada no Perl, que fornece a mesma funcionalidade. Especificamente, a VM inicia com o sistema (supondo que o serviço esteja configurado para iniciar automaticamente, que é o padrão) e fica inoperante quando o serviço é parado.
As principais diferenças em relação à solução vboxd, além de serem consideravelmente mais simples de lidar na minha experiência, são que esse script não passa uma configuração de porta VRDE para o VBoxHeadless e que o desligamento da VM é tratado pelo "botão acpipower" em vez de "savestate" .
Se isso não se adequar aos seus objetivos, é fácil mudar; no primeiro caso, adicione '-e "TCP / Ports = [, port ...]"' à string de linha de comando VBoxHeadless ($ cmd) e, no segundo caso, basta alterar "acpipowerbutton" para "savestate" em o manipulador SIGTERM.
Aqui está o script Perl:
E aqui está a linha de comando cygrunsrv que usei para instalar o serviço Windows:
A partir daí, deve ser apenas uma questão de emitir 'sc start <nome do serviço>' e você deve estar pronto - lembre-se de que, por padrão, os serviços cygrunsrv registram-se em / var / log / <nome do serviço> .log, se algo se comportar mal, esse é o primeiro lugar para procurar um motivo.
Um aspecto a ter em mente é que, quando você executa a VM dessa maneira, ela será executada na conta SYSTEM interna, e não na sua. Sendo esse o caso, você não poderá administrar a VM pelo console do VirtualBox enquanto estiver sendo executado como um serviço; ele parecerá estar no estado "Desligado" e você não poderá acessar as configurações. ( Não é recomendável tentar ligar a VM enquanto ela estiver sendo executada como um serviço - não sei o que acontecerá, mas, na melhor das hipóteses, não será uma operação e, na pior das hipóteses, mangará sua VM.) Se você precisar alterar as configurações da VM ou acessar o console, pare o serviço primeiro (e aguarde a saída do VBoxHeadless.exe) e, em seguida, configure-o / ligue-o no console do VirtualBox como faria normalmente.
Você provavelmente poderia resolver esse problema instalando um segundo serviço interativo para executar o console do VirtualBox; uma vez que iria executar o console sob a conta SYSTEM assim, seria mais provável ser capaz de ver e gerenciar a máquina virtual em execução. Eu não precisei fazer isso sozinho, por isso não tenho certeza de que funcionaria, mas não vejo uma razão para isso não acontecer. (Se você tentar, agradeceria um comentário a esta resposta, informando como funcionou para você. Obrigado!)
Espero que isto ajude!
fonte
vboxd-install
é útil porque oculta convenientemente os detalhes do argumento de cygrunsrv. Concordo, porém, queacpipowerbutton
é uma opção melhor "parar" do quesavestate
.