Я создал 2 виртуальных машины с помощью VirtualBox, и я могу начать их отлично, как мой собственный пользователь, используя следующую команду:
vboxmanage startvm myVM -type headless
, но когда я пытаюсь выполнить ту же команду с sudo или в службе systemd, он возвращает, что он не может найти виртуальную машину.
Я узнал об этом
. Это терпит неудачу, потому что вы используете sudo. VirtualBox предназначен для запуска любым пользователем (в группе vboxusers), и sudo запускает команду в качестве пользователя root, чья конфигурация VirtualBox пуста.Но я просто не знаю, как это сделать, когда вы запускаете как root (с sudo), чтобы иметь настройки виртуального бокса.
Любая идея?
Чтобы запустить виртуальную машину при входе в систему и остановить ее при выходе из системы, вы можете использовать системные юниты 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=.
Чтобы запустить виртуальную машину при входе в систему и остановить ее при выходе из системы, вы можете использовать системные юниты 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=.
Чтобы запустить виртуальную машину при входе в систему и остановить ее при выходе из системы, вы можете использовать системные юниты 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=.