在组合双启动/Virtualbox 设置中切换显卡驱动程序

在组合双启动/Virtualbox 设置中切换显卡驱动程序

我已经设置了一个组合双启动/Virtualbox 系统,其中 Windows 8 作为我的主要操作系统,还有一个 Ubuntu 14.04 LTS 硬盘,也可以通过 VirtualBox 作为虚拟机访问本指南

尽管我并不是一个经验丰富的 Linux 用户,更不用说 Ubuntu 用户了,但我还是设法让它启动并运行,除了一个问题:

当我真正启动 Ubuntu 时,我希望为我的 ATI Radeon R9 285x 使用专有的 fglrx 驱动程序,因为我期望获得更好的性能,更重要的是,使用开源驱动程序时,我的 VGA 风扇运转的声音会大得多。但是当我选择它们时,我无法再通过 VirtualBox 访问我的 Ubuntu 桌面,并且会陷入登录循环,很可能是因为它无法加载正确的驱动程序。

另一方面,我还安装了客户机附加组件,它们为我提供了全分辨率无缝虚拟机的所有便利。但是当我激活它们时,它们也会替换图形驱动程序,以用于 Ubuntu 的常规启动。

所以现在我可以选择一台具有完整图形支持的虚拟机,但其正版 Ubuntu 环境带有响亮的图形风扇和不完整的图形支持,或者一台完全不支持图形但功能齐全的 Ubuntu 系统的虚拟机。每次切换都需要重新安装或卸载 fglrx。

我的问题是:

是否可以让系统在 fglrx 驱动程序和 Virtualbox-guest-addition-driver 之间切换,具体取决于它是定期启动还是在虚拟机中启动?

答案1

我已成功努力让这个无疑奇特的设置按照我的要求运行。

重新安装 Ubuntu 之后,本机启动系统安装的客户机添加程序的问题就消失了。

剩下的唯一问题是无法登录安装了 fglrx 驱动程序的虚拟机桌面。尽管内核模块始终正确地适应相应的环境(vbox 模块仅在虚拟机内运行,fglrx 模块仅在本机启动时运行),但似乎仍有一些东西阻止虚拟机内桌面环境的启动。

原来这是 AMD libglx 库,虚拟机仍在使用该库。

幸运的是,fglrx 驱动软件提供了一个简单的从 amd 到 intel 的切换命令,因此只需执行

sudo /usr/lib/fglrx/switchlibglx intel

并重新启动 lig​​htdm。

为了在启动期间自动执行此操作,我在 /etc/init/ 中创建了一个名为“checkvga.conf”的文件,其中读取

# Checks if VGA belongs to virtual machine

description      "Checks if VGA belongs to virtual machine"


start on starting lightdm


script
    if test -f /proc/modules &&  grep -q vboxguest /proc/modules 2>/dev/null; then
    /usr/lib/fglrx/switchlibglx intel
    restart lightdm
    fi
end script

我必须输入“restart lightdm”命令才能使其可靠地工作,尽管我最初假设“start on startup lightdm”足以在 lightdm 首次启动之前执行此命令。原因可能是实际上需要重新启动 X,因为可能已经有一个实例在启动期间显示启动画面。如果有人知道,请告诉我。

相关内容