Debian - inicializando VMs (VirtualBox) no boot
Publicado por Cláudio Souza Jr. (última atualização em 27/10/2014)
[ Hits: 5.599 ]
Primeiro cumpre esclarecer que o foco está no VirtualBox, instalado em uma distribuição Debian 7.6.0 (32 bits), mas isso deve ser possível com qualquer outro virtualizador e/ou versão Linux, desde que feitas as devidas adaptações.
O procedimento é muito simples. Criamos um script que usa configurações estáticas. Logicamente, este programa requer VirtualBox instalado e funcionando, com o aplicativo vboxmanage devidamente configurado. O apt-get resolve isso na maioria dos casos em distribuições Debian (ou baseadas em Debian). Também requer máquinas virtuais criadas e previamente configuradas. Lembre-se de que o usuário que cria as VMS é o único que poderá controlá-las. Aqui no site tem muita dica boa sobre criação e administração de VMS (inclusive na linha de comando), e na internet tem mais uma pá de coisas muito boas (inclusive em inglês), portanto, não mencionarei esses procedimentos aqui. Pouco provável o contrário, mas os programas "su" e "update-rc.d" também devem estar instalados. O interpretador de comandos que eu usei foi o bash.
Considerações:
1. Como usuário root do sistema, grave o arquivo/script no diretório /usr/local/bin";
2. Com o arquivo/script gravado, dê permissão de execução a ele com o comando:
# chmod +x /usr/local/bin/nome_do_script
3. Crie um link simbólico desse arquivo para o diretório "/etc/init.d":
# ln -s /usr/local/bin/nome_do_script /etc/init.d
4. Atualize a lista de programas iniciados no boot com o comando:
# update-rc.d nome_do_script defaults
Para ser mais prático, e considerando que a intenção é rodar esses comandos no boot/desligamento, você também poderia gravar/criar o arquivo/script em "/etc/init.d". Eu preferi fazer um link simbólico. Usar o usuário root para gravação do arquivo/script é uma atitude não obrigatória, fica a seu critério (logicamente, há implicações decorrentes). Dependendo das configurações das VMS ou/e da capacidade de processamento/carga do seu servidor, isso pode atrasar um pouco a inicialização ou desligamento da máquina. Perceba que todas as VMS têm o mesmo dono.
#!/bin/bash ### BEGIN INIT INFO # Provides: nome_do_script # Required-Start: $local_fs $remote_fs $network $syslog # Required-Stop: $local_fs $remote_fs $network $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Script de ativacao das maquinas virtuais. # Description: Script de ativacao e desativacao das maquinas virtuais no boot e no desligamento do sistema. ### END INIT INFO # # Declare os nomes das VMS a ativar/desativar no boot e no desligamento da maquina array=(nomevm1 nomevm2 nomevm3) # Funcao "iniciar" que vai disparar o metodo "start" iniciar(){ echo "Inicializando as maquinas virtuais..."; for VmList in ${array[@]} do su - usuario_dono_vms -c "vboxmanage controlvm $VmList startvm --type headless >> /dev/null"; echo "Maquina $VmList inicializada..."; echo "----------------------------"; done sleep 1; } # Funcao "parar" que vai disparar o metodo "stop" parar(){ echo "Interrompendo as maquinas virtuais..."; for VmList in cat ${array[@]} do su - usuario_dono_vms -c "vboxmanage controlvm $VmList acpipowerbutton >> /dev/null"; echo "Maquina $VmList desligada..."; echo "----------------------------"; done sleep 1; } # Gatilhos das funcoes case "$1" in "start") iniciar ;; "stop") parar ;; "restart") parar; iniciar ;; *) echo "Use os parametros start, stop ou restart." esac
Backup, restore e leitura de log com Dialog
Script para baixar e-mails de sites automaticamente
Troca periódica de senhas para usuários
Proc_del - Desinstalar programas compilados
Nenhum comentário foi encontrado.
Como aprovar Pull Requests em seu repositório Github via linha de comando
Como gerar um podcast a partir de um livro em PDF
Automatizando digitação de códigos 2FA no browser
Resolver problemas de Internet
Como compartilhar a tela do Ubuntu com uma Smart TV (LG, Samsung, etc.)
Resolvendo o erro "libQt6Widgets.so.6: cannot open shared object file" no Linux
Como instalar protetores de tela (Debian e derivados)
Conheça a 4Devs, caixa de ferramentas online para desenvolvedores
Como converter um vídeo MP4 para um GIF para publicar no README.md do seu repositório Github
Driver de rede realtek 8821ce bugado (1)
Problemas de compartilhame... de impressora no Ubuntu 24.04 (3)