恢复特定内核和模块(nvidia 驱动程序)

恢复特定内核和模块(nvidia 驱动程序)

背景:我已经运行 Ubuntu 多年了(从 16.04 开始,现在是 20.04),并且一直在与我使用 CUDA 时需要的 NVIDA 驱动程序作斗争。就在昨天,我的 NVIDIA 460 驱动程序还运行良好,但 apt 升级又使其崩溃了:Ubuntu 20.4 更新破坏了我的 Nvidia 460 驱动程序配置


我想要实现的目标

  • 创建内核及其模块(例如 nvidia 驱动程序)的还原点,我很满意
  • 每当 NVIDIA 驱动程序出现故障(或其他严重故障)时,请恢复它

我已经拥有的

  • GRUB这似乎允许选择特定的内核来启动

(截图仅供参考,不代表最新版本) 在此处输入图片描述 在此处输入图片描述


问题

  • 包含内核+模块的还原点:是否有可能创建(如果可以如何创建),或者我只是误解了内核和模块在 Linux 上的管理方式(即内核不包含 nvidia 驱动程序)?

  • 从 grub 恢复:看来/etc/grub.d/40_custom我想修改的文件是它是专为自定义菜单项而设计的。您是否确认这是启动自定义内核的预期方式,或者我应该查看另一个文件?

/etc/grub.d/40_custom

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.

答案1

Linux 内核的软件包与 nvidia 驱动程序是分开的。但每个内核版本都有其对应的驱动程序。如果您安装了 4.10.0-28 版的 nvidia 驱动程序,那么启动该内核应该会使用相应的驱动程序。

其他模块可能由不同的包提供,例如linux-modules-5.8.0-45-genericlinux-modules-extra-5.8.0-45-generic

因此您应该已经拥有“还原点“s,您可以通过 grub 使用它们,如您所展示的。至于 grub 中的自定义条目,对于较旧的内核版本,您不需要它们,它们会在更新时自动添加。但是,如果您想要其他自定义,则可能需要它们。

目前还不清楚这对你来说是否还不够,或者这是否不太合适,还原点s. 如果有的话,给出一个具体例子来说明哪些方法对你不起作用,可能会有助于澄清问题。

答案2

就我自己而言,我停留在相同的 nVidia 驱动程序和内核链上:

$ uname -r

4.14.216-0414216-generic

$ nvidia-smi -q

==============NVSMI LOG==============

Timestamp                           : Mon Mar 22 11:49:28 2021
Driver Version                      : 384.130

Attached GPUs                       : 1
GPU 00000000:01:00.0
    Product Name                    : GeForce GTX 970M
    Product Brand                   : GeForce
    Display Mode                    : Enabled
    Display Active                  : Enabled
    Persistence Mode                : Disabled
    Accounting Mode                 : Disabled
    Accounting Mode Buffer Size     : 1920
    Driver Model
        Current                     : N/A
        Pending                     : N/A
    Serial Number                   : N/A
    GPU UUID                        : GPU-30fab9bc-fe6f-ec05-e8e6-c151a1a96121
    Minor Number                    : 0
    VBIOS Version                   : 84.04.79.00.0A

在安装比内核链更新的硬件之前,无需更新内核链。缺点是,如果您的系统崩溃而您不知道原因,则需要偶尔更新内核(在同一链上)。

内核4.14是一个 LTS(长期支持)内核,更新五年,包含安全性和错误修复。更新由 Linux 内核团队进行,并由 Ubuntu 内核团队发布。

这不是我所说的“自定义”内核,但很多人会这样称呼它。当您在同一个内核链内升级时,就像4.14.1884.14.216上个月做的那样,grub 不会自动将其设置为主菜单上的新默认设置:

grub 启动项.gif

因此,内核更新后,进入“高级选项”并选择新内核。确保将 grub 配置为始终使用最后使用的选项进行启动:

虽然我的 grub 菜单上有一个主题,但是菜单选项在“常规” grub 中保持不变。

我的基本经验法则是“如果它没坏就不要修理它”。我在软件升级后多次修理东西后发现了这一点。

升级驱动程序、内核和固件时,需要记住以下几点。一次性完成所有操作,全面测试,然后将设置冻结数月甚至数年。

相关内容