由于工作需要,必须换操作系统了,一想到笔记本已经冗杂不堪,所以就索性重装成Linux系统,虽然显卡性能不如实验室的机器,但完全可以当做试验机,同时本身机子性能也不差,所以装个乌班图应该体验还不错。以上是我开始时的想法,后来装完了之后呢,体验总体也不错,但总归是有写麻烦,我总结一下放在开头。
安装和使用Ubuntu的感受
- 初始安装时要修改配置,针对双显卡机器;
- 安装系统的过程非常快,这得益于我的固态硬盘;
- 系统的初始环境比Win10全,比如自带Python环境等等;
- 操作起来整体感觉圆滑,但比Win10要卡;
- 随便的小操作就可能导致开机黑屏,不过修复也比较容易;
- 开机关机要快点,因为不存在Win10那种更新;
- 系统的自定义程度高,基本哪里都可以改;
- 注意:微星笔电开启独显后会导致风扇一直运行在高转速;
- 注意:真不需要占用太多硬盘空间,后悔没装双系统!
总体体验还不错,除了娱乐性差一点,我基本可以适应从Win10到Ubuntu的过度。有关于系统设置和美化的内容请转到 这篇文章。
下面是安装系统及显卡驱动的步骤和需要注意的地方。
安装系统及Nvidia驱动
双显卡的系统安装及驱动安装的准备工作
Bios改成uefi,关闭安全启动;
插入启动U盘,启动安装,在try ubuntu ..install Ubuntu 的这个界面,按e,进入grub的调整界面;
把里边的quiet splash修改为nomodeset idle=nomwait,修改完成以后Ctrl + X或F10,使之生效;
然后继续安装,这样安装完成以后,应该可以顺利进入桌面;
正常进入桌面后,编辑 /etc/default/grub 这个文件,同样添加nomodeset字段到splash后面;
此时重启,应该一切正常可以进入桌面,这时其实系统使用的集显,独显的显卡还没装,下面开始。
自动探测显卡版本并列出可使用的显卡驱动编号
tzloop@tzloop-GE62-6QC:~$ ubuntu-drivers devices
… …
vendor : NVIDIA Corporation
model : GM107M [GeForce GTX 960M]
driver : nvidia-driver-440 - third-party free recommended
driver : nvidia-driver-415 - third-party free
driver : nvidia-driver-410 - third-party free
driver : nvidia-driver-430 - third-party free
driver : nvidia-driver-390 - third-party free
driver : nvidia-driver-435 - distro non-free
driver : xserver-xorg-video-nouveau - distro free builtin
查看内核版本(高内核会引发显卡驱动的不兼容)
tzloop@tzloop-GE62-6QC:~$ uname -r
5.3.0-26-generic
开始安装驱动时,先卸载之前的驱动
tzloop@tzloop-GE62-6QC:~$ sudo apt-get remove --purge nvidia*
… …
INFO:Disable nvidia
DEBUG:Parsing /usr/share/ubuntu-drivers-common/quirks/put_your_quirks_here
update-initramfs: deferring update (trigger activated)
Processing triggers for initramfs-tools (0.130ubuntu3.8) ...
update-initramfs: Generating /boot/initrd.img-5.3.0-26-generic
添加驱动的软件源
tzloop@tzloop-GE62-6QC:~$ sudo add-apt-repository ppa:graphics-drivers/ppa
… …
Fetched 88,7 kB in 0s (186 kB/s)
Reading package lists... Done
更新下载器
tzloop@tzloop-GE62-6QC:~$ sudo apt-get update
… …
Reading package lists... Done
选择安装驱动的版本
列出适用该笔记本电脑显卡的具体驱动版本。这里有三点需要注意:
尽量选择高版本的显卡驱动,比如这里选择安装440,如果选择安装410,则会出现与内核不兼容的情况,我们面会谈到。
第二点就是,可能你运行下面的命令不能自动识别出显卡版型号,那么你就要去手动查询对应的Nvidia显卡型号和Ubuntu驱动编号的关系,手动选择一个版本安装。
最后,如果可以在<软件和更新>中找到相对应的驱动版本,也可以直接鼠标选择后应用即可。这是18.04及以后都支持的Nvidia驱动安装方法。(一般初始驱动是不完整的)
如果错误的在高版本内核下安装了低版本驱动,会安装失败的:
tzloop@tzloop-GE62-6QC:~$ sudo apt install nvidia-driver-410
… …
Building initial module for 5.3.0-26-generic
ERROR: Cannot create report: [Errno 17] File exists: '/var/crash/nvidia-kernel-source-410.0.crash'
Error! Bad return status for module build on kernel: 5.3.0-26-generic (x86_64)
Consult /var/lib/dkms/nvidia/410.104/build/make.log for more information.
Setting up nvidia-driver-410 (410.104-0ubuntu0~18.04.1) ...
Processing triggers for initramfs-tools (0.130ubuntu3.8) ...
update-initramfs: Generating /boot/initrd.img-5.3.0-26-generic
所以我们要安装高版本,直接安装其recommended的版本即可。安装过程中会有基佬紫对话框,可能会被要求输入密码。
tzloop@tzloop-GE62-6QC:~$ sudo apt install nvidia-driver-440
… …
Processing triggers for initramfs-tools (0.130ubuntu3.8) ...
update-initramfs: Generating /boot/initrd.img-5.3.0-26-generic
Processing triggers for libc-bin (2.27-3ubuntu1)
显卡驱动安装完成的判定:,重启后输入nvidia smi,如果正常的显示出以下信息则正常。
可能出现的问题
重启后nvidia-smi通信失败
如果安装非常顺利,但重启后nvidia-smi命令无效,切记要在重启后进入蓝色方框的界面输入安装驱动时的密码,再重启就可以啦。首次安装过程中,登录账户后桌面黑屏
原因:安装时的grub配置没有修改,这时要重新安装系统,按照上述步骤,一定要注意修改grub文件。
请确认,这是在首次安装过程中出现的,我们可以看见登录界面,但登录进去后就是黑屏,可能有鼠标也可能没有。安装显卡驱动之后,重启黑屏
原因:没有在grub配置文件内添加nomodeset字段。
请确认,这是在我们安装完成系统之后出现的问题,那么接下来的操作就与安装盘没有任何关系,所有操作都不要插着安装盘。只需要使用Ctrl+Alt+F4(也可能是F1~F6),进入tty4也就是黑框(微型Ge62系列是在出现MSI图标后就按下ESC进入,时机比较难把握,多试几次就行了),登录root账户后,找到/etc/default/grub文件,将里面的quiet splash后面添加上nomodeset这个字段,保存重启即可。
安装CUDA
为什么重新安装Cuda,安装完成显卡驱动后的输出里已经能发现Cuda10.2了,这个问题我的理解是,我们要一个可控的开发环境,而不是运行环境,所以我们自己要重新装个Cuda,在Cuda官网可以找到对应显卡驱动的Cuda安装包,安装过程直接照官网来。
那么如何知道我们安装成功了呢,这里可以通过编译Cuda自带的例子来看其是否通过测试。
首先测试下运行环境是否正常,主要是GCC是否正常
tzloop@tzloop-GE62-6QC:~$ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module 440.48.02 Tue Jan 14 06:22:51 UTC 2020
GCC version: gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
进入sample所在的目录
tzloop@tzloop-GE62-6QC:~$ cp -r /usr/local/cuda-10.2/samples/ ~
tzloop@tzloop-GE62-6QC:~$ cd ~/samples
编译自带的例子
tzloop@tzloop-GE62-6QC:~/samples$ make
… …
arch=compute_75,code=sm_75 -gencode arch=compute_75,code=compute_75 -o cudaNvSci.o -c cudaNvSci.cpp
In file included from cudaNvSci.cpp:12:0:
cudaNvSci.h:14:10: fatal error: nvscibuf.h: No such file or directory
include <nvscibuf.h>
^~~~~~~~~~~~
compilation terminated.
注意:这里我们直接使用 make 的话会无法通过对例子的编译,参见 这里 的解释,这是一个已知的错误,我们可以通过 make -k 来忽略过程中的错误。
使用 -k 参数来跳过错误
tzloop@tzloop-GE62-6QC:~/samples$ make -k
… …
mkdir -p ../../bin/x86_64/linux/release
cp cuSolverRf ../../bin/x86_64/linux/release
make[1]: Leaving directory '/home/tzloop/samples/7_CUDALibraries/cuSolverRf'
make: Target 'all' not remade because of errors.
最终的测试,如果是PASS则Cuda运行正常
tzloop@tzloop-GE62-6QC:~/samples/bin/x86_64/linux/release$ ./deviceQuery
./deviceQuery Starting...
CUDA Device Query (Runtime API) version (CUDART static linking)
Detected 1 CUDA Capable device(s)
Device 0: "GeForce GTX 960M"
CUDA Driver Version / Runtime Version 10.2 / 10.2
… …
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 10.2, CUDA Runtime Version = 10.2, NumDevs = 1
Result = PASS
参考资料
https://bbs.deepin.org/forum.php?mod=viewthread&tid=41469
https://bbs.deepin.org/forum.php?mod=viewthread&tid=41469
http://askubuntu.com/questions/162075/my-computer-boots-to-a-black-screen-what-options-do-i-have-to-fix-it
https://www.jianshu.com/p/fc5edbd6f480
https://www.jianshu.com/p/e476e5ad6b56
😒 留下您对该文章的评价 😄