学有所得-Deepin linux操作系统在安装nvidia显卡驱动后的问题修复
-
目标:
装有deepin V20.9的移动硬盘在系统启动后无法进入图形化界面,修复系统。
-
背景:
为了方便随时随地开发研究,又不破坏笔记本电脑原装的正版操作系统,在一个朗科(容量500G)的移动硬盘上安装了deepin V20.9 linux操作系统,并安装了java/python相关常用开发工具,这样不用每次出门都带电脑.为了防止移动硬盘丢失时数据无意间泄露,还对移动硬盘进行了全盘加密.
某日为了学习大模型的开发,需要安装nvidia驱动\cuda\cudnn, 在移动硬盘的系统上未作预先处理,直接安装了nvdia官网的驱动程序(版本570.124.04),导致无法进入移动硬盘里的系统,左上角光标闪动,就是没法进入图形化界面,但是通过ctrl+alt+f2 可以进入控制台界面.
-
解决过程:
1.搜索网上安装nvidia 显卡驱动引起的问题相关资料,很多文章指出nouveau的禁用问题.
vi /etc/modprobe.d/blacklist.conf
输入以下内容
blacklist nouveau
options nouveau modeset=0
关闭程序,执行以下命令
sudo update-initramfs -u
通过实践发现,我的系统即便做了这个操作仍未解决问题.同时,在安装显卡驱动(版本570.124.04)的过程中,安装程序提示需要对nouveau做处理,经用户确认后,驱动安装程序自动做了处理.因此猜想,新版nvidia驱动已解决了nouveau这个问题.
可以通过以下命令确认是否已经关闭nouveau模块
lsmod | grep nouveau
如果没有任何输出,说明已经没有启用.
2.为了移动硬盘里的linux操作系统能够在安全模式下启动,需要导入密钥,认证一下启动程序.如果不导入密钥,在安全启动下,系统无法正常启动,还会提示找不到mmx64.efi 等文件的提示,连系统的console界面都无法进入.在进入console界面,第二次安装nvidia驱动后,出现了grub无法启动的情况,提示缺少mmx64.efi文件(吓了一跳,以为彻底蹦了,要重装系统).后经探索,解决过程如下:
显卡驱动安装过程中,程序提示生成非对称密钥,密钥的路径为:
/usr/share/nvidia/
文件名类似:nvidia-modsign-crt-xxxx.der,以der结尾
要导入密钥
mokutil --import /usr/share/nvidia/nvidia-modsign-crt-xxxx.der
导入过程需要设置密码,需要记住密码,后续要用到.
然后在非安全模式下启动,如果提示找不到mmx64.efi文件,可以选择efi文件方式启动,进入移动硬盘的efi分区,手动指定文件.像deepin V20.9 版本里,boot 目录里没有mmx64.efi文件,但是在deepin 目录里有该文件,可以手动选择,然后正常启动grub程序.第一次启动时,会进入一个蓝色界面,是mok的管理程序,根据提示操作即可.如果提示输入证书的密码,即上文中自己设置的密码.只要输入一次即可.然后,在bios中,再把安全启动的功能打开,可以正常启动了.
3.经过第二步,虽然可以安全模式启动,但是仍然无法进入图形化界面.一直找不到解决办法,但是网上有高人提出了一个临时解决办法,即在双显卡的笔记本中,把默认的显卡输出修改为intel,修改后,系统修复完成,可以正常进入系统.执行nvidia-smi 正常显示.临时解决办法如下:
先查看当前的显卡列表
netac@netac-PC:~/Downloads$ lspci|grep VGA
00:02.0 VGA compatible controller: Intel Corporation Device a788 (rev 04)
01:00.0 VGA compatible controller: NVIDIA Corporation Device 28e0 (rev a1)
留意前面的几个数字 00:02.0,01:00.0 待会儿要用到
vi /etc/X11/xorg.conf
打开文件,找到如下内容
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BusID "PCI:1:0:0"
EndSection
把它修改为:
Section "Device"
Identifier "Device0"
Driver "intel"
VendorName "Intel Corporation"
BusID "PCI:0:2:0"
EndSection
其中,BusID是关键,后面的0:2:0,即前面lspci中获得的信息.要根据电脑的实际情况填写.
然后重启,问题解决.
-
总结:
核心点是默认显卡的调整.