
Quero configurar uma interface para a caixa virtual, que está instalada na minha máquina Ubuntu. Quando eu crio manualmente, funciona:
vboxmanage hostonlyif create
vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1
verificando ifconfig, está lá:
Quero fazer com que essas alterações sobrevivam a uma reinicialização e sejam definidas automaticamente durante a inicialização do sistema. Para isso, o que fiz foi:
sudo mkdir /opt/systemd/
então
sudo mkdir /opt/systemd/
e
sudo nano /opt/systemd/vboxhostonly
copie o seguinte código no arquivo:
#!/bin/bash
vboxmanage hostonlyif create
vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1
então Ctrl + X para sair, Y para salvar e entrar para gravar o arquivo.
Então eu torno o arquivo executável
cd /opt/systemd/ then sudo chmod a+x vboxhostonly
eu crio um serviço então
sudo touch /etc/systemd/system/vboxhostonlynic.service
Então eu edito o arquivo digitando sudo nano /etc/systemd/system/vboxhostonlynic.service
e digitando:
Description=Setup VirtualBox Hostonly Adapter
After=vboxdrv.service
[Service]
Type=oneshot
ExecStart=/opt/systemd/vboxhostonly
[Install]
WantedBy=multi-user.target
então Ctrl + X para sair, Y para salvar e entrar para gravar o arquivo.
Agora, para instalar o serviço e garantir que ele carregue no momento da inicialização, digito:
systemctl daemon-reload
systemctl enable vboxhostonlynic.service
Mas quando eu reinicio a máquina a interface não está lá, qualquer ajuda seria apreciada?
Responder1
Seu bash
script não pode ser encontrado vboxmanage
porque vboxmanage
não está em nenhum diretório do script $PATH
. Tente usar o caminho completo para vboxmanage
( type -p vboxmanage
), mas talvez seja necessário mover mais partes do seu ambiente para o script.
Os trabalhos executados por meio de systemd
scripts de inicialização não são executados no mesmo ambiente de execução que você tem na área de trabalho. systemd
scripts de inicialização são executados como arquivos root
. Nenhuma das suas PATH
alterações ou outras configurações de variáveis de ambiente ~/.bashrc
são propagadas automaticamente para o seu systemd
trabalho. Por exemplo, não existe $DISPLAY
, então os programas GUI precisam de tratamento especial (leia man xhost
). Outras variáveis de ambiente necessárias também podem precisar de ajuda.
Veja os resultados echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias
em cada um dos seus ambientes.