朋友的电脑是联想Y7000,因为Nvidia驱动的问题几次头疼脑大。这次是出现了HDMI在Windows 10下输出正常,而Ubuntu系统下无法输出。

原因分析

如果通过HDMI去连接显示器以后会发现显示器没有任何输出, 这主要是因为此电脑的HDMI接口是连在独显上的, 但是独显的闭源驱动并没有安装上, 所以显示器没有任何输出, 通过成功安装GTX1650显卡驱动, 外接显示器就可以正常工作。

如此看来,原因即为显卡驱动为正常安装。

安装驱动方式的选择

NVIDIA驱动一共有三种方法:

  • ppa方式, 也就是添加软件源, 然后sudo apt-get install xxxx, 通过deb文件进行安装;
  • 附加驱动方式,也就是系统设置->软件和更新->附加驱动中可以找到NVIDIA的驱动, 点击合适的版本,最后应用更改; (我这里是添加了ppa以后附加驱动才有内容的, 没有加ppa之前附加驱动是空白的);
  • .run方式, 也就是去NVIDIA驱动官网下载对应显卡的run文件。

    按照参考资料,我们选择第一种方法。

安装之路

  1. 查看自己的显卡版本

    lspci | grep -i NVIDIA

    注:

    1. 如果查看驱动版本可使用:sudo dpkg --list | grep nvidia-*
    2. 亦可以使用lspci -k | grep -A 2 -i "VGA",但是可能无法显示出具体版本(如GTX 1050 Ti)型号。
  2. 卸载原有旧驱动(若安装过)

    由于第一次安装不成功, 所以需要卸载以前不成功的驱动, 卸载方法如下(第一次安装NVIDIA则可以跳过):

    ppa方式安装:sudo apt-get purge nvidia-*

    .run方式安装:cd <the path of .run file>$ sudo ./NVIDIA-Linuxxxxx-version.run --uninstall

  3. 屏蔽Ubuntu自带驱动

    由于电脑安装了NVIDIA的开源驱动nouveau, 所以我们先要将其屏蔽掉, 屏蔽方法是将其放入blacklists中。

    通过lsmod | grep nouveau可以发现系统已载入的nouveau模块,其后,输入命令sudo gedit /etc/modprobe.d/blacklist.conf,在blacklist.conf文件中, 最后一行输入:

    blacklist vga16fb blacklist nouveau blacklist rivafb blacklist rivatv blacklist nvidiafb

  4. 升级内核

    sudo update-initramfs -u

    注意:很可能遇到问题:

      W: Possible missing firmware /lib/firmware/i915/kbl_guc_ver9_14.bin for module i915
    W: Possible missing firmware /lib/firmware/i915/bxt_guc_ver8_7.bin for module i915

    解决方法为下载相应的文件, 复制到对应的目录。

    1. 下载地址:https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915

      备注:个人地址:如果外网打不开或者是下载速度过慢,可使用此链接下载。kbl_guc_ver9_14.binbxt_guc_ver8_7.bin
    2. 安装方法:
cd [the path of bin file]
sudo cp kbl_guc_ver9_14.bin /lib/firmware/i915/
sudo cp bxt_guc_ver8_7.bin /lib/firmware/i915/
  1. 重启并进入tty1模式

    sudo reboot

    重启后通过Ctrl + Alt + F1进入tty1界面(这个界面是纯黑底白字的, 如果想再次回到桌面, 可以通过Ctrl + Alt + F7进入), 然后将桌面管理器lightdm关闭, 添加ppa, 更新源, 查找推荐驱动, 安装驱动, 开启lightdm服务, 回到桌面, 重启。具体命令如下:
sudo service lightdm stop
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo ubuntu-drivers devices
# 这一步会看到推荐的驱动版本号,但不一定能显示出来
sudo apt-get install nvidia-123 nvidia-settings nvidia-prime
sudo service lightdm start
sudo reboot
  1. 检查是否成功
  • 直观地,可以看显示器是否被识别。输入命令xrandr,看是否识别了Screen 1,以及HDMI;
  • 重启以后可以发现系统设置->详细信息中的图形变成了: GeForce GTX 1050 Ti;
  • 通过nvidia-settings打开NVIDIA的配置面板, 可以发现渲染器Renderer为独立显卡GTX 1050;
  • 通过nvidia-smi --loop=1可以发现, 系统是否使用了NVIDIA显卡驱动, 如果使用率为0, 多半是安装错误。

注意:若安装失败勿惊慌,直接进入tty1卸载驱动重装即可。

最终解决方法

在ubuntu16.04刚安装时,显卡默认为Intel集成显卡。

  1. 禁用自己的secure boot,也就是设置为disable,具体的进入自己bios中找一下,一般在security或者boot里面。

  2. 进入终端输入两条命令

ubuntu-drivers devices
sudo ubuntu-drivers autoinstall
  1. 重新启动

注意:关键点其实在于secure boot,当然不禁止也是可以的。安装过程中会引导输入MOK密钥,只需要重启时在secure boot界面再输入一次同样可以加载第三方驱动。

附录

设置双显示器方式

除了基本的使用设置功能,还可以使用命令行的方式:

  1. 打开外接显示器,双屏幕显示相同的内容--克隆,(auto为最高分辨率)

    xrandr --output VGA-0 --same-as LVDS --auto
  2. 若要指定外接显示器的分辨率可以使用下面的命令(1280x1024)

    xrandr --output VGA-0 --same-as LVDS --mode 1280x1024
  3. 打开外接显示器,设置为右侧扩展
xrandr --output VGA-0 --right-of LVDS --auto
xrandr --output VGA-0 --left-of LVDS --auto
  1. 关闭显示器

    xrandr --output VGA-0 --off
  2. 打开VGA-0接口显示器,关闭LVDS接口显示器

    xrandr --output VGA-0 --auto --output LVDS --off

    注意:需要注意的是,在使用xrangr命令设置双屏幕之前,需要先运行xrandr查看VGA,LVDS以及HDMI接口的连接方式以及接口正确的名称,如上为:VGA-0,LVDS和HDMI。

tty模式下显示错乱问题

tty模式下中文乱码解决,可参考此文章

参考资料

  1. https://zhuanlan.zhihu.com/p/83637608
  2. https://blog.csdn.net/jyl1999xxxx/article/details/78871622

Ubuntu解决Nvidia驱动缺失导致的HDMI无法输出问题的更多相关文章

  1. Ubuntu系统---NVIDIA 驱动安装

    Ubuntu系统---NVIDIA 驱动安装 第一次安装“NVIDIA 驱动”,小小的激动,因为终于可以玩GPU了.预想一块GPU,盼望太久,差点放弃,感谢J姐让我捡个漏.但是,第一次新的试错过程,网 ...

  2. Ubuntu系统---nvidia驱动下载之问题

                                                                             Ubuntu系统---nvidia驱动下载之问题 百度 ...

  3. Ubuntu系统---“NVIDIA 驱动+CUDA+cuDNN ”之后 OpenCV安装

    Ubuntu系统---“NVIDIA 驱动+CUDA+cuDNN ”之后 OpenCV安装 目录: 一.OpenCV安装包下载 二.cmake安装 三.OpenCV安装 正文 一.OpenCV安装包下 ...

  4. ubuntu安装nVidia驱动,遇到终端闪砾问题并解决

    安装nvidia的官方驱动之后,比起nouvean来说感觉速度快了不少. 安装该驱动很简单,但选择哪个驱动是要注意的.因为今天我试了nvidia的多个驱动后都在ubuntu下用起来并不好. 我现在的环 ...

  5. ubuntu安装nvidia驱动

    安装环境: ubuntu 版本:12.04.02 LTS  64bit nvidia 驱动版本:NVIDIA-Linux-x86_64-310.19.run nvidia 显卡:GT640 安装过程主 ...

  6. ubuntu安装nvidia驱动以及cuda教程

    最近尝试在ubuntu中安装nvidia的显卡驱动以及cuda.花了近三天时间,真的如网上所说错误百出,期间甚至重装了一次ubuntu系统,搞到怀疑人生,整个都是泪- -.最终经过百般“磨难”总算安装 ...

  7. 【linux基础】ubuntu系统NVIDIA驱动安装

    在安装GPU环境下的软件工具,特别是CUDA/CUDNN等,一定要先把GPU环境搭建好. NVIDIA驱动安装会遇到各种问题,真希望黄教主可以将各个工具如何安装使用讲解的更加细致.清楚一些,有时候按照 ...

  8. ubuntu 安装NVIDIA驱动过程

    用U盘引导安装时,提示 nouveau 0000:65:00.0: fifo: SCHED_ERROR 08 [] 解决方法: 进入grub 内核启动参数后增加 nomodeset nomodeset ...

  9. Ubuntu 卸载nvidia驱动

    1.切换为集成显卡 如果没有,那么先切换到字符界面 2.卸载驱动 sudo apt-get --purge remove nvidia* sudo apt autoremove To remove C ...

随机推荐

  1. Nginx cpu亲和性调整

    意义 Nginx默认没有开启利用多核cpu,我们可以通过worker_processes指令来启动多个worker,但是worker最终运行在哪些cpu核上是系统层进行调度的:我们可以通过增加work ...

  2. Uva 10635 - Prince and Princess LCS/LIS

    两个长度分别为p+1和q+1的由1到n2之前的整数组成的序列,每个序列的元素各不相等,两个序列第一个元素均为1.求两个序列的最长公共子序列 https://uva.onlinejudge.org/in ...

  3. python基础练习题3

    01:有1,2,3,4个数字,能组成多少个互不相同且无重复的三位数,都是多少思路:可填写在百位,十位,个位的数字都是1,2,3,4.组成所有的排列后再去掉不满足条件的排列 list =[,,,] li ...

  4. 安装php-solr扩展

    本人qq群也有许多的技术文档,希望可以为你提供一些帮助(非技术的勿加). QQ群:   281442983 (点击链接加入群:http://jq.qq.com/?_wv=1027&k=29Lo ...

  5. Bean的生命周期与JVM**

    案例: 在service里定义了一个全局变量,这类变量只能是final的.如果不是,在代码中一旦有地方给该变量进行业务赋值.当不满足赋值条件时变量仍然保留上次的赋值的值. 这是因为Bean没有销毁. ...

  6. BZOJ4625 [BJOI2016]水晶 最小割

    题意简述 给你一个三维的坐标系,坐标系上 \((x_i+y_i+z_i)\bmod 3 = 0\) 的点内有能量源.给定 \(n\) 个点含有能量值为 \(c_i\) 的水晶,如果一个水晶位于能量源上 ...

  7. 可决系数R^2和方差膨胀因子VIF

    然而很多时候,被筛选的特征在模型上线的预测效果并不理想,究其原因可能是由于特征筛选的偏差. 但还有一个显著的因素,就是选取特征之间之间可能存在高度的多重共线性,导致模型对测试集预测能力不佳. 为了在筛 ...

  8. makefile 赋值

    = 是最基本的赋值:= 是覆盖之前的值?= 是如果没有被赋值过就赋予等号后面的值+= 是添加等号后面的值

  9. 又联考了一场,感觉自己好菜啊,T1没写出来,后来花了一个早上调试。QAQ。最后发现是个-1还有取模没打。。。TAT。。。难受极了!!!

    简单的区间(interval) 题目描述: 样例输入: 样例1: 4 3 1 2 3 4 样例2: 4 2 4 4 7 4 样例输出: 样例1: 3 样例2: 6 提示: 时间限制:1000ms 空间 ...

  10. 七牛云对象存储kodo使用体验

    在这里,我使用了七牛云的对象存储Kodo,和阿里云的OSS,还有腾讯云的COS是同样的产品 oss相关术语 包依赖关系解决 unrecognized import path "golang. ...