一块 SSD,两台计算机(带有不同的视频卡)。视频驱动程序的最佳方法是什么?

一块 SSD,两台计算机(带有不同的视频卡)。视频驱动程序的最佳方法是什么?

我有一个 SSD,可以双启动 Windows 7 / Ubuntu 11.10。我每天都会在两台电脑之间切换这个驱动器。一台是笔记本电脑,集成英特尔显卡另一台是台式机,NVIDIA 显卡

我希望在任意一台计算机上启动 Ubuntu 时使用正确的驱动程序并自动启用 3D 加速。我该如何实现?

当我用笔记本电脑启动 Ubuntu 时,大多数驱动程序都能正常启动,但 GM965 视频驱动程序无法加载,因此 3D 加速仍处于关闭状态。日志显示 NVIDIA 驱动程序发出不可用错误(看起来它正在强制使用 NVIDIA 驱动程序)。

如今,Ubuntu 11.10 和 Xorg 的行为与 Windows 7 不同,这正常吗?当我启动 Windows 7 时,PCI 识别会加载正确的驱动程序,并通过显示器的 DDC 加载分辨率设置。我认为 Xorg 可以做与启动 Live CD 时相同的事情。

为了进行诊断,我需要知道如何在弃用 /etc/X11/xorg.conf 的现代 Xorg 部署上配置视频驱动程序

有人有什么想法可以帮助我吗?

提前致谢

答案1

Bodhi.zazens 的回答是朝着正确方向迈出的一步,但您可能无法使用英特尔卡的 GL 功能(例如桌面效果)。

下面是一个更完善的脚本,它使用 nVidia 的供应商 ID 并更正 GL 库路径。在安装此脚本之前,您需要将 nvidia xorg 配置保存到/etc/X11/xorg.conf.nvidia。在 nvidia 机器上,运行以下命令:

sudo nvidia-xconfig
sudo mv /etc/X11/xorg.conf{,.nvidia}

以下脚本应保存为/etc/init/auto-gfx-card.conf。复制时,请注意不要在尾部反斜杠后添加空格。

description "autoconfigure graphics card settings"
start on (filesystem and (starting lightdm or starting kdm or starting gdm))
script
    # If any nVidia device is found, assume it to be a graphics card
    if [ -n "$(lspci -d10de:)" ]; then
        for arch in x86_64-linux-gnu i386-linux-gnu; do
            # since nvidia drivers have a higher priority, it'll
            # automatically selected as the best available version
            update-alternatives --quiet --force --auto ${arch}_gl_conf || true
        done
        # create the symlink, overwriting existing links if necessary
        ln -sf /etc/X11/xorg.conf.nvidia /etc/X11/xorg.conf
    else
        # restore Intel GL capabilities
        for arch in x86_64-linux-gnu i386-linux-gnu; do
            update-alternatives --quiet --force --set \
                ${arch}_gl_conf /usr/lib/$arch/mesa/ld.so.conf 2>/dev/null || true
        done
        # remove the symlink if any
        rm -f /etc/X11/xorg.conf
    fi
end script

不需要其他命令来激活此 Upstart 作业。

答案2

这是一个混乱的黑客攻击,并且可能有一个更干净的方法(即编写一个好的 upstart init 脚本),但是......

假设 nvidia 驱动程序和英特尔卡都在工作;)

使用脚本来/etc/rc.local使用正确的 xorg.conf。英特尔卡不需要 xorg.conf,因此将工作的 nvidia xorg.conf 保存在 /etc/X11/xorg.conf.nvida

运行 nvidia 机器时

sudo cp /etc/X11/xorg.conf /etc/X11/xorg.conf.nvidia

然后将其添加到 /etc/rc.local

# determine if we have a nvidia card, $VIDEO will be an empty sting with the intel card
VIDEO=$(lspci | grep nVidia)

# test if $VIDEO is empty, and move xorg.conf if needed
if [ -n "$VIDEO" ]
    then
        # if xorg.conf exists, remove it.
        [[ -e /etc/X11/xorg.conf ]] && rm -f /etc/X11.xorg.conf
    else
        # if xorg.conf does not exist copy it
        [[ -e /etc/X11/xorg.conf ]] || cp /etc/X11/xorg.conf.nvidia /etc/X11/xorg.conf
 fi

 # restart lightdm, need to modify for kdm or gdm
 /etc/init.d/lightdm restart

根据 rc.local 的运行速度,您可能能够完全跳过 lightdm 重启,或者如果它运行得太早,您可能需要添加睡眠。

如果您需要用于英特尔卡的 xorg.conf,则只需修改脚本以将正确的 xorg.conf 放到位。

唯一的其他潜在问题是如果 nvidia 内核模块与英特尔驱动程序冲突(不太可能),在这种情况下我们需要将驱动程序列入黑名单,这可以通过 grub 中的自定义节来完成。

答案3

这可能是一个坏主意。您无法将 NVIDIA 驱动程序与笔记本电脑的集成 Intel 显卡一起使用。由于您有在两台不同的计算机之间共享单个 SSD 的不寻常做法,因此您可能应该坚持使用此处的“最低公分母”,即默认视频驱动程序。

如果您仍想安装和配置受限的 NVIDIA 驱动程序,请在具有兼容视频卡的桌面上进行操作。

点击屏幕右上角的齿轮图标,选择“系统设置...”,然后点击“其他驱动程序”。这将显示 NVIDIA 提供的任何可用或已启用的专有驱动程序,如下所示:

已启用 NVIDIA 驱动程序

要在安装驱动程序后访问卡的设置,请在仪表板中输入“NVIDIA”,如下所示:

NVIDIA 设置仪表板

这将打开驱动程序的设置屏幕。在此处进行所需的任何更改,然后单击“保存到 X 配置文件”,如下所示:

NVIDIA X 配置

有关配置 X 的更多信息,请参阅 Ubuntu X/Config维基页面

请注意,如果您这样做,您可能会在没有 NVIDIA 卡的笔记本电脑上遇到问题。

相关内容