我使用 VirtualBox 创建了 2 个虚拟机,并且可以使用以下命令以我自己的用户身份启动它们:
vboxmanage startvm myVM -type headless
但是当我尝试使用 sudo 或在 systemd 服务中执行相同的命令时,它返回找不到 VM。
我发现了这个
失败是因为您使用了 sudo。VirtualBox 设计为由任何用户(在 vboxusers 组中)运行,而 sudo 以 VirtualBox 配置为空的 root 用户身份运行该命令。
但是我只是不知道如何使它以 root 身份运行(使用 sudo)时显示 virtualbox 设置。
任何想法?
答案1
要在登录时启动虚拟机并在注销时停止它,您可以使用 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
。登录和退出应该可以启动和停止虚拟机。
如果您在启动而不是登录时需要此功能,您可以尝试将其设为系统 systemd 单元,并在和[Service]
部分中指定执行用户。User=
Group=