升级后,nVidia 卡默认开启

升级后,nVidia 卡默认开启

在最近更新 16.04.1 后,其中涉及 nvidia 驱动程序,nvidia 卡(optimus)在每次启动时默认打开,导致过热。

我可以判断卡已开通,因为cat /proc/acpi/bbswitch会返回0000:01:00.0 ON。要关闭它,我使用sudo tee /proc/acpi/bbswitch <<<OFF

过去,当我尝试使用 nvidia 驱动程序和 Xorg edgers PPA repo 时,我遇到了类似的问题,我通过清除 repo 并重新安装 Ubuntu repo 中的驱动程序解决了这个问题。由于后者是我目前使用的驱动程序,我想知道我现在可以做些什么来解决这个问题。

答案1

将溶液混合后Bumblebee 不会禁用 NVIDIAhttp://www.webupd8.org/2016/08/how-to-install-and-configure-bumblebee.html现在我似乎已经恢复了一切。

以下是我已执行的步骤(模数坏内存!)

  1. 清除大黄蜂* 和 primus*

  2. 安装nvidia-prime

  3. 确保已从“系统设置”->“软件和更新”->“附加驱动程序”安装 nvidia 驱动程序。我尝试过 nvidia-370,但第一次没有成功。你可以试试,但最终我使用专有驱动程序 nvidia-367 成功了。

  4. sudo prime-select intel(如果第一次失败,重新启动可能会有帮助)。

  5. 安装 Bumblebee 测试 PPA ppa:bumblebee/testing,然后安装bumblebee

  6. 将您选择的驱动程序列入黑名单/etc/modprobe.d/bumblebee.conf。就我而言,我必须添加

    # 367
    黑名单 nvidia-367
    黑名单 nvidia-367-更新
    黑名单 nvidia-experimental-367
    删除 nvidia rmmod nvidia-drm nvidia-modeset nvidia-uvm nvidia

    显然,最后一行至关重要,也是让这个解决方案真正对我起作用的唯一原因(没有这一行,我仍然可以让 nvidia 卡工作,但它在启动时自动打开,并且不会关闭bbswitch)。

  7. bumblebee通过编辑进行配置/etc/bumblebee/bumblebee.conf。仔细查看部分Driver=中的[bumblebeed]。可能没有必要,但如果 后面是空白的=,只需输入nvidia。然后确保您具有这些设置

    [驱动程序-nvidia]
    内核驱动程序=nvidia-367
    PMMethod=自动
    LibraryPath=/usr/lib/nvidia-367:/usr/lib32/nvidia-367
    XorgModulePath=/usr/lib/nvidia-367/xorg,/usr/lib/xorg/modules
    XorgConfFile=/etc/bumblebee/xorg.conf.nvidia

    将 367 替换为您选择的版本。

  8. sudo update-initramfs -u

  9. 重启。

要测试一切是否正常,请运行以下命令:

`read a b <<< `cat /proc/acpi/bbswitch`; echo "nVidia card at $a is $b"`

你应该得到

nVidia card at 0000:01:00.0 is OFF

例如,通过运行glxinfo,你应该得到类似这样的结果optirunoptirun glxinfo | grep OpenGL

OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GT 540M/PCIe/SSE2
OpenGL core profile version string: 4.5.0 NVIDIA 367.57
OpenGL core profile shading language version string: 4.50 NVIDIA
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.5.0 NVIDIA 367.57
OpenGL shading language version string: 4.50 NVIDIA
OpenGL context flags: (none)
OpenGL profile mask: (none)
OpenGL extensions:

这表明 nvidia 驱动程序被使用optirun

可以使用以下 bash 脚本自动执行步骤 6-8。

if [ "$EUID" -ne 0 ]
  then echo "This script requires superuser privileges to run"
fi

sudo apt update

echo "Here is a list of (possibly) all the NVIDIA drivers available from your current software repositories"

apt-cache search nvidia- | grep "nvidia-[0-9]\+ - N"

echo -n "Enter the version that you wish to install and hit [ENTER]: "
read ver
echo $ver

echo "Installing the specified driver..."
sudo apt install -y nvidia-${ver}

echo -n "Removing duplicate entries in /etc/modprobe.d/bumblebee.conf... "
sed "/blacklist nvidia.\+$ver/d" /etc/modprobe.d/bumblebee.conf > bumblebee.conf
sed -i "/\#.\+$ver/d" bumblebee.conf
sed -i "/remove nvidia rmmod nvidia-drm nvidia-modeset nvidia-uvm nvidia/d" bumblebee.conf
echo "Done."

echo -n "Blacklisting the drivers... "
echo "# ${ver}" >> bumblebee.conf
echo "blacklist nvidia-${ver}" >> bumblebee.conf
echo "blacklist nvidia-${ver}-updates" >> bumblebee.conf
echo "blacklist nvidia-experimental-${ver}" >> bumblebee.conf
echo "remove nvidia rmmod nvidia-drm nvidia-modeset nvidia-uvm nvidia" >> bumblebee.conf
sudo cp /etc/modprobe.d/bumblebee.conf /etc/modprobe.d/bumblebee.conf.bak
sudo mv bumblebee.conf /etc/modprobe.d/bumblebee.conf
echo "Done."

echo -n "Configuring Bumblebee... "
sed "s/^Driver=$/Driver=nvidia/g" /etc/bumblebee/bumblebee.conf > bumblebee.conf
sed -i "s/^KernelDriver=nvidia-.*/KernelDriver=nvidia-${ver}/g" bumblebee.conf
sed -i "s|\(/usr/lib[32]*/nvidia-\)[^,:/\n]\+|\1${ver}|g" bumblebee.conf
sudo cp /etc/bumblebee/bumblebee.conf /etc/bumblebee/bumblebee.conf.bak
sudo mv bumblebee.conf /etc/bumblebee/bumblebee.conf
echo "Done."

sudo update-initramfs -u

echo ""
echo "Please restart your system for the changes to take effect."

相关内容