glmos-code-explain
使用V25后,因磐石系统的存在,使用deb包安装Oracle VirtualBox可行,但在安装Oracle_VirtualBox_Extension_Pack扩展时,总是会报错。
The installer failed with exit code 1: VBoxExtPackHelperApp: error: Failed to set directory permissions on '/usr/lib/virtualbox/ExtensionPacks': VERR_FILE_NOT_FOUND
看到其他大佬说,可以临时关闭磐石系统[https://bbs.deepin.org/post/286633],再进行安装。
在经过实测后,发现该方法虽然在安装的时候确实没问题,但考虑安全性,在安装完成且重新将磐石系统开启后,启动虚拟机就会发现虚拟机经常性的启动失败。
返回 代码: NS_ERROR_FAILURE (0x80004005)
查看日志文件,得到报错日志:
ERROR [COM]: aRC=VBOX_E_IPRT_ERROR (0x80bb0005) aIID={6ac83d89-6ee7-4e33-8ae6-b257b2e81be8} aComponent={ConsoleWrap} aText={The VBoxGuestPropSvc service call failed with the error VERR_HGCM_SERVICE_NOT_FOUND}, preserve=false aResultDetail=-2900
经过分析,可能是因为扩展包目录下的一些文件,在启动虚拟机时,需要读写,而默认情况下,开启磐石系统后,/usr 目录下的所有目录都是不能读写的。
/usr
最后经过研究,发现可以既不影响磐石系统的启用,也不影响VirtualBox安装及运行扩展的方法。
即,将VirtualBox的 ExtensionPacks 目录放到别的地方,绕过读写限制,然后使用bind挂载,将该目录以硬连接的方式挂载到 /opt/usr/lib/virtualbox/ExtensionPacks/ 目录,这样也不影响程序的路径识别。
ExtensionPacks
/opt/usr/lib/virtualbox/ExtensionPacks/
操作步骤如下:
virtualbox-7.1_7.1.12-169651~Ubuntu~jammy_amd64.deb
/opt/usr/lib/virtualbox/ExtensionPacks
/etc/systemd/system/bind-mounts.service
[Unit] Description=Bind Mount Services After=local-fs.target [Service] Type=oneshot ExecStart=/bin/bash -c "mount --bind /opt/usr/lib/virtualbox/ExtensionPacks /usr/lib/virtualbox/ExtensionPacks" [Install] WantedBy=multi-user.target
sudo systemctl daemon-reload sudo systemctl enable bind-mounts.service
Oracle_VirtualBox_Extension_Pack-7.1.12.vbox-extpack
sudo systemctl start bind-mounts.service
大赞
Featured Collection
Popular Events
glmos-code-explain
使用V25后,因磐石系统的存在,使用deb包安装Oracle VirtualBox可行,但在安装Oracle_VirtualBox_Extension_Pack扩展时,总是会报错。
看到其他大佬说,可以临时关闭磐石系统[https://bbs.deepin.org/post/286633],再进行安装。
在经过实测后,发现该方法虽然在安装的时候确实没问题,但考虑安全性,在安装完成且重新将磐石系统开启后,启动虚拟机就会发现虚拟机经常性的启动失败。
查看日志文件,得到报错日志:
经过分析,可能是因为扩展包目录下的一些文件,在启动虚拟机时,需要读写,而默认情况下,开启磐石系统后,
/usr目录下的所有目录都是不能读写的。最后经过研究,发现可以既不影响磐石系统的启用,也不影响VirtualBox安装及运行扩展的方法。
即,将VirtualBox的
ExtensionPacks目录放到别的地方,绕过读写限制,然后使用bind挂载,将该目录以硬连接的方式挂载到/opt/usr/lib/virtualbox/ExtensionPacks/目录,这样也不影响程序的路径识别。操作步骤如下:
/usr的只读状态。virtualbox-7.1_7.1.12-169651~Ubuntu~jammy_amd64.deb包,使用deb的方式,在/usr只读目录中创建默认我们需要的目录/opt/usr/lib/virtualbox/ExtensionPacks//opt/usr/lib/virtualbox/ExtensionPacks(也可以改为其他路径,但需记得将下面代码中的路径也改为自定义的路径)/etc/systemd/system/bind-mounts.service,并写入如下参考代码:/etc/systemd/system/bind-mounts.service的开机自启功能。Oracle_VirtualBox_Extension_Pack-7.1.12.vbox-extpack扩展包了。