我想解决以下用例:我的妻子和我(=两个不同的 Linux 用户)想使用相同的 VirtualBox Windows10 虚拟机。因此我的想法是将所有 VirtualBox 设置置于用户“vmuser”下,并始终在 vmuser 环境中启动 VirtualBox。
然后在文件夹 /home/vmuser 中设置所有 VirtualBox 设置。
在每个用户桌面上,我添加了一个桌面文件“VirtualBox.desktop”,其内容如下:
[Desktop Entry]
Comment=
Exec=mate-terminal -- /bin/su vmuser -w QT_QPA_PLATFORM_THEME,DISPLAY,XDG_RUNTIME_DIR -c /usr/local/bin/startVirtualBox.sh
GenericName=Go virtual
Icon=virtualbox
MimeType=
Name=VirtualBox
Path=
StartupNotify=true
Terminal=true
TerminalOptions=
Type=Application
X-DBUS-ServiceName=
X-DBUS-StartupType=
X-KDE-SubstituteUID=false
X-KDE-Username=`
单击此图标即可启动文件/usr/local/bin/startVirtualBox.sh
。“-w”表示不替换现有环境变量。我使用“mate-terminal”,因为在我的计算机上,它比“gome-terminal”启动速度更快,但您的情况可能会有所不同。
由于一些我尚不清楚的原因(我认为问题出在开头的 /bin/sh,但没有它就无法工作)我需要以这种方式定义环境变量:
#!/bin/sh
QT_X11_NO_MITSHM=1
DISPLAY=$DISPLAY
XAUTHORITY=$XAUTHORITY
XDG_RUNTIME_DIR=$XDG_RUNTIME_DIR
export QT_X11_NO_MITSHM
export DISPLAY
export XAUTHORITY
export XDG_RUNTIME_DIR
/usr/bin/VirtualBox
尽管在启动 VirtualBox 时在额外的控制台窗口中出现了一些错误消息,但此解决方案仍按预期工作:
Qt WARNING: QStandardPaths: wrong ownership on runtime directory /run/user/1000, 1000 instead of 1002
Qt WARNING: Qt: Session management error: None of the authentication protocols specified are supported
用户运行时目录由点击桌面图标 (id=1000) 的用户控制,VirtualBox 进程在 vmuser (用户 id = 1002) 下启动。好的。
但有人知道如何摆脱这个问题吗?
答案1
有趣的问题——我刚刚有了一个想法。
- 用户 A 创建一台虚拟机,其虚拟硬盘位于两个用户都具有完全访问权限的目录中
- 关掉机器
- 用户 B 创建具有相同属性的 VM,但不会创建新的虚拟 HDD。而是使用用户 A 创建的虚拟 HDD。
- 关掉机器
警告:你总是需要关闭虚拟机,不要让 VirtualBox“保存状态”