Boot Automático no Debian com virtualBox

1. Boot Automático no Debian com virtualBox

Marcelo
DinosNao

(usa Debian)

Enviado em 03/12/2012 - 07:28h

Olá, Tenho o seguinte cenário.

* Um Servidor Debian 6 que gerencia as minhas VMs
* Tem se um usuário u1 que criou as VMs
* Quero que determinadas VMs. Quando o sistema hospedeiro iniciar, ele inicie as VMs também.
* Criei o script para iniciar coloquei o init.d testo funciona certinho
* vejam o script

#!/bin/sh
# this script start and stops the virtual machine
# Uma linha para cada maquina
case "$1" in
'start')
echo "Iniciando a VM para o Debian"
VBoxManage startvm Debian
exit 1
;;
'stop')
echo "Parando a VM para Debian"
VBoxManage controlvm Debian acpipowerbutton
exit 1
;;
*)
echo "Usage: $0 { start | stop }"
exit 1
;;
esac

* Quando vou acessar a virtualBox, depois do sistemas iniciar tem esse erro

Runtime error opening '/home/systemweb/VirtualBox VMs/Debian/Debian.vbox' for reading: -38 (Access denied.).
/home/vbox/vbox-4.2.4/src/VBox/Main/src-server/MachineImpl.cpp[724] (nsresult Machine::registeredInit()).
Código de Resultado:
NS_ERROR_FAILURE (0x80004005)
Componente:
Machine
Interface:
IMachine {22781af3-1c96-4126-9edf-67a020e0e858}

* Para resolver isso eu acesso a pasta onde estão as VMs e dou permissão total ai libera novamente para iniciar pela VirtualBox

* O problema eu acho que é o seguinte, estou tentando iniciar uma aplicação gráfica em uma sessão de usuário que nem logou.
* É possível de fazer isso? iniciar um aplicação pra um determinado usuário mesmo antes de ele logar?
* Alguém já faz isso mas de outra forma?

Desculpa o post long mas foi necessário para explicar a situação...!



  


2. Re: Boot Automático no Debian com virtualBox

Reginaldo de Matias
saitam

(usa Slackware)

Enviado em 12/12/2012 - 20:50h

DinosNao escreveu:

Olá, Tenho o seguinte cenário.

* Um Servidor Debian 6 que gerencia as minhas VMs
* Tem se um usuário u1 que criou as VMs
* Quero que determinadas VMs. Quando o sistema hospedeiro iniciar, ele inicie as VMs também.
* Criei o script para iniciar coloquei o init.d testo funciona certinho
* vejam o script

#!/bin/sh
# this script start and stops the virtual machine
# Uma linha para cada maquina
case "$1" in
'start')
echo "Iniciando a VM para o Debian"
VBoxManage startvm Debian
exit 1
;;
'stop')
echo "Parando a VM para Debian"
VBoxManage controlvm Debian acpipowerbutton
exit 1
;;
*)
echo "Usage: $0 { start | stop }"
exit 1
;;
esac

* Quando vou acessar a virtualBox, depois do sistemas iniciar tem esse erro

Runtime error opening '/home/systemweb/VirtualBox VMs/Debian/Debian.vbox' for reading: -38 (Access denied.).
/home/vbox/vbox-4.2.4/src/VBox/Main/src-server/MachineImpl.cpp[724] (nsresult Machine::registeredInit()).
Código de Resultado:
NS_ERROR_FAILURE (0x80004005)
Componente:
Machine
Interface:
IMachine {22781af3-1c96-4126-9edf-67a020e0e858}

* Para resolver isso eu acesso a pasta onde estão as VMs e dou permissão total ai libera novamente para iniciar pela VirtualBox

* O problema eu acho que é o seguinte, estou tentando iniciar uma aplicação gráfica em uma sessão de usuário que nem logou.
* É possível de fazer isso? iniciar um aplicação pra um determinado usuário mesmo antes de ele logar?
* Alguém já faz isso mas de outra forma?

Desculpa o post long mas foi necessário para explicar a situação...!


Marcelo, antes de executar o script no boot execute o comando para registrar a vm.
#VBoxManage registervm /home/seuusuario/VirtualBox\ VMs/NOME-VM/NOME-VM.vbox

depois execute esse script
vboxvm.sh

#!/bin/sh
# this script start and stops the virtual machine
# Uma linha para cada maquina
start()
{
/usr/bin/VBoxHeadless -startvm Debian -vrde on;
sleep 3
/usr/bin/VBoxHeadless -statvm "Windows XP" -vrde on;
}

stop()
{
/usr/bin/VBoxManage controlvm Debian poweroff
sleep 3
/usr/bin/VBoxManage controlvm "Windows XP" poweroff
}
case "$1" in
'start') start;;
'stop') stop;;
*)
echo "Use: /etc/init.d/vboxvm.sh {start|stop}"
exit
esac
exit 0

chmod +x vboxvm.sh e move para o diretório de inicialização do sistema.
Debian: /etc/init.d
e #update-rc.d vboxvm.sh defaults


PS: Atenção ao salvar esse script no notepad++ e ao executar o script acusará erro "/bin/bash^M: bad interpreter: Arquivo ou diretório não encontrado ou token ' não encontrado"
Esse "^M" significa o byte de valor 13, correspondente ao caráter CR (carriage return) do ASCII, obtido no teclado por meio de control-M.
No editor de textos do Windows ou DOS, que utilitam como marcador de final de linha o par de caracteres CR+LF (line feed), ao passo que sistemas UNIX usam apenas LF, e considera CR, em muitos casos, como um caráter comum.
Solução sed -i 's/\r//' vboxvm.sh
Isso apenas se salvar o script no notepad++ em Windows e usar executar no Linux.

Ok, mande o feedback!


3. Re: Boot Automático no Debian com virtualBox

Marcelo
DinosNao

(usa Debian)

Enviado em 13/12/2012 - 08:18h

Opa já tinha feito isso que você falou,

mas o erro continua, acredito que Debian não consegue gerenciar isso, iniciar um VM antes do usuário logar, e depois que ele já tiver logado ele vai lá e ve sua aplicação.

- Outro ponto essas VMs maquinas deveriam ficar disponiveis para todos os usuários, mas não ficam.

Vamos tentando uma hora achamos a resposta que queremos...!


4. Re: Boot Automático no Debian com virtualBox

Reginaldo de Matias
saitam

(usa Slackware)

Enviado em 13/12/2012 - 08:25h

DinosNao escreveu:

Opa já tinha feito isso que você falou,

mas o erro continua, acredito que Debian não consegue gerenciar isso, iniciar um VM antes do usuário logar, e depois que ele já tiver logado ele vai lá e ve sua aplicação.

- Outro ponto essas VMs maquinas deveriam ficar disponiveis para todos os usuários, mas não ficam.

Vamos tentando uma hora achamos a resposta que queremos...!



Faltou adicionar no rc.local
VBoxHeadless -startvm NOME-VM

PS: pode escolher em usar o script vboxvm.sh OU usar o comando acima linha por linha no rc.local.

Se caso for preferir usar o script vboxvm.sh no rc.local, deve indicar o caminho completo onde se escontra.

Sobre as vms ficar disponível para todos usuários, deve add o usuário que executa a VM no grupo vboxusers para isso edita o aquivo /etc/group e add o nome root na frente do grupo vboxusers.
Ou resumindo em um único comando no terminal como root.
#gpasswd -a usuario vboxusers

Por fim, criar um link simbólico apontando para rc.X indicado no sistema, por exemplo se inicia em modo texto, gráfico, pode colocar em ambos.

#ln -s /etc/init.d/vboxvm.sh /etc/rc2.d/S99vmboxvm #full multi-user mode
#ln -s /etc/init.d/vboxvm.sh /etc/rc3.d/S99vmboxvm #console
#ln -s /etc/init.d/vboxvm.sh /etc/rc5.d/S99vmboxvm #gráfico

Agora funciona!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts