0. 摘要
由于NVIDIA的GTX1650显卡刚推出不久, 就我所知, 目前没有关于在Ubuntu上成功安装GTX1650显卡驱动教程, 所以我在安装GTX1650显卡驱动的过程中走了很多弯路, 同时也学会了很多的知识, 所以在此博客分享我的经验.
第一部分主要讲了Ubuntu16.04系统的安装, BIOS设置和分区 是重点; 不然很大概率会出现: 挂起后无法唤醒, 引导不成功, 或者swap分区不良的问题(swap分区小了可能会导致程序编译期间卡顿的问题);
是重点; 不然很大概率会出现: 挂起后无法唤醒, 引导不成功, 或者swap分区不良的问题(swap分区小了可能会导致程序编译期间卡顿的问题); 第二部分讲了 WiFi连接不上 的问题;(通病)
的问题;(通病) 第三部分讲了 如何安装NVIDIA GTX1650显卡驱动 ;
使用核显的情况下或者安装完系统以后( 前提: 需要在BIOS中设置为Switchable Graphics ), 用HDMI连接显示器后没有反应的问题, 这是由于独显闭源驱动没有成功安装的原因;
(如果安装好了独显驱动, 而BIOS设置的是Discrete Graphics的时候(也就是拯救者Y7000的独显直连模式), Ubuntu系统的屏幕亮度是无法调节亮度的)
; 使用核显的情况下或者安装完系统以后( ), 用HDMI连接显示器后没有反应的问题, 这是由于独显闭源驱动没有成功安装的原因; (如果安装好了独显驱动, 而BIOS设置的是Discrete Graphics的时候(也就是拯救者Y7000的独显直连模式), Ubuntu系统的屏幕亮度是无法调节亮度的) 第四部分讲了独显安装以后会 出现的一些问题和现象 ;
设置好BIOS以及正确安装好显卡驱动, 那么下面很多问题就可以得到解决: 问题: 引导失败; 黑屏; 无限登录; 挂起后无法唤醒; 安装显卡驱动以后屏幕亮度不能调节; 图形是llvmpipe; HDMI连接显示器没有反应; compiz进程占用很多的CPU; 提示The system is running in low-graphics mode进不入系统;
0.1. 所以2010年NVIDIA的Optimus技术解决了 系统什么时候该用独立显卡什么时候该用集成显卡来运行程序 的问题;而联想2019年的推出的DDG技术解决了 先前不管怎么样独显处理完的数据还得交给核显来进行显示 的难题;而2020.4月NVIDIA推出的Advanced Optimus技术解决了 独显和核显热切换 的难题以及 独显直连 的问题,相当于前面两种问题都被这个技术解决了。(可以看出联想在游戏本上的开发投入的精力还是不少)
1.0. 由于安装ubuntu系统的教程很多, 所以这里只是大概讲下流程和需要注意的地方;
1.1. 首先在win10环境下使用自带的磁盘管理工具将某个盘压缩出自己所需要的空间, 我这里压缩了250G给Ubuntu系统使用, 压缩完成后会看到存在一个未分配的分区,如下图所示; (如果在安装类型中选择了第一项, 系统会自动识别出这个未分配的分区进行Ubuntu的安装, 并且还会分为 / 和 swap 两个分区)
1.2. 使用U盘制作启动盘:
在win10上使用UltraSo工具将Ubuntuxxx.iso做成U盘启动盘;
1.3. 重点: 设置电脑BIOS选项(联想电脑: 开机连按F2) :
1.3.1. 在BIOS的 Configuration 这一项将图形设备Graphic Device选项改为: Switchable Graphics , 引导方式默认的UEFI就行;
原因: 这样可以避免出现挂起后无法唤醒的问题, 因为这个显卡选项默认是独立显卡Discrete Graphics,
由于真正的闭源驱动还没有安装成功(默认安装的是NVIDIA的开源驱动nouveau), 所以导致挂起后无法唤醒的问题;
或者按默认的Discrete Graphics来也行, 安装好系统以后再改为Switchable Graphics就可以.
Graphic Device = Discrete Graphics, 会出现挂起后无法唤醒的问题. (这个时候 系统设置->详细信息 图形: llvmpipe(LLVM 6.0, 256 bits))
Graphic Device = Switchable Graphics, 不会出现挂起后无法唤醒的问题. (这个时候 系统设置->详细信息 图形: Intel® HD Graphics (Coffeelake 3x8 GT2) )
1.3.2. 在BIOS的 Security 这一项将Secure Boot改为: Disabled
原因: 关闭安全模式, 才能进入Ubuntu系统, 否则即便安装成功了, 也不会引导到Ubuntu系统里;
1.4. 关机, 插入制作好的启动盘, 然后开机后连按F12(联想电脑) ,然后选择是启动盘那个选项;
注: 如果以前安装了Ubuntu系统, 现在想再安装同样的系统或者其他, 最好将以前的Ubuntu系统引导项从电脑删除干净, 不然到最后系统的引导项会有好多个Ubuntu, 那时候就不容易分不清了, 具体方法见: 此处
1.5. 等待片刻就开始了Ubuntu系统的安装选项界面, 选项如下(选择第一个或第二个均可), 然后开始安装, 选择语言等:
1.6. 重点:下来就是最重要的一步: 分区
1.6.1. 当执行到 安装类型 这一步的时候, 我们可以选第一个或者最后一个:
如果选择了第一个选项, 系统会自动查找磁盘中未分配的分区进行安装, 并且将该分区分为 / 和 swap 分区, 如果安装的是Ubuntu 16.04.4版本, 可以直接选第一项, swap 分区 = 电脑的运存, 如果是16.04.5及以后版本, 这个swap分区 = 1G, 显然不太合适(我在我自己电脑上测试结果是这样), 我安装了Ubuntu16.04.6, 所以我选择了最后一个: 其他选项 进行手动分区
1.7. 分区结果如下:
/分区 :
swap分区 :
我这里只分了两类 / 和 swap , 剩下的那些分区没有必要分了, 这样使用就挺方便; (一般情况下在Linux里必须建立一个 / 根分区, 系统内存已经足够大; 系统内存一般的情况下,至少要建立两个分区: / 和 swap , 其他的其实无所谓,详见此处)
还有一个重要的 boot 分区没有分, 我直接使用了Windows的efi(当然也可以做两个efi分区来引导各自的系统,依然是点击+号,分差不多200M的空间挂载到 /boot 即可); 最终结果如下:
1.8. 点击 现在安装 , 设置用户名等, 就可以将Ubuntu安装进去了, 差不多需要花费2分钟左右的时间就完成了.
1.9. 重启进入系统, 这样会自动进入grub引导界面,第一项就是Ubuntu,我们可以点回车进入系统(如果还是进入了Windows系统,那我们可以重启的时候按F2进入BIOS选项将Ubuntu移到最上面启动,这样就会进入grub引导界面了)
注: EasyBCD引导不了EFI类系统, 所以还是建议直接修改BIOS顺序进入就行.
2.0. 如果使用Windows比较多, 我们可以通过修改grub来让Windows默认启动, 具体见此处连接
2.1. 这个系列电脑存在一个通病(其他系列的不清楚): ** WiFi连接不成功 ** ; 我们通过rfkill命令来查看无线传输设备的情况:
$ rfkill list all
结果如下, 存在两个WiFi设备, 我们这里将第一个设备ideapad禁用掉即可(因为被Hard blocked了):
解决方法, 在/etc/rc.local文件中 exit 0 的上一行写入 echo '123' | sudo modprobe -r ideapad_laptop 即可:
$ sudo gedit /etc/rc.local
2.2. 重启设备就可以连接上WiFi了.
2.3. 更新一下源,以便后续安装其他程序;
$ sudo apt-get update
2.4. (2019款电脑可略过)这款Y7000 2019 PG0使用的无线网卡型号是Intel AC 9560(无线网卡是接在PCI总线上的,所以我们通过 lspci 就可以从列表中看到无线网卡的型号),所以不用更新Ubuntu内核驱动版本(16.04.6默认内核版本为 4.15.0 )就可以使用此无线网卡;而Y7000 2020款使用的无线网卡是Intel AX201,这款是Intel新推出的无线网卡并且支持WiFi6,由于硬件很新,为了在Ubuntu上使用此网卡需要我们更新内核驱动,具体方法见此博客;[在新的硬件上使用旧的软件系统(或者旧的硬件上使用新的软件系统),很可能会出现这种内核版本的问题]
不同无线网卡对应的Linux内核版本情况,可见Intel官网:
不同Ubuntu版本对应的 初始内核版本 见此官网;
另:电脑的三个卡介绍( 显卡,声卡,网卡 ):很多电脑安装的主板声卡和有线网卡都是Realtek这个厂商的,因为便宜稳定;除此以外一个声卡是在NVIDIA独显上的,这个声卡主要是为了在外接显示器下通过HDMI接口输出声音信号而服务的;集成显卡和无线网卡大都采用的是Interl厂商的。
3. GTX1650显卡驱动的安装
我这款联想拯救者Y7000 2019版电脑安装的是旧的GTX1650显卡,在2020年4月份NVIDIA又推出了新的GTX1650显卡和GTX1650Ti显卡,升级成了GDDR6显存,具体区别可以见下图:
性能区别见此处,如果按照这篇帖子显卡安装失败了,有可能是新旧1650显卡的原因,这一部分的补充我写在了第六节。
补充资料:此处链接描述了笔记本电脑外接显示器的三种接口方式与注意的问题,原来Type-C接口也具有显示输出的功能,Type-C的显示输出功能其实并没有占用USB带宽,而是单独做了个DP显示总线放在了Type-C口上。
3.0. 问题: 当进行完上面那些步骤以后, 如果通过HDMI去连接显示器以后会发现显示器没有任何输出 , 这主要是因为此电脑的HDMI接口是连在独显上的, 但是独显的闭源驱动并没有安装上, 所以显示器没有任何输出, 通过成功安装GTX1650显卡驱动, 外接显示器就可以正常工作。
Ubuntu一般默认安装的是Intel的集显驱动以及独显的开源驱动,经常导致连接扩展屏没有图像输出(针对GTX1650显卡来说)
3.1. 安装NVIDIA驱动一共有三种方法:
ppa方式, 也就是添加软件源, 然后 sudo apt-get install xxxx , 通过deb文件进行安装;点击这里可以查看显卡ppa软件源中不断添加更新的软件包;
, 通过deb文件进行安装;点击这里可以查看显卡ppa软件源中不断添加更新的软件包; 附加驱动方式,也就是 系统设置->软件和更新->附加驱动 中可以找到NVIDIA的驱动, 点击合适的版本,最后应用更改; (我这里是添加了ppa以后附加驱动才有内容的, 没有加ppa之前附加驱动是空白的);
中可以找到NVIDIA的驱动, 点击合适的版本,最后应用更改; (我这里是添加了ppa以后附加驱动才有内容的, 没有加ppa之前附加驱动是空白的); .run方式, 也就是去NVIDIA驱动的官网下载对应显卡的run文件;
3.1.1. 查看电脑显卡的指令如下:
$ lspci -k | grep -A 2 -i 'VGA'
3.2. 我这里第二和第三种都没有安装成功, 会出现黑屏或者循环登录的情况, 最后通过ppa的方式安装成功, 方法如下:
注: 由于第一次安装可能不成功, 所以需要卸载以前不成功的驱动, 卸载方法如下(如果是第一次安装NVIDIA则可以跳过):
ppa方式安装
$ sudo apt-get purge nvidia-*
.run方式安装
$ cd
$ sudo ./NVIDIA-Linuxxxxx-version.run --uninstall
3.3. 通过ppa方式安装方法如下:
3.3.1. 由于电脑安装了NVIDIA的开源驱动nouveau, 所以我们先要将其屏蔽掉, 屏蔽方法是将其放入blacklists中; 首先我们通过 lsmod | grep nouveau 可以发现系统已载入的nouveau模块:
3.3.2. 禁用nouveau模块:
$ sudo gedit /etc/modprobe.d/blacklist.conf
在blacklist.conf文件中, 最后一行输入:
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb
3.3.3. 升级一下内核:
$ 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
如果不修改,到时候安装ROS的时候也会存在这两个警告, 我们可以点击此处下载相应的文件, 复制到对应的目录即可:
$ 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/
3.3.4. 重启
$ sudo reboot
3.3.5. 通过 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 # 这一步会看到推荐的驱动版本号,比如123 $ sudo apt-get install nvidia-123 nvidia-settings nvidia-prime $ sudo service lightdm start
$ sudo reboot
需要注意的是: 我这里推荐安装的驱动版本是430, 结果失败了, 经过几次尝试安装了 nvidia-418 , 终端显示的是418.56版本, 虽然不是推荐的, 但是 安装成功,没有问题 (推荐的驱动430安装失败…)
3.4. 检测成功与否
3.4.1. 重启以后可以发现 系统设置->详细信息 中的图形变成了: GeForce GTX 1650/PCIe/SSE2, 如下图所示:
3.4.2. 通过下面命令可以打开NVIDIA的配置面板, 可以发现渲染器Renderer为独立显卡GTX1650, 如下图:
$ nvidia-settings
3.4.3. 通过下面命令可以发现, 系统是否使用了NVIDIA显卡驱动, 如下图所示, 如果使用率为0, 多半是安装错误;
$ nvidia-smi --loop=1
3.4.5 以前的旧电脑通过ppa安装推荐的NVIDIA驱动, 一次就成功了, 但是这次这个GTX1650着实让人觉得有些奇怪.
3.5. 双显卡切换
3.5.1. 安装好独立显卡以后,如果需要切换回集成显卡,可以在nvidia-settings界面的 PRIME Profiles 选项中切换为集成显卡,重启或注销;
3.5.2. 如果切换到集成显卡,会发现nvidia-settings打不开了,这个时候我们可以通过在终端输入命令来切换为独立显卡:
$ sudo prime- select nvidia
4. 问题
4.1. 如果出现下面问题, 多半是 独立显卡 安装有问题或者 BIOS 的图像选项没有设置对:
图形选项不是GTX1650, 而是llvmpipe之类的; (此种情况下, compiz进程会占用相当大的CPU, 会吃掉你几个核, 从20%~300%, 虽然察觉不出来, 其实是有问题的,开的窗口越多越明显) (多半是.run文件安装引起的问题, 不知道是不是因为加了 -no-opengl-files 的原因)
的原因) 显卡配置的渲染器不是独立显卡, 而是llvmpipe(LLVM 6.0, 256 bits)之类的, 里面没有 PRIME Profiles 选项;
选项; 显卡的使用率为0, 进程里显示为no progress;
重启以后黑屏(.run安装方式会出现这个问题)
或者提示The system is running in low-graphics mode;
电脑挂起以后无法唤醒, 风扇一直转, 只能通过重启来解决; (如果电脑正确使用了集显或者独显不会出现挂起后无法唤醒的问题);
4.2. 如果安装驱动出现了上面的问题, 导致黑屏或者无限登录, 我们可以通过 Ctrl + Alt + F1 进入tty1界面卸载掉NVIDIA驱动就可以进入有桌面的系统了, 紧接着又可以尝试安装NVIDIA驱动了.
5. 安装相关软件
5.1. 系统方面: 安装htop, terminator, indicator-sysmonitor;
5.2. 输入法: 搜狗输入法;
5.3. 安装ROS环境;
5.4. 安装catkin tools,支持 catkin build
$ sudo apt-get install python-catkin-tools
5.4. 编译环境: CLion, vscode, MATLAB; (注意: 不要安装roboware, 异常不好用)
5.5. 优化库相关项: Eigen, Sophus, Ceres, g2o, Pangolin;
5.6. 文档类: 福昕阅读器, WPS, Xmind, Typora;
5.7. 小工具类: redshift-gtk;
6. 补充