ubuntu18.04安装显卡驱动后,循环登录(或者登录后无法进入桌面, 卡在 unbuntu 的红色背景中);
(ubuntu18.04, 内核 5.4.0-90-generic, nvidia-driver)
联想笔记本RTX2060 的显卡, 系统ubuntu18.04.05(5.4.0-42-generic), 在系统自己更新(18.04.06, 5.4.0-90-generic)后会产生一个新的默认内核.
现象:
-
在新的内核环境下,禁用了nouveau, 使用 https://blog.csdn.net/chumingqian/article/details/xxx.run -no-x-check -no-nouveau-check -no-opengl-files, 依次安装,卸载过三种显卡驱动nvidia-driver- 470.86, 470.82, 495.44,
-
出现的问题是显卡安装后,使用 nvidia-smi 可以查看到显卡信息, 但是重启登录过后, 卡在进入桌面的那一步, 无法进入桌面, 卡在 unbuntu 的红色背景中;
-
或者是输入密码后,出现循环登录的情况;
解决方法,
对于台式机,单系统 ubuntu 时,
如果误删了 xorg.conf 文件,
则重启机器时, 按住 shift 键, 进入 Advance options for Ubuntu ;
选择低版本的 ubuntu 进入, 由于刚才删除 xorg 是高版本内核中的配置文件,
所以可以进入 低版本的 kernel 中, 重新配置,
使用低版本的kernel 作为默认启动项, 具体方法见 第三节。
若出现如下情况:
NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and2060显卡驱动 running.
step1:sudo apt-get install dkms
step2: sudo dkms install -m nvidia -v 4xx.79
其中step2 中的4xx.79是NVIDIA的版本号,当你不知道的时候,进入/usr/src目录中,可以看到里面有nvidia文件夹,后缀就是其版本号;
nvidia-smi
如果上面一个不行, 且出现下面情况:
在使用 DKMS(Dynamic Kernel Module Support) (动态内核模块支持)安装 NVIDIA 驱动程序期间遇到的错误消息表明存在一些潜在问题:
内核兼容性:该错误 bad exit status: 2 表明 NVIDIA 驱动程序版本和您当前的内核版本 5.15.0-107-generic 可能存在兼容性问题。
缺少二进制包:该消息 binary package for nvidia: 535.104.05 not found 表明您尝试安装的 NVIDIA 驱动程序的特定版本可能未正确设置或在 DKMS 树中可用。
生成错误:查阅 make.log 文件的建议对于确定生成失败的确切原因至关重要。此日志将 2060显卡驱动包含有关编译过程中遇到的错误的详细信息。
出现上述的3.1 中情况的原因, 是由于当前ubuntu 的 内核版本 与 nvidia 驱动不匹配造成的.
- 切换到 /usr/src 目录下, 看当前存在的内核版本;
使用 uname -a 可以看到当前正在使用的内核版本:
在启动机器时, 通过 Adavances options for ubuntu , 可以看到 当前存在的内核版本情况,
通常是两对, 一个是更新的+ recover mode; 另一个是之前的;
我们需要回退到之前 旧版本的内核。
设置 GRUB 默认条目:
将该 GRUB_DEFAULT=0 行替换为记下的确切名称,并用引号括起来。例如
保存和更新 GRUB:
如果出现警告时,
则重新修改 grub,
注意,以下字符不同的机器会产生不同的字符串, 需要根据自己的机器进行修改。
使用以下命令 grep 验证菜单项:
为确保使用正确的条目,您可以列出所有 GRUB 菜单条目。使用以下命令来获取 GRUB 配置文件:
同样, 需要更新grub;
为了防止将来的内核更新,您需要保存内核软件包:
验证保留:
通过配置正确的 GRUB 菜单项并保存内核软件包,您可以确保系统以所需的内核版本启动,并防止不必要的内核更新。此设置在双启动方案中特别有用,在这些方案中,在重新启动时保持稳定的环境至关重要。
------------------------------------- 我是分割线----------------------------------------------------------
- make oldconfig
共享的 DKMS make.log 错误消息表明构建 NVIDIA 驱动程序模块所需的内核配置文件存在问题。具体来说,关于“内核配置无效”的错误和缺少 include/generated/autoconf.h 或 include/config/auto.conf 文件是关键问题。
如果内核头文件没有为模块编译做好适当的准备,通常会发生此类问题。以下是解决此问题的方法:
首先,确保您位于内核头文件所在的正确目录中。对于 Ubuntu,它通常是 /usr/src/linux-headers-$(uname -r)/ .执行以下命令:
make prepare 期间 make oldconfig 遇到的错误消息,表示系统中缺少该 flex 实用程序。 Flex 是用于生成扫描仪的工具:识别文本中词汇模式的程序。它是构建 Linux 内核和内核模块的某些部分所必需的。
在此期间 sudo make prepare 遇到的错误表明与生成特定于体系结构的标头相关的 make 过程存在问题,尤其是对于 x86 体系结构。这可能是由于多种原因造成的,包括环境中的内核头文件不完整或不一致,或者缺少构建模块所需的基本文件。
错误提到缺少 syscall_32.tbl .此文件对于在 x86 系统上构建内核的某些部分至关重要,尤其是在使用 32 位支持进行编译时:
注意 ,,不可用通配符
- 使用默认配置
当开始出现, 如下选项时, 笔者在这里,全使用了默认配置,没有修改
- openssl
错误表明您的系统中缺少 OpenSSL 标头,而编译处理加密签名(如模块签名)的 Linux 内核部分需要这些标头。缺少的特定文件是 openssl/opensslv.h ,它是 OpenSSL 开发包的一部分。