让Ubuntu更新内核时自动编译官方版Nvidia驱动模块

目前Ubuntu 8.10中提供的最新Nvidia显卡驱动依然是180.11,除了不支持一些新的显卡,缺乏一些功能,在有些平台上也不稳定,容易Crash。很多人都用上Nvidia官网版的驱程,可是每当系统更新内核的时候,不得不回到console重新安装一次Nvidia,虽然不是很复杂,但长久如此,也挺麻烦的。

UbuntuForums上面一个Howto介绍了解决方法,下面简述之:

  • 本方法不适合使用EnvyNG安装的驱动。
  • 确保你全手动安装过Nvidia驱动并确定你所用的版本正常工作。

  1. 把NV的驱动安装文件复制到/usr/src,同时建立一链接。

    sudo mv NVIDIA-Linux-x86-180.37-pkg1.run /usr/src
    sudo ln -s /usr/src/NVIDIA-Linux-x86-180.37-pkg1.run /usr/src/nvidia-driver

    我安装的是180.37版本,注意不同版本的文件名不同。链接的作用是以后如果换一个新版的驱动进来,修改该链接即可,不用修改下面的脚本。

  2. 保存下面的代码为文件update-nvidia

    #!/bin/bash
    #
    
    # Set this to the exact path of the nvidia driver you plan to use
    # It is recommended to use a symlink here so that this script doesn't
    # have to be modified when you change driver versions.
    DRIVER=/usr/src/nvidia-driver
    
    
    # Build new driver if it doesn't exist
    if [ -e /lib/modules/$1/kernel/drivers/video/nvidia.ko ] ; then
        echo "NVIDIA driver already exists for this kernel." >&2
    else
        echo "Building NVIDIA driver for kernel $1" >&2
        sh $DRIVER -K -k $1 -s -n 2>1 > /dev/null
    
        if [ -e /lib/modules/$1/kernel/drivers/video/nvidia.ko ] ; then
            echo "   SUCCESS: Driver installed for kernel $1" >&2
        else
            echo "   FAILURE: See /var/log/nvidia-installer.log" >&2
        fi
    fi
    
    exit 0

  3. 把该脚本复制到/etc/kernel/postinst.d

    sudo mkdir -p /etc/kernel/postinst.d
    sudo install update-nvidia /etc/kernel/postinst.d

    install命令作用跟cp差不多,只是自动修改文件的权限为rwxr-xr-x

  4. OK,完成了。如果想测试一下是否已经成功,试试装个旧内核

    sudo apt-get install linux-image-2.6.27-10-generic

    稍候应该会看到最后会有一下停顿,然后看到SUCCESS: Driver installed for kernel …
    再把这个包puege掉即可:

    sudo apt-get purge linux-image-2.6.27-10-generic

文章分类 Unix/Linux 标签: , , , ,

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*