我从 Ubuntu Server 上的标准存储库安装了 Virtualbox。Virtualbox 版本为 6.1.32,支持内核版本 5.16+(我的版本是 5.15.0-27-generic)。然后我从他们的 github、apache 等安装了 phpvirtualbox。因此,安装后,我没有 vboxwebsrv 服务,很可能是因为这个原因,phpvirtualbox 无法开始。
一些输出:
~$ sudo service vboxwebsrv restart
Failed to restart vboxwebsrv.service: Unit vboxwebsrv.service not found.
~$ sudo service vboxdrv start
Failed to start vboxdrv.service: Unit vboxdrv.service not found.
如何修复?
答案1
TLDR(以 root 身份):
# 1. enable virtualbox
echo "LOAD_VBOXDRV_MODULE=1" >> /etc/default/virtualbox
service virtualbox restart
# 2. enable vboxweb-service
echo "VBOXWEB_USER=vbox" >> /etc/default/virtualbox
cp /usr/lib/virtualbox/vboxweb-service.sh /etc/init.d/vboxweb-service
sudo systemctl daemon-reload
sudo service vboxweb-service restart
解释:
- 在 Ubuntu 提供的软件包中,启动脚本是
/etc/init.d/virtualbox
,其中写道(大约在第 44 行):
if [ "$LOAD_VBOXDRV_MODULE" != 1 ]; then
log_success_msg "virtualbox disabled; edit /etc/default/virtualbox"
exit 0
fi
因此必须在 /etc/default/virtualbox 中LOAD_VBOXDRV_MODULE
设置为。1
但是,这将加载 virtualbox 内核模块,但它不会启动 Web 服务(这是 phpvirtualbox 工作所必需的...)
- 包中存在 vboxweb-service 的启动脚本,但未安装,因此您必须手动将脚本复制到
/etc/init.d
,然后重新加载 systemd(否则您将收到类似这样的错误Failed to start virtualbox-websrv.service: Unit virtualbox-websrv.service not found.
),最后您可以启动 vboxweb-service
此外,您必须指出哪个用户将运行虚拟机(该VBOXWEB_USER
指令,但这已在 phpvirtualbox 的文档中解释过)