Insidentally 发布的文章

本文介绍如何在 Fedora 中自动签署英伟达内核模块。

在启用安全启动的 Fedora 中安装英伟达驱动

背景信息

现在新出厂的电脑 UEFI 会默认开启 安全启动 Secure Boot ,它的作用是防止恶意软件侵入。当电脑的引导程序被病毒修改之后,它会给出提醒并拒绝启动,避免可能带来的进一步损失。不过它同样会阻止一些未经微软签名的 Linux 内核启动运行。虽然可以直接选择在主板设置中关闭安全启动来解决这些麻烦,但在近期微软公布的 Windows 11 最低硬件标准中可以看到,安全启动被微软看的越来越重。如果你的电脑是 Windows + Linux 双系统,最好还是让 Linux 本身支持安全启动。

而最好用的发行版之一 Fedora 更热衷于开源驱动。Fedora 其本身是支持安全启动的,但是当你通过 Rpmfusion 安装官方的英伟达驱动,会造成这些驱动的内核模块未签名。在 Linux 启动过程中因为安全启动校验签名,会阻止加载这些模块,进而无法正常驱动显卡。

用过 Ubuntu 的伙伴们应该知道,在安全启动开启的情况下,Ubuntu 安装程序会自动用自签密钥来签名英伟达驱动内核模块,并在开机过程中自动将该自签密钥导入 MOK List(安全启动机器主人信任密钥列表)。但 Fedora 只会保证自身内核签名有效,而对 Rpmfusion 中的第三方内核模块签名问题不予理会,导致无法正常加载英伟达驱动。

本文介绍如何在 Fedora 中自动签署英伟达内核模块

准备工作

在 Fedora 36 之前,要像 Ubuntu 那样自动签署内核模块有点困难。但从这个版本开始,你只需几个简单的步骤就能做到。

在开始之前,让我们先确认一些前提条件已经满足:

  1. 已启用安全启动;
  2. 尚未安装英伟达驱动程序(非常关键,如果你已经安装了专有的英伟达驱动,可能需要重装系统才行);
  3. 以及安装了 Fedora 36 及以上版本。

本指南主要参考了以下资料:

  1. Rpmfusion 的官方英伟达文档
  2. Rpmfusion 的官方安全启动文档
  3. Andrei Nevedomskii 的博客教程

希望深入了解的朋友可以阅读上述资料进一步研究。

具体步骤

1、安装自动签名所需的工具

sudo dnf install kmodtool akmods mokutil openssl

2、生成签名密钥

sudo kmodgenca -a

该命令会在 /etc/pki/akmods/certs/ 目录下生成密钥,运行正确的情况下不会有输出。

3、启动密钥注册

这将使 Linux 内核信任使用你的密钥签名的驱动程序。

sudo mokutil --import /etc/pki/akmods/certs/public_key.der

你会被要求输入一个密码。请记住这个密码,在下面的第五步中还需要再次使用。

4、重启以注册密钥

sudo reboot

5、注册密钥

重启后,你将看到蓝色的 MOK 管理器界面,不要被这种类似 BSOD 的页面吓坏,按照以下步骤注册密钥。

如果你曾在启用安全启动的 Ubuntu 中安装过英伟达驱动程序,你可能见过这个界面。

1、首先要及时按任意建继续进入 MOK 管理(如果没有及时进入 MOK 管理,系统会重启)

MOK 管理界面1

2、首先选择 “Enroll MOK” 注册 MOK。

3、然后选择 “Continue”。

4、选择 “Yes” 并输入步骤 3 中的密码并回车(密码不会在输入框中显示,输入密码直接回车就好了)。

MOK 管理界面2

5、此时密钥已经注册,选择 “reboot”,设备将再次重启。

MOK 管理界面3

6、安装英伟达驱动程序

现在只需正常安装英伟达驱动程序。

sudo dnf install gcc kernel-headers kernel-devel akmod-nvidia xorg-x11-drv-nvidia xorg-x11-drv-nvidia-libs

7、确保内核模块已编译

sudo akmods --force

8、确保启动镜像也已更新

sudo dracut --force

9、重启设备

sudo reboot

验证是否成功

重启完成后,输入以下命令确认驱动是否加载:

lsmod | grep -i nvidia

如果有类似以下的输出,恭喜你,一切顺利,一切就绪!

$ lsmod | grep -i nvidia

nvidia_drm             94208  2
nvidia_modeset       1560576  2 nvidia_drm
nvidia_uvm           3493888  0
nvidia              62517248  118 nvidia_uvm,nvidia_modeset
video                  73728  3 asus_wmi,i915,nvidia_modeset

现在,你可以愉快的在开启安全启动的情况下使用英伟达显卡了。

希望本文能够帮助到你。


作者简介:一个喜欢瞎鼓捣的外科医生


via: https://www.insidentally.com/articles/000034/

作者:insidentally 编辑:wxy

本文由贡献者投稿至 Linux 中国公开投稿计划,采用 CC-BY-SA 协议 发布,Linux中国 荣誉推出

Fedora 安装之后稍作一些简单优化和配置,就可以愉快的使用了。

Fedora 是红帽系发行版中最激进的发行版。不少朋友将使用 Fedora 的人看做是红帽的小白鼠。但是 Fedora 超快的更新速度其实也为开发者提供了不少便利。本文介绍了安装 Fedora 36 后一些简单的设置,可以使你的 Fedora 更加易用一些。

1、设置软件源

Fedora 默认使用 Metalink 给出推荐的镜像列表,保证用户使用的镜像仓库足够新,并且能够尽快收到安全更新,从而提供更好的安全性。所以通常情况下使用默认配置即可,无需更改配置文件。

不过,由于 Metalink 需要从国外的 Fedora 项目服务器上获取元信息,所以对于校园内网、无国外访问等特殊情况,Metalink 并不适用,此时可以参照清华大学 tuna 小组介绍的 方法 来修改软件源。

2、更新系统

激进的发行版就要有激进的用法,因此配置好软件源后第一件事就是执行系统更新、刷新存储库列表是理所当然要做的。

你可以从 GNOME 软件中心执行此操作,或者使用终端操作。

对于终端,只需使用以下命令:

sudo dnf update

可能需要重新启动才能完成系统更新。

3、删除旧的内核以及其他不需要的旧软件包

更新系统之后多半会安装新的内核,以及会出现一些无用的依赖。重新启动系统到新的内核,确保内核运转没有问题了,就可以删除旧内核以及无用的依赖了。

使用以下命令就可以自动删除无用的依赖:

sudo dnf autoremove

Fedora 内核更新快,但是每次更新内核,旧的内核不会自动删除,占用硬盘空间。以前的教程删除旧内核都是先搜索,再移除要删除的版本,输入版本号也非常麻烦。使用以下命令即可一条命令删除旧内核:

sudo dnf remove --oldinstallonly

Fedora 一条命令删除旧内核

4、启用 RPM Fusion 软件源

安装 Fedora 时会提示你是否启用其他第三方软件源。

但是自动启用的软件源,只有英伟达驱动程序、谷歌 Chrome 和 Steam 等软件源,全套的 RPM Fusion 软件源并没有自动启用,因此还有诸如 VLC 和 MPV 等软件也不可用。

建议你还是开启全套的 RPM Fusion,国内玩家还是建议使用清华的镜像开启 RPM Fusion:

sudo yum install --nogpgcheck https://mirrors.tuna.tsinghua.edu.cn/rpmfusion/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.tuna.tsinghua.edu.cn/rpmfusion/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm

安装成功后,修改 /etc/yum.repos.d/ 目录下以 rpmfusion 开头,以 .repo 结尾的文件。具体而言,需要将文件中的 baseurl= 开头的行等号后面链接中的 http://download1.rpmfusion.org/ 替换为 https://mirrors.tuna.tsinghua.edu.cn/rpmfusion/, 替换后的文件类似如下:

[rpmfusion-free]
name=RPM Fusion for Fedora $releasever - Free
baseurl=https://mirrors.tuna.tsinghua.edu.cn/rpmfusion/free/fedora/releases/$releasever/Everything/$basearch/os/
mirrorlist=http://mirrors.rpmfusion.org/mirrorlist?repo=free-fedora-$releasever&arch=$basearch
enabled=1
metadata_expire=7d
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-fedora-$releasever

[rpmfusion-free-debuginfo]
name=RPM Fusion for Fedora $releasever - Free - Debug
mirrorlist=http://mirrors.rpmfusion.org/mirrorlist?repo=free-fedora-debug-$releasever&arch=$basearch
enabled=0
metadata_expire=7d
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-fedora-$releasever

[rpmfusion-free-source]
name=RPM Fusion for Fedora $releasever - Free - Source
baseurl=https://mirrors.tuna.tsinghua.edu.cn/rpmfusion/free/fedora/releases/$releasever/Everything/source/SRPMS/
mirrorlist=http://mirrors.rpmfusion.org/mirrorlist?repo=free-fedora-source-$releasever&arch=$basearch
enabled=0
metadata_expire=7d
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmfusion-free-fedora-$releasever

5、添加 Flathub 存储库

Fedora 默认情况下启用了 Flatpak。 但是,它是过滤后的 Flatpak 。

因此,要访问各种可用的 Flatpak 应用程序,你可以在终端中使用以下命令添加 Flathub 存储库:

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

6、配置 DNF 以更快地下载包

Fedora 可以通过多种方法增强下载包的速度。比如选择最快的镜像,可以提高包下载速度。此外,如果你的互联网连接速度足够快,则可以更改并行下载的数量以获得更快的下载。

要做这两件事,只需编辑位于 /etc/dnf/dnf.conf 的 DNF 配置文件。

将以下行附加到 /etc/dnf/dnf.conf 文件中,保存并退出:

fastestmirror=true
deltarpm=true
max_parellel_downloads=10
  • fastestmirror 为选择最快软件源,如果你手动修改了仓库里面的信息则不需要启动这个。
  • deltarpm 相当于增量下载,把软件增加的部分下载下来,和原软件包合成新软件包,类似于现在的 Android 软件更新。
  • max_parellel_downloads 设置最大并行下载数量。

7、安装后更改主机名

安装后,默认主机名设置为 fedora

因此,如果你想在安装后个性化你的系统主机名,可以使用以下命令设置新的主机名:

sudo hostnamectl set-hostname <你的主机名>

请将 <你的主机名> 替换为你的主机名(不包含 <>),建议采用 FQDN 主机名,即包括域名的完全限定主机名。

然后可以修改 /etc/hosts127.0.0.1 以及 ::1 条目后面都加上你的主机名。类似下面这样:

# Loopback entries; do not change.
# For historical reasons, localhost precedes localhost.localdomain:
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 <你的主机名>
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 <你的主机名>
# See hosts(5) for proper format and other examples:
# 192.168.1.10 foo.mydomain.org foo
# 192.168.1.13 bar.mydomain.org bar

8、安装 GNOME 优化和扩展应用程序

要调整 GNOME 的外观和感觉,你需要安装 GNOME 优化 Tweaks 和扩展管理器应用程序。 可以通过软件中心或终端使用以下命令来完成:

sudo dnf install gnome-tweaks gnome-extensions-app

然后你就可以在 GNOME Shell 扩展页面 挑选扩展了。

使用一些好用的 GNOME 扩展来增强你的桌面工作的使用体验。限于篇幅,本文就不展开 GNOME 扩展的玩法了。

9、用于电池健康管理的 TLP

TLP 是一个很好的实用程序,可帮助优化笔记本电脑的电池。该实用程序带有各种命令行选项来调整和查看有关功耗的报告。

TLP 非常好用,你只需安装它并忘记它。这不需要任何设置或设置即可使其工作。使用默认设置安装后,它就可以开箱即用。

dnf install tlp tlp-rdw

然后卸载有冲突的 power-profiles-daemon 软件包:

dnf remove power-profiles-daemon

设置开机启动 TLP 的服务:

systemctl enable tlp.service

您还应该屏蔽以下服务以避免冲突,确保 TLP 的无线设备(蓝牙、wifi等)切换选项的能够正确操作:

systemctl mask systemd-rfkill.service systemd-rfkill.socket

安装 TLP 能够极大的提高笔记本电脑电池的使用时长。

10、安装和配置主题

GNOME 桌面的美化是个见仁见智的事情。

我的美化方案是用软件源里面有的东西。

安装主题:

sudo dnf install flat-remix-theme

安装图标:

sudo dnf install numix-icon-theme-circle

安装光标:

sudo dnf install breeze-cursor-theme

然后启用“ 用户主题 User Themes ” 扩展,在扩展里面启用它。

GNOME 扩展管理

再去 GNOME 优化 Tweaks 的“外观”设置里面修改刚刚安装的主题、图标和光标,还可以修改字体。

GNOME 优化外观

11、配置 NTP 以获得准确的时间

网络时间协议(NTP)是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源做同步化,它可以提供高精准度的时间校正。

Fedora 默认使用 chrony 来进行时间同步。

可以修改 /etc/chrony.conf

pool 的值选择为下列中的其中一个即可:

# 中国 NTP 授时快速服务
pool cn.ntp.org.cn 

# 阿里云 NTP
pool ntp.aliyun.com 

# 腾讯云 NTP
pool ntp.tencent.com 

随后重启 chrony 即可。

sudo systemctl restart chronyd.service

最后就是愉快的使用 Fedora 了。


作者简介:

insidentally:一个喜欢瞎鼓捣的医学生。


via: https://www.insidentally.com/articles/000028/

作者:insidentally 编辑:wxy

本文由贡献者投稿至 Linux 中国公开投稿计划,采用 CC-BY-SA 协议 发布,Linux中国 荣誉推出