背景:我已经运行 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-generic
,linux-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.188
我4.14.216
上个月做的那样,grub 不会自动将其设置为主菜单上的新默认设置:
因此,内核更新后,进入“高级选项”并选择新内核。确保将 grub 配置为始终使用最后使用的选项进行启动:
虽然我的 grub 菜单上有一个主题,但是菜单选项在“常规” grub 中保持不变。
我的基本经验法则是“如果它没坏就不要修理它”。我在软件升级后多次修理东西后发现了这一点。
升级驱动程序、内核和固件时,需要记住以下几点。一次性完成所有操作,全面测试,然后将设置冻结数月甚至数年。