精华内容
下载资源
问答
  • Linux安装NVIDIA显卡驱动的正确姿势

    万次阅读 多人点赞 2018-08-20 21:05:58
    Linux安装NVIDIA显卡驱动的正确姿势 什么是nouveau驱动? 检测NVIDIA驱动是否成功安装 集显与独显的切换 使用标准仓库进行自动化安装 使用PPA仓库进行自动化安装 使用官方的NVIDIA驱动进行手动安装 Linux...

    Linux安装NVIDIA显卡驱动的正确姿势

    可能想玩Linux系统的童鞋,往往死在安装NVIDIA显卡驱动上,所以这篇文章帮助大家以正常的方式安装NVIDIA驱动。

    本文将介绍四种NVIDIA驱动安装方式。具体选择需要根据你的情况而定。

    • 使用标准Ubuntu仓库进行自动化安装
    • 使用PPA仓库进行自动化安装
    • 使用官方的NVIDIA驱动进行手动安装

    什么是nouveau驱动?

    nouveau,是一个自由及开放源代码显卡驱动程序,是为Nvidia的显示卡所编写,也可用于属于系统芯片的NVIDIA Tegra系列,此驱动程序是由一群独立的软件工程师所编写,Nvidia的员工也提供了少许帮助。

    该项目的目标为利用逆向工程Nvidia的专有Linux驱动程序来创造一个开放源代码的驱动程序。

    所以nouveau开源驱动基本上是不能正常使用的,性能极低,所以网上有很多人都在骂:干死黄仁勋!!

    这里写图片描述

    想了解历史的可以去看看这篇知乎,腾讯和AMD是linux的罪人吗?

    好了不扯了,正式开始讲安装把!

    检测NVIDIA驱动是否成功安装

    1. 使用nvidia-settings命令
    nvidia-settings
    

    终端执行这个命令会调出NVIDIA的驱动管理程序,如下:

    这里写图片描述

    如果出现这个界面可以看到 NVIDIA Driver Version:390.48,这就代表nvidia-setting安装正常。

    1. 使用nvidia-smi命令测试

    英伟达系统管理接口(NVIDIA System Management Interface, 简称 nvidia-smi)是基于NVIDIA Management Library (NVML) 的命令行管理组件,旨在(intened to )帮助管理和监控NVIDIA GPU设备。

    nvidia-smi
    

    执行这条命令将会打印出当前系统安装的NVIDIA驱动信息,如下:

    这里写图片描述

    我们可以看到我们显卡的型号,我的是GTX 960M,包括显存大小都可以看见。

    1. 系统信息查看

    这一步不重要,因为有时候系统信息里面显示的可能会有误,只显示集显不显示独显的情况。

    比如我的就没有显示出独显,如下:

    这里写图片描述

    这里面不显示没有关系,可以略过。

    1. 命令行搜索集显和独显

    打开终端执行以下命令:

    lspci | grep VGA     # 查看集成显卡
    lspci | grep NVIDIA  # 查看NVIDIA显卡
    

    这里写图片描述

    如果都能搜索到说明正常。

    查看nouveau是否启动运行可以执行下面命令:

    lsmod | grep nouveau
    

    没有返回代表没有运行。

    集显与独显的切换

    当我们需要切换独显与集显的时候,一般就是外出的时候,想节省电量,增长待机时间。下面讲解两种切换方式。

    1. 使用nvidia-setting切换

    终端执行nvidia-setting,在弹的界面中选择独显与集显:

    这里写图片描述

    1. 命令行切换

    NVIDIA提供了一个切换显卡的命令:

    sudo prime-select nvidia # 切换nvidia显卡
    sudo prime-select intel  # 切换intel显卡
    sudo prime-select query  # 查看当前使用的显卡
    

    这里写图片描述

    注意: 每一次切换显卡都需要重新启动电脑才能生效

    使用标准仓库进行自动化安装

    在安装的发行版中,如 ubuntu, Linux Mint等,找到附加驱动管理软件,下面是Linux Mint界面:

    这里写图片描述

    选择推荐的驱动安装,点击应用更改,等待下载然后重启即可。

    这种安装方式有如下缺点

    1. 如果你的显卡比较新可能会出现安装低版本的NVIDIA驱动而造成即可安装完成,但是并没有真正安装成功,可能会出现循环登录,关机死机等等原因。

    2. 当你更换驱动的时候可能原有的NVIDIA驱动删除不干净。

    当然这种方式也是有优点的:

    1. 不需要手动禁止nouveau
    2. 操作方便

    可能有的童鞋还使用过命令行的方式安装:

    sudo apt-get install nvidia*
    

    如图:

    这里写图片描述

    这种方式安装同样也是使用ubuntu官方源的形式安装的,你可以选择不同的驱动版本来安装,但是本质上和标准仓库进行自动化安装是一样的。

    其实ubuntu自带命令行版本安装工具ubuntu-drivers,终端输入:

    ubuntu-drivers devices   # 查询所有ubuntu推荐的驱动
    

    这里写图片描述

    这路我是有一个推荐安装的驱动,那就是nvidia-driver-390,明显我已经安装完成了。

    然后就可以使用下面一条命令安装所有推荐的驱动程序:

    sudo ubuntu-drivers autoinstall
    

    安装完成后重启就可以了,这里要注意,这种安装方式和驱动管理器软件安装的效果是一样的,就是一个是UI版本,一个是命令行版本。

    使用PPA仓库进行自动化安装

    使用图形驱动程序PPA存储库允许我们安装NVIDIA beta驱动程序,这有可能会出现兼容性的问题,但是有些时候必须使用这种方式,比如显卡比较新,使用上面所讲的方式检测驱动的安装情况,如果不正常那么只能使用这种方式安装最新的NVIDIA驱动。

    1. 添加PPA到我们的系统:
    sudo add-apt-repository ppa:graphics-drivers/ppa
    

    更新系统源:

    sudo apt update
    

    此时我们就可以下载最新的NVIDIA驱动了:

    安装的方式有以下三种,其实前面已经讲过,这里总结一下:

    • 附加驱动管理软件
    • sudo apt-get install nvidia-xxx
    • ubuntu-drivers方式

    这三种都可以,选择一个版本安装,然后重启即可。

    使用官方的NVIDIA驱动进行手动安装

    这种安装方式我认为是比较野蛮的,也是最正规,最原始的的方式,当然难度最高的。你可以来挑战一下!!!!

    1. 查看当前电脑的显卡型号

    lshw -numeric -C display
    

    执行完毕后我的显卡型号为 GTX 960M,如下图:

    这里写图片描述

    2. 下载NVIDIA官方驱动

    到NVIDIA的官方驱动网站下载对应显卡的驱动程序,下载后的文件格式为run

    下载好之后放到用户目录下,等下后面会用到。

    3. 删除原有的NVIDIA驱动程序

    如果你没有安装过,或者已经卸载,可以忽略:

    sudo apt-get remove –purge nvidia*
    

    4. bios禁用禁用secure boot,也就是设置为disable

    如果没有禁用secure boot,会导致NVIDIA驱动安装失败,或者不正常。

    5. 禁用nouveau

    打开编辑配置文件:

    sudo gedit /etc/modprobe.d/blacklist.conf
    

    在最后一行添加:

    blacklist nouveau
    

    这一条的含义是禁用nouveau第三方驱动,之后也不需要改回来。

    由于nouveau是构建在内核中的,所以要执行下面命令生效:

    sudo update-initramfs -u
    

    6. 重启

    reboot
    

    重启之后,可以查看nouveau有没有运行:

    lsmod | grep nouveau  # 没输出代表禁用生效
    

    7. 停止可视化桌面:

    为了安装新的Nvidia驱动程序,我们需要停止当前的显示服务器。最简单的方法是使用telinit命令更改为运行级别3。执行以下linux命令后,显示服务器将停止,因此请确保在继续之前保存所有当前工作(如果有):

    sudo telinit 3
    

    之后会进入一个新的命令行会话,使用当前的用户名密码登录

    8. 安装驱动

    给驱动文件增加可执行权限:

    sudo chmod a+x NVIDIA-Linux-x86_64-390.48.run
    

    然后执行安装:

    sudo sh ./NVIDIA-Linux-x86_64-390.48.run --no-opengl-files
    

    安装完成后重启即可,记得验证是否安装成功,参考前面所讲。

    –no-opengl-files 参数必须加否则会循环登录,也就是loop login

    参数介绍:

    • –no-opengl-files 只安装驱动文件,不安装OpenGL文件。这个参数最重要
    • –no-x-check 安装驱动时不检查X服务
    • –no-nouveau-check 安装驱动时不检查nouveau
      后面两个参数可不加。

    关于使用此方式可以参照Ubuntu 18.04安装NVIDIA(英伟达) RTX2080Ti显卡 这篇文章。

    注意:

    • 安装CUDA时一定使用runfile文件,这样可以进行选择。不再选择安装驱动,以及在弹出xorg.conf时选择NO

    常见问题解决

    1. 安装完驱动后,HDMI扩展屏幕不能使用,现象表现为能识别扩展屏幕但是黑屏。
      这种情况需要确定以下内容是否已经设置:

      • bios内是否已经禁止安全启动、快速启动。
      • linux系统是否设置了禁止nouveau

      如果上面的都已经做了,但还是有问题,可以尝试下面的配置:

      sudo nano /usr/share/X11/xorg.conf.d/10-amdgpu.conf
      

      有可能不是这个文件,但是类似。

      修改为下面这样

      Section "OutputClass"
         Identifier "AMDgpu"
         MatchDriver "amdgpu"
         Driver "amdgpu"
         Option "PrimaryGPU" "no"
      EndSection
      

      下面修改nvidia的配置

      sudo nano /usr/share/X11/xorg.conf.d/10-nvidia.conf
      

      修改为下面这样:

      Section "OutputClass"
         Identifier "nvidia"
         MatchDriver "nvidia-drm"
         Driver "nvidia"
         Option "AllowEmptyInitialConfiguration"
         Option "PrimaryGPU" "yes"
         ModulePath "/usr/lib/x86_64-linux-gnu/nvidia/xorg"
      EndSection
      

      然后重新启动。

    到此NVIDIA的安装方式讲解完了。。。。

    END

    展开全文
  • arch linux安装opengl

    千次阅读 2019-11-02 20:10:38
    测试文件准备: [nash5@nash5 opengl_ins_try]$ tree . . ├── main.cpp └── test test是使用main.cpp编译出来,使用如下命令编译运行: gcc -o test main.cpp -lGL -lGLU -lglut && ./...

    1 安装opengl

    使用命令:

    pacman -S libgl
    

    2测试opengl

    • 测试文件准备:
    [nash5@nash5 opengl_ins_try]$ tree .
    .
    ├── main.cpp
    └── test
    

    test是使用main.cpp编译出来,使用如下命令编译运行:

    gcc -o test main.cpp -lGL -lGLU -lglut && ./test
    

    3 APPENDIX

    • main.cpp
    #include <GL/glut.h>
    void init(void)
    {
        glClearColor(0.0, 0.0, 0.0, 0.0);
        glMatrixMode(GL_PROJECTION);
        glOrtho(-5, 5, -5, 5, 5, 15);
        glMatrixMode(GL_MODELVIEW);
        gluLookAt(0, 0, 10, 0, 0, 0, 0, 1, 0);
        return;
    }
    
    void display(void)
    {
        glClear(GL_COLOR_BUFFER_BIT);
        glColor3f(1.0, 0, 0);
        glutWireTeapot(3);
        glFlush();
    
        return;
    }
    int main(int argc, char *argv[])
    {
        glutInit(&argc, argv);
        glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
        glutInitWindowPosition(0, 0);
        glutInitWindowSize(300, 300);
        glutCreateWindow("OpenGL 3D View");
        init();
        glutDisplayFunc(display);
        glutMainLoop();
        return 0;
    }
    
    
    展开全文
  • linux 开发 OpenGL

    2013-10-24 09:52:20
    最近转Linux了,以前也是想做图形学方面的(个人对美学的追求和造诣吧),然后其实在window平台,opengl的开发很受鄙视,他们总问我,你怎么不直接学directX呢?然后我举出一大堆什么夸平台拉,简单易学了之类的话...

    最近转Linux了,以前也是想做图形学方面的(个人对美学的追求和造诣吧),然后其实在window平台,opengl的开发很受鄙视,他们总问我,你怎么不直接学directX呢?然后我举出一大堆什么夸平台拉,简单易学了之类的话搪塞他们,其实我也不清楚我为什么学opengl,现在看到linux的绚丽的3D桌面特效,不禁一动,这个应该肯定是opengl做的把,于是乎,我想,也许我的opengl应该用在这里。

       呼呼,于是百度:linux下opengl开发,然后看到几篇文章,大都一样,无非是安装opengl库,然后开写代码,然后编译,编译的时候哟用命令行,然后加参数~~

       事实证明,人类就是这么干的,于是按照上面的提示,来了

       环境:ubuntu8.04, 不知为啥,8.10版本安装起来特别慢,我等不跌,还是装8.04版的,而且不敢更新,因为一更新的话,我的显卡驱动这块就挂掉了,分辨率u到800*600,对于我原来1280*800的像素,不如死了算了,虽然以前我很努力的把他该会来了但是特效开不起来了,所以索性重装,装完躲开显卡驱动这块,不去碰他,然后右键,更改桌面背景,然后视觉效果里面把拓展那项选中,于是系统自动给安装驱动,然后装那个3D特效设置的东东,然后跑特效了,吼吼~~

        还是说opengl开发了,这些特效我相信不是偶然,是上天给我的机会(无语......),好了,按照人家的方法来

    1 ---- 装库。(注意,之前我装了必要的编译器,就是sudo apt-get install build essential那句命令,不说了,不是咱的事,我还安了code::blocks,eclipse,这样我就可以彻底抛弃windows了,还装了几款小游戏,大游戏,嘿嘿)

         命令: sudo apt-get install freeglut3-dev

        装完了可能有提示,我选的那个第一项,覆盖的意思吧。

    2 ---- 代码(网上直接借鉴的)

        /* light.c

    此程序利用GLUT绘制一个OpenGL窗口,并显示一个加以光照的球。

    */

    /* 由于头文件glut.h中已经包含了头文件gl.h和glu.h,所以只需要include 此文件*/

    # include <GL/glut.h>

    # include <stdlib.h>

     

    /* 初始化材料属性、光源属性、光照模型,打开深度缓冲区 */

    void init ( void )

    {

         GLfloat mat_specular [ ] = { 1.0, 1.0, 1.0, 1.0 };

         GLfloat mat_shininess [ ] = { 50.0 };

         GLfloat light_position [ ] = { 1.0, 1.0, 1.0, 0.0 };

     

        glClearColor ( 0.0, 0.0, 0.0, 0.0 );

         glShadeModel ( GL_SMOOTH );

     

         glMaterialfv ( GL_FRONT, GL_SPECULAR, mat_specular);

         glMaterialfv ( GL_FRONT, GL_SHININESS, mat_shininess);

         glLightfv ( GL_LIGHT0, GL_POSITION, light_position);

     

         glEnable (GL_LIGHTING);

         glEnable (GL_LIGHT0);

         glEnable (GL_DEPTH_TEST);

    }

     

    /*调用GLUT函数,绘制一个球*/

    void display ( void )

    {

         glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

         glutSolidSphere (1.0, 40, 50);

         glFlush ();

    }

     

     

    /* 定义GLUT的reshape函数,w、h分别是当前窗口的宽和高*/

    void reshape (int w, int h)

    {

         glViewport (0, 0, (GLsizei) w, (GLsizei) h);

         glMatrixMode (GL_PROJECTION);

         glLoadIdentity ( );

         if (w <= h)

             glOrtho (-1.5, 1.5, -1.5 * ( GLfloat ) h / ( GLfloat ) w, 1.5 * ( GLfloat ) h / ( GLfloat ) w, -10.0, 10.0 );

         else

             glOrtho (-1.5 * ( GLfloat ) w / ( GLfloat ) h, 1.5 * ( GLfloat ) w / ( GLfloat ) h, -1.5, 1.5, -10.0, 10.0);

         glMatrixMode ( GL_MODELVIEW );

         glLoadIdentity ( ) ;

    }

     

     

    /* 定义对键盘的响应函数 */

    void keyboard ( unsigned char key, int x, int y)

    {

         /*按Esc键退出*/

         switch (key) 

         {

             case 27:

             exit ( 0 );

             break;

         }

    }

     

     

    int main(int argc, char** argv)

    {

         /* GLUT环境初始化*/

        glutInit (&argc, argv);

         /* 显示模式初始化 */

         glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);

         /* 定义窗口大小 */

         glutInitWindowSize (300, 300);

         /* 定义窗口位置 */

         glutInitWindowPosition (100, 100);

        /* 显示窗口,窗口标题为执行函数名 */

         glutCreateWindow ( argv [ 0 ] );

         /* 调用OpenGL初始化函数 */

         init ( );

         /* 注册OpenGL绘图函数 */

         glutDisplayFunc ( display );

         /* 注册窗口大小改变时的响应函数 */

         glutReshapeFunc ( reshape );

         /* 注册键盘响应函数 */

        glutKeyboardFunc ( keyboard );

         /* 进入GLUT消息循环,开始执行程序 */

         glutMainLoop( );

         return 0;

    }

     

    3---- 编译运行(我的文件名是a.c):

        命令: gcc a.c -o a. -lGL -lglut

        然后ls就可以看到那个编译后的文件了:

    4---运行:

       命令:    ./a 

    展开全文
  • Ubuntu 14.04 16.04 nvidia 驱动安装最简单直观的方式是在如下的...在这个网址下载驱动:http://www.nvidia.cn/Download/index.aspx?lang=cn注意默认是看不到Linux版本驱动,需要额外点击一下显示全部驱动!这时候点

    Ubuntu 14.04 16.04 nvidia 驱动安装

    最简单直观的方式是在如下的对话框中直接选择驱动安装即可


    但是有时候,驱动不够新,比如14.04用的是340.98版本,如果手动安装驱动可以参考官网指南。


    在这个网址下载驱动:http://www.nvidia.cn/Download/index.aspx?lang=cn

    注意默认是看不到Linux版本驱动,需要额外点击一下显示全部驱动!




    这时候点击下载,完成后即可安装。

    在这个网址可以查看详细的安装说明:http://us.download.nvidia.com/XFree86/Linux-x86_64/340.101/README/index.html

    下面是详细安装说明:

    安装NVIDIA驱动程序

    本章提供了安装NVIDIA驱动程序的说明。需要注意的是在安装后,但在此之前使用的驱动程序,您必须完成所描述的步骤第6章,配置X的NVIDIA驱动程序。中提供的可能是新的Linux用户有帮助的其他细节附录I, 新Linux用户提示

    在你开始之前

    在开始安装之前,退出X服务器并终止所有OpenGL应用程序(注意,即使X服务器已停止后,一些OpenGL应用程序也可能会保留)。您还应该设置系统上的默认运行级别,以便它将引导到VGA控制台,而不是直接到X。这样做将使安装过程中出现问题时更容易恢复。见附录I, 新Linux用户提示的详细信息。

    如果要在设置为使用Nouveau驱动程序的系统上安装,则应先禁用它,然后再尝试安装NVIDIA驱动程序。见Q&A 8.1“,与nouveau驱动互动”的详细信息。

    启动安装程序

    你下载的文件后NVIDIA-Linux-x86_64-340.101.run,改为包含下载文件的目录,并作为 root用户运行的可执行文件:

        #CD yourdirectory 
        #SH NVIDIA-Linux-x86_64-340.101.run
    

    .run文件是一个自解压存档。在执行时,它提取的归档文件的内容,并运行所包含的nvidia-installer 工具,它提供了一个人机交互界面,引导您完成安装。

    nvidia-installer也将自身安装到/usr/bin/nvidia-installer,这可能会在一段时间后用于卸载驱动程序,自动下载更新的驱动程序,等使用这种工具是在本章后面详细介绍。

    您也可以提供命令行选项的.run文件。下面列出了一些更常见的选项。

    常用.run 选项

    --info

    打印有关嵌入信息.run 文件并退出。

    --check

    检查归档的完整性并退出。

    --extract-only

    提取的内容./NVIDIA-Linux-x86_64-340.101.run,但不运行nvidia-installer

    --help

    打印常用命令行选项的使用信息并退出。

    --advanced-options

    打印常用命令行选项的使用信息以及高级选项,然后退出。

    安装内核接口

    NVIDIA内核模块有一个内核接口层,必须为每个内核专门编译。NVIDIA将源代码分发到此内核接口层。

    当安装程序运行时,它将检查系统所需的内核源代码并编译内核接口。您必须为您的内核安装的源代码编译工作。在大多数系统上,这意味着您将需要找到并安装正确的kernel-source,kernel-header或kernel-devel包; 在一些发行版上,不需要额外的软件包。

    在编译正确的内核接口之后,内核接口将与NVIDIA内核模块的闭源部分链接。这需要您在系统上安装了链接器。链接器,通常/usr/bin/ld,是binutils的软件包的一部分。您必须在安装NVIDIA驱动程序之前安装链接器。

    使用DKMS注册NVIDIA内核模块

    安装程序将检查系统上是否存在DKMS。如果找到DKMS,您将可以选择使用DKMS注册内核模块,并使用DKMS基础架构构建和安装内核模块。在大多数具有DKMS的系统上,DKMS将在安装不同的Linux内核时自动重建注册的内核模块。

    如果nvidia-installer无法通过DKMS安装内核模块,安装将被中止,没有内核模块将被安装。如果发生这种情况,应该再次尝试安装,而不使用DKMS选项。

    需要注意的是版本nvidia-installer与司机装运前释放304不与DKMS交互。如果您选择注册DKMS了NVIDIA内核模块,请确保模块从DKMS数据库中使用的非DKMS感知版本删除之前nvidia-installer安装的旧驱动程序; 否则,可能会删除模块源文件,而无需先注销模块,从而可能导致DKMS数据库处于不一致状态。运行nvidia-uninstall安装使用旧的安装程序会调用正确的驱动程序之前,dkms remove命令清理安装。

    由于缺乏对于可以通过自动化方法如DKMS利用私钥的安全的存储空间,这是不可能结合使用DKMS与内置于模块签名支持nvidia-installer

    签名NVIDIA内核模块

    一些内核可能需要内核模块被由内核信任的密钥加密签名以便加载。特别地,许多分发要求模块在加载到在启用了安全引导的UEFI系统上运行的内核时被签名。nvidia-installer 包括支持在安装之前签署内核模块,以确保其可以在这样的系统上加载。请注意,并非所有UEFI系统都启用了安全启动,并且并非所有在UEFI安全启动系统上运行的内核都需要签名的内核模块,因此如果您不确定您的系统是否需要签名的内核模块,您可以尝试安装驱动程序,内核模块,看看是否可以加载unsigned内核模块。

    为了签署内核模块,您将需要一个私有签名密钥和对应的公钥的X.509证书。在加载模块之前,内核必须信任X.509证书:我们建议在开始安装驱动程序之前确保签名密钥受信任,以便可以立即使用新签名的模块。如果您没有适合使用模块签名的密钥对,则必须生成一个密钥对。有关适用于模块签名的密钥类型以及如何生成密钥的详细信息,请参阅您的分发文档。nvidia-installer可以在安装时为您生成密钥对,但是最好在安装开始之前有一个内核生成和信任的密钥对。

    一旦你有一个密钥对准备好了,你可以使用该密钥对中 nvidia-installer传递的钥匙,安装与在命令行--module-signing-secret-key--module-signing-public-key选项。作为示例,可以通过运行以静默模式(即,非交互地)来安装带有签名的内核模块的驱动程序:

    #SH ./NVIDIA-Linux-x86_64-340.101.run -s \ 
    --module签名秘密密钥= /路径/要/ signing.key \ 
    --module签名,公钥= /路径/要/ signing.x509
    

    在上面的例子中,signing.key 并且signing.x509是公/私钥对,公钥已经报名参加了内核的可信模块签约主要来源之一。

    在启用安全引导的UEFI系统上,nvidia-installer将显示一系列交互式提示,以指导用户完成模块签名过程。作为在命令行上设置键路径的替代,可以响应于提示交互地提供路径。当针对其配置中启用了CONFIG_MODULE_SIG_FORCE的内核构建NVIDIA内核模块时,或者如果安装程序在专家模式下运行时,也会出现这些提示。

    核心信任的关键源

    为了将内核模块加载到需要模块签名的内核中,必须使用内核信任的密钥对模块进行签名。有几个源,内核可以利用它来构建其信任的密钥池。如果您已生成密钥对,但它尚未被内核信任,则必须先将公钥的证书添加到受信任的密钥源,然后才能用于验证签名的内核模块的签名。这些可信来源包括:

    嵌入内核映像的证书

    与内核CONFIG_MODULE_SIG 集,公钥证书用于签署的树内核模块嵌入,以在生成时提供的任何附加的模块签名证书,到内核图像一起。由对应于嵌入式公钥证书的私钥签名的模块将被内核信任。

    由于密钥是在构建时嵌入的,添加新公用密钥的唯一方法是构建新内核。在启用了安全启动的UEFI系统上,内核映像将需要由引导加载程序信任的密钥签名,因此用户使用自定义嵌入式密钥构建自己的内核应该有一个计划,以确保引导加载程序将加载新的内核。

    存储在UEFI固件数据库中的证书

    上的内核与CONFIG_MODULE_SIG_UEFI,除了嵌入到内核图像的任何证书,内核可以使用存储在证书db, KEKPK计算机的UEFI固件的数据库来验证内核模块的签名,只要它们不是在UEFI dbx黑名单。

    谁拥有的安全引导私钥的任何用户 PK或任何在键的 KEK清单应该能够添加可通过与内核使用新的密钥CONFIG_MODULE_SIG_UEFI,并用该计算机的物理访问的任何用户应能够删除任何现有的安全引导密钥,并安装他或她自己的密钥。有关如何管理UEFI安全启动密钥的详细信息,请参阅基于UEFI的计算机系统的文档。

    存储在辅助密钥数据库中的证书

    一些发行版包括允许在与内核的内置密钥列表以及UEFI固件中的密钥列表分开的数据库中安全存储和管理密钥的实用程序。一个突出的例子是某些版本中使用的莫(机器所有者密钥)数据库shim引导程序,和相关的管理工具,mokutilMokManager

    这样的系统允许用户注册附加密钥,而不需要构建新内核或管理UEFI安全启动密钥。有关此类辅助密钥数据库是否可用的详细信息,以及如何管理其密钥,请参阅分发的文档。

    在nvidia-installer中生成签名密钥

    nvidia-installer可以生成可用于模块签名的密钥,如果现有密钥不容易获得的话。注意,由新生成的密钥签名的模块不能加载到需要签名的模块的内核中,直到其密钥被信任,并且当这样的模块安装在这样的系统上时,安装的驱动器将不会立即可用,即使安装成功。

    nvidia-installer生成一个密钥对,并使用它来签一个内核模块,含公钥的X.509证书将被安装到磁盘上,因此,它可以添加到内核的可信的主要来源之一。nvidia-installer将报告已安装证书的位置:记下此位置以及证书的SHA1指纹,以便在安装完成后,您可以注册证书并验证其是否正确。

    默认情况下,nvidia-installer将尝试与安全删除生成的私钥 shred -u模块签订后。这是为了防止密钥被利用来签署恶意内核模块,但这也意味着相同的密钥不能再次用于安装不同的驱动程序,或者甚至在不同的内核上安装相同的驱动程序。nvidia-installer可以选择将私钥签名密钥安装到磁盘,如同对公共证书一样,以便将来可以重用密钥对。

    如果您选择安装私钥,请确保采取适当的预防措施,以确保其不会被盗。您可能希望采取的预防措施的一些示例:

    防止密钥被没有物理访问计算机的任何人读取

    一般来说,需要物理访问来安装Secure Boot密钥,包括在标准UEFI密钥数据库之外管理的密钥,以防止远程攻击操作系统安全的攻击者安装恶意启动代码。如果远程用户可以使用受信任的密钥,甚至是root用户,那么攻击者可以在不首先进行物理访问的情况下签署任意内核模块,使系统不太安全。

    确保密钥对远程用户不可用的一种方式是将其保持在可移动存储介质上,除了在对模块进行签名时,其与计算机断开连接。

    不要存储未加密的私钥

    加密私钥可以添加额外的安全层:除非可以成功解密密钥,否则密钥将不会用于签名模块。在不使用时(例如,使用或者使用易失性存储器(如RAM磁盘),或安全删除键的任何未加密的副本:确保不存储在持久性存储密钥的加密副本shred代替rm)。注意,使用shred可能不足以完全从一些存储设备清除数据,特别是某些类型的固态存储器。

    安装程序模块签名支持的替代方法

    可以在需要签名模块的系统上加载NVIDIA内核模块,而无需使用安装程序的模块签名支持。根据您的具体使用情况,您可能会发现这些替代品比签约模块更适合之一nvidia-installer

    禁用UEFI安全引导(如果适用)

    在某些内核上,只有在启用了安全启动的UEFI系统上启动时,才需要签名的模块。这种内核的一些用户可能会发现禁用安全启动更加方便; 但是,请注意,这将通过使恶意用户更容易安装潜在有害的启动代码,内核或内核模块,从而降低系统的安全性。

    使用不需要签名模块的内核

    内核可以配置为不检查模块签名,或者检查模块签名,但允许加载没有可信签名的模块。安装以这种方式配置的内核将允许安装未签名的模块。请注意,在安全引导系统上,您仍然需要确保内核使用引导加载程序和/或引导固件信任的密钥进行签名,并且不强制执行模块签名验证的内核可能比一个这是。

    将预编译的内核接口添加到安装程序包

    nvidia-installer运行时,它会搜索目标内核的预编译的内核接口层:如果找到,则完整的内核模块可通过预编译的接口链接生成的nv-kernel.o,而不是需要编译目标系统上的内核接口。nvidia-installer包括允许用户向安装程序包添加预编译接口的功能。这在许多使用情况下是有用的; 例如,大组类似配置的计算机的管理员可以准备具有用于在那些计算机上运行的内核的预编译接口的安装程序包,然后部署定制安装程序,其将能够安装NVIDIA内核模块,而不需要内核开发头或者目标系统上安装的编译器。(仍然需要链接器。)

    要使用此功能,只需调用.run安装程序包的--add-this-kernel选项; 例如

     #sh ./NVIDIA-Linux-x86_64-340.101.run --add-this-kernel
    

    这将解包NVIDIA-Linux-x86_64-340.101.run,编译内核接口层为当前运行的内核(使用 --kernel-source-path--kernel-output-path选项来指定比当前运行的另一个目标内核),并创建一个新的安装程序包与内核接口层增加。

    大集团同样配置的计算机时,结合配置为需要受信任的签名,以加载内核模块可能会发现这个功能特别有用的管理员内置的模块支持签名 nvidia-installer。打包带预编译的内核接口层,加上链接模块分离模块签名.RUN文件,只需使用--module-signing-secret-key--module-signing-public-key选项旁边的 --add-this-kernel选项。除了可以在目标系统上没有内核头或编译器的情况下,所得到的软件包还具有能够生成签名模块而不需要访问安装目标系统上的私钥的附加好处。请注意,分离的签名才有效,如果预编译接口连接的结果nv-kernel.o在目标系统上是完全相同这两个文件链接被用于创建定制安装在系统上的结果。为了确保最佳兼容性,在软件包准备系统和安装目标系统上使用的链接器应该相同。

    安装程序的其他功能

    如果没有选择,.run文件解压后执行安装程序。安装者可以如在过程的单独步骤来运行,或可在稍后的时间运行,以获得更新等一些比较重要的命令行选项 nvidia-installer是:

    nvidia-installer 选项

    --uninstall

    在安装过程中,安装程序将对任何冲突文件进行备份,并记录新文件的安装。卸载选项将撤消安装,将系统恢复到其预安装状态。

    --latest

    连接到NVIDIA的FTP站点,并报告最新的驱动程序版本和url到最新的驱动程序文件。

    --update

    连接到NVIDIA的FTP站点,下载最新的驱动程序文件,并安装它。

    --ui=none

    如果安装程序能够找到正确的ncurses库,则使用基于ncurses的用户界面。否则,它将回退到一个简单的命令行用户界面。此选项禁用ncurses库的使用。



    NVIDIA Accelerated Linux图形驱动程序自述文件和安装指南

    NVIDIA 公司

    所有NVIDIA设计规范,参考板,文件,图表,诊断,列表和其他文档(合并和独立,“材料”)“按原样”提供。NVIDIA不对这些材料做出任何明示,暗示,法定或其他方面的担保,并明确否认所有暗含的对非特定用途,适销性和适用性的担保。提供的信息被认为是准确和可靠的。但是,NVIDIA公司对使用此类信息的后果或由于其使用可能导致的任何侵犯第三方专利或其他权利的行为不承担任何责任。未经NVIDIA公司的任何专利或专利权利暗示或以其他方式授予许可。本出版物中提及的规格如有更改,恕不另行通知。本出版物取代并取代以前提供的所有信息。NVIDIA Corporation产品未经NVIDIA公司明确书面批准,不被授权用作生命支持设备或系统中的关键组件。

    NVIDIA,NVIDIA徽标,NVIDIA nForce,GeForce,NVIDIA Quadro,Vanta,TNT2,TNT,RIVA,RIVA TNT和TwinView是NVIDIA Corporation在美国和/或其他国家的注册商标或商标。

    Linux是Linus Torvalds的注册商标。Fedora和Red Hat是Red Hat,Inc.的商标。SuSE是SuSE AG的注册商标。Mandriva是Mandriva SA的注册商标。Intel和Pentium是Intel Corporation的注册商标。Athlon是Advanced Micro Devices的注册商标。OpenGL是Silicon Graphics Inc.的注册商标。PCI Express是PCI-SIG的注册商标和/或服务标志。Windows是Microsoft Corporation在美国和其他国家/地区的注册商标。ARM是ARM Limited的注册商标。其他公司和产品名称可能是与其相关的各自所有者的商标或注册商标。


    -End-






    展开全文
  • linuxOpenGL开发

    2012-10-17 20:47:30
    最近转Linux了,以前也是想做图形学方面的(个人对美学的追求和造诣吧),然后其实在window平台,opengl的开发很受鄙视,他们总问我,你怎么不直接学directX呢?然后我举出一大堆什么夸平台拉,简单易学了之类的话...
  • 开始安装首先修改/etc/inittab文件将: id:5:initdefault: 改为: id:3:initdefault: #vi /etc/inittab 然后重启电脑 系统进入字符模式并用root登录,随后运行NVIDIA-linux-x86-1.0-5336-pkg1.run # sh NVIDIA-linux-...
  • Ubuntu Linux 显卡驱动安装

    千次阅读 2017-12-03 17:14:03
    Ubuntu Linux 显卡驱动安装
  • linuxopenGL的配置

    千次阅读 2014-06-03 09:42:41
    安装编译环境和OpenGL图形驱动 1、安装基本编译环境 sudo apt-get install build-essential 2、安裝OpenGL Library sudo apt-get install libgl1-mesa-dev 3、安裝OpenGL Utilities sudo apt-get ...
  • Ubuntu 下安装 openGL 驱动的确把我折腾惨了 本人机器是 HP 的使用 i5 的集成显卡 下载了 intel 的 installer (intel-linux-graphics-installer_1.0.1_amd64.deb ),他们不支持 Ubuntu 12.04 找了个 ATI x1300 ...
  • Linux上的OpenGL无头(EGL):示例程序 该存储库包含一个示例python程序,该程序以无头模式(无显示)运行GPU计算(OpenGL) 。 该程序使用EGL(以及可选的GBM)初始化OpenGL上下文。 它将连接到/dev/dri/内核DRM...
  • Linux Nvidia 驱动安装与优化

    千次阅读 2014-02-11 13:07:42
    Linux的Nvidia显卡驱动是一个让人很头疼的问题。Nvidia为了保护其显卡架构没有开源其驱动,Nvidia本身对Linux 的支持也极为糟糕,所以Linux安装Nvidia驱动经常碰到各种问题,并且性能也落后于Windows系统。这里总结...
  • 本系列文章将分析Linux Framebuffer驱动的作用(需求)、框架、接口实现和使用。按笔者一直倡导的Linux学习理念—从软件需求的角度去理解Linux,对于Linux各个子系统,我们首先要理解其软件需求,从中自然会清楚其...
  • 闲来无事,想在Debian下找个游戏玩玩,听说Nexuiz这个3D游戏不错,那么赶快安上:apt-get install nexuiz运行后卡的很,原来这个游戏需要opengl模式,而我的nvidia显卡没驱动起来,下面是我的解决步骤:1。...
  • 第六步,把驱动run文件丢到root目录 第七步,安装驱动 第八步,重启,验证 第一步,查看显卡型号 命令: lshw -numeric -C display 我这里是GeForce GTX 960 第二步,到英伟达官网下载对应驱动 网址:...
  • 一行代码安装linux显卡驱动 sudo ./NVIDIA-Linux-x86_64-410.78.run --no-opengl-files -no-x-check -no-nouveau-check
  • kali Linux 显卡驱动安装及注意事项 一、禁用nouveau驱动这个我在上一篇博客里讲到,但是安装显卡还是必须做。(如果做过了就直从二往后看。) 打开终端在黑名单里添加mouveau驱动。:gedit /etc/modprobe.d/...
  • Linux USB 摄像头驱动

    万次阅读 热门讨论 2017-12-10 11:33:59
          在 cortex-a8 中,可接入摄像头的接口通常可以分为两种, CAMERA 接口和 USB 接口的摄像头。这一章主要是介绍 USB 摄像头...这一章我们讲 USB 摄像头设备驱动,那么是不是支持所有的 USB 摄像头驱动...
  • 1、NVIDIA Quadro P600 Linux显卡驱动安装

    千次阅读 2018-10-24 09:38:07
    NVIDIA Quadro P600 Linux显卡驱动安装 一、硬件与环境 显卡:Quadro P600 系统:Ubuntu 14.04 ...(如果你的电脑是UEFI启动,则需要在安装驱动之前先关闭UEFI启动,关闭方法在文件最后) ...
  • Linux下的opengl库环境安装使用

    千次阅读 2017-06-09 11:42:17
    分类: C/C++ 安装几个库: apt-get install freeglut3-dev apt-get install libxi-dev apt-get install libxmu-...此程序利用GLUT绘制一个OpenGL窗口,并显示一个加以光照的球。 */ /* 由于头文件glut.h中已经
  • 其对应Linux源码路径arch\arm\mach-s5pv210\XXX210-lcds.c中的实现内容。2.给用户提供一个进程空间映射到实际的显示物理内存的接口(mmap),以使应用在一次拷贝的情况下即可以将图像资源显示到LCD屏
  • Linux下Nvidia驱动的安装

    千次阅读 2021-04-21 12:47:21
    1.查看Linux系统是否已经安装了Nvidia驱动 命令行输入:nvidia-smi 进行查看: nvidia-smi 如果输出以下信息,则Linux系统中已经安装了Nvidia驱动。 如果没有以上的输出信息,则开始进行Nvidia驱动的安装。 ...
  • Linux+Qt+OpenGL配置方案

    千次阅读 2012-09-25 22:36:25
    <!-- @page {margin:2cm} pre {font-family:"DejaVu Sans ...Linux+Qt+OpenGL配置方案 早想在Linux下搞开发了,几年前开始研究Linux游戏编程,但是那时候的确没有找到一个好的框架。现在游戏引擎那么多,跨平台
  • Linux安装显卡驱动

    千次阅读 2020-05-18 12:08:37
    该项目的目标为利用逆向工程Nvidia的专有Linux驱动程序来创造一个开放源代码的驱动程序。 所以nouveau开源驱动基本上是不能正常使用的,性能极低 **集显与独显的切换 1.使用nvidia-setting切换 2.命令行切换 NVIDIA...
  • android系统Linux内核与设备驱动

    千次阅读 2019-07-05 19:11:07
    1.Android系统中Linux内核与设备驱动 2.Android系统上的设备驱动 基本图形用户界面(GUI)部分:包括显示部分、用户输入部分和硬件相关的加速部分,还包括媒体编解码和OpenGL等。 音视频输入输出部分:包括音频、...
  • linux下安装openGL(mesa)

    千次阅读 2010-08-13 09:03:00
    1 下载解压 在官方网站下载最新mesa,mesa主要有以下几部分: MesaLib-x.y.z - Mesa库源代码,驱动和文档。 MesaDemos-x.y.z - OpenGL的演示和测试程序。绝大多数需要GLUT(Mark Kilgard的...
  •  这里的主机是64位的ACER 5745DG,安装了桌面发行版Fedora20,桌面环境是GNOME。 这里的目标板是CortexA8的AM335x,安装了之前编译好的U-Boot、Kernel和Filesystem,安装... for AM335x》、《为AM335x移植Linux...
  • 主流显卡Linux系统驱动安装--nVidia篇

    千次阅读 2006-11-08 11:27:00
    来源:计世网 曹元其 随着3D图形显示芯片的激烈市场竞争,S3、3Dfx、Matrox 、Trident等一些老牌3D显示...升级Linux驱动程序需要做一系列的决定,包括正确识别处理器配置状况,查明驱动程序工作在什么样的Linux内核
  • Linux 16.04 LTS 安装显卡驱动

    千次阅读 2019-07-31 17:05:40
    实验室购进了新的Linux服务器,为安装显卡驱动,查阅网上各种资料,并结合自己的安装过程,做个总结,以便日后查阅。 一、安装环境 操作系统:Ubuntu 16.04 LTS 显卡:NVIDIA GeForce RTX 2080 Ti 二、安装...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,410
精华内容 5,764
关键字:

linuxopengl驱动文件

linux 订阅