Я создал 2 VMs использование VirtualBox, и я могу запустить их прекрасный как мой собственный пользователь, использующий следующую команду:
vboxmanage startvm myVM -type headless
но когда я пробую ту же команду sudo, или в systemd сервисе, это возвращает это, это не может найти VM.
Я узнал это
Это перестало работать, потому что Вы используете sudo. VirtualBox разработан, чтобы быть выполненным любым пользователем (в vboxusers группе), и sudo выполняет команду как пользователя root, конфигурация VirtualBox которого пуста.
Но я просто не знаю, как сделать его поэтому, когда выполнено как корень (с sudo), чтобы иметь virtualbox существующие настройки.
Какая-либо идея?
Чтобы запустить виртуальную машину при входе в систему и сделать так, чтобы она остановилась при выходе из системы, вы можете использовать системные юзеры systemd.
Создайте файл `~ / .config / systemd / user / myvm.service со следующим содержимым:
[Unit]
Description=My VM
[Service]
ExecStart=vboxmanage startvm myVM -type headless
ExecStop=vboxmanage controlvm myVM acpipowerbutton
# Actually, I'm not sure about the stop command, but I'm confident you will figure that one out
RemainAfterExit=true
[Install]
WantedBy=default.target
Затем запустите systemctl --user enable myvm.service
. Теперь вы можете запустить виртуальную машину с помощью systemctl --user start myvm.service
и остановить ее с помощью systemctl --user stop myvm.service
. Вход и выход из системы должны запускать и останавливать вашу виртуальную машину.
Если вам нужно это при загрузке вместо входа в систему, вы можете попытаться сделать это системным системным модулем и указать исполняющего пользователя в разделе [Service]
с помощью User=
и Group=
.