
Я хочу настроить интерфейс для виртуального ящика, который установлен на моей машине Ubuntu. Когда я создаю его вручную, это работает:
vboxmanage hostonlyif create
vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1
проверив ifconfig, он там есть:
Я хочу, чтобы эти изменения сохранились после перезагрузки и применялись автоматически при запуске системы. Для этого я сделал следующее:
sudo mkdir /opt/systemd/
затем
sudo mkdir /opt/systemd/
и
sudo nano /opt/systemd/vboxhostonly
скопируйте следующий код в файл:
#!/bin/bash
vboxmanage hostonlyif create
vboxmanage hostonlyif ipconfig vboxnet0 --ip 192.168.56.1
затем Ctrl + X для выхода, Y для сохранения и Enter для записи файла.
Затем я делаю файл исполняемым.
cd /opt/systemd/ then sudo chmod a+x vboxhostonly
Я создаю услугу, поэтому
sudo touch /etc/systemd/system/vboxhostonlynic.service
Затем я редактирую файл, набрав sudo nano /etc/systemd/system/vboxhostonlynic.service
и введя:
Description=Setup VirtualBox Hostonly Adapter
After=vboxdrv.service
[Service]
Type=oneshot
ExecStart=/opt/systemd/vboxhostonly
[Install]
WantedBy=multi-user.target
затем Ctrl + X для выхода, Y для сохранения и Enter для записи файла.
Теперь, чтобы установить службу и убедиться, что она загружается при загрузке системы, я ввожу:
systemctl daemon-reload
systemctl enable vboxhostonlynic.service
Но когда я перезагружаю машину, интерфейса нет, любая помощь будет оценена?
решение1
Ваш bash
скрипт не может найти vboxmanage
, поскольку vboxmanage
не находится ни в одном каталоге в скрипте $PATH
. Попробуйте использовать полный путь к vboxmanage
( type -p vboxmanage
), но вам, возможно, придется переместить больше вашей среды в скрипт.
Задания, запускаемые через systemd
сценарии запуска, не запускаются в той же среде выполнения, что и на вашем рабочем столе. systemd
сценарии запуска запускаются как root
. Ни одно из ваших PATH
изменений или других настроек переменных среды из ~/.bashrc
не распространяется автоматически на ваше systemd
задание. Например, нет $DISPLAY
, поэтому программы с графическим интерфейсом пользователя требуют особого обращения (читайте man xhost
). Другие необходимые переменные среды также могут нуждаться в помощи.
Посмотрите на результаты echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias
в каждой из ваших сред.