如何在 Linux 上安装设备驱动程序

了解 Linux 驱动程序的工作原理以及如何使用它们。
279 位读者喜欢这个。
How Linux got to be Linux: Test driving 1993-2003 distros

Internet Archive Book Images。由 Opensource.com 修改。CC BY-SA 4.0

对于从熟悉的 Windows 或 MacOS 系统切换到 Linux 的人来说,最令人畏惧的挑战之一是安装和配置驱动程序。这是可以理解的,因为 Windows 和 MacOS 具有使此过程用户友好的机制。例如,当您插入新的硬件时,Windows 会自动检测到它,并弹出一个窗口,询问您是否要继续安装驱动程序。您也可以从互联网上下载驱动程序,然后只需双击它来运行向导或通过设备管理器导入驱动程序。

这个过程在 Linux 操作系统上没有那么容易。原因之一是,Linux 是一个开源操作系统,因此有数百种 Linux 发行版变体。这意味着不可能创建一个适用于所有 Linux 发行版的通用操作指南。每个 Linux 操作系统处理驱动程序安装过程的方式都不同。

其次,大多数默认 Linux 驱动程序都是开源的并集成到系统中,这使得安装任何未包含的驱动程序都相当复杂,即使大多数硬件设备都可以自动检测到。第三,不同 Linux 发行版之间的许可策略各不相同。例如,Fedora 禁止包含专有的、在法律上受限制的或违反美国法律的驱动程序。而 Ubuntu 要求用户避免使用专有或封闭硬件

要了解更多关于 Linux 驱动程序工作原理的信息,我建议阅读 Linux 设备驱动程序 一书中的 设备驱动程序简介

查找驱动程序的两种方法

1. 用户界面

如果您是 Linux 新手,并且来自 Windows 或 MacOS 世界,您会很高兴知道 Linux 提供了通过类似向导的程序来查看驱动程序是否可用的方法。Ubuntu 提供了附加驱动程序选项。其他 Linux 发行版提供了帮助程序,例如 GNOME 的软件包管理器,您可以检查可用的驱动程序。

2. 命令行

如果您无法通过友好的用户界面应用程序找到驱动程序怎么办?或者您只能通过没有图形界面的 shell 访问?也许您甚至决定通过使用控制台来扩展您的技能。您有两个选择

  1. 使用存储库

    这类似于 MacOS 中的 homebrew 命令。 通过使用 yumdnfapt-get 等,您基本上是在添加存储库并更新软件包缓存。
  1. 下载、编译并自行构建

    这通常涉及直接从网站下载软件包或使用 wget 命令,并运行配置文件和 Makefile 来安装它。这超出了本文的范围,但如果您选择这条路线,您应该能够找到在线指南。

检查驱动程序是否已安装

在进一步深入研究在 Linux 中安装驱动程序之前,让我们看一些命令,这些命令将确定驱动程序是否已在您的系统上可用。

lspci 命令显示有关系统上所有 PCI 总线和设备的详细信息

$ lscpci

或使用 grep

$ lscpci | grep SOME_DRIVER_KEYWORD

例如,如果您想知道是否安装了三星驱动程序,您可以键入 lspci | grep SAMSUNG

dmesg 命令显示内核识别的所有设备驱动程序

$ dmesg

或使用 grep

$ dmesg | grep SOME_DRIVER_KEYWORD

任何被识别的驱动程序都会显示在结果中。

如果 dmesglscpi 命令未识别任何内容,请尝试以下两个命令,以查看驱动程序是否至少已加载到磁盘上

$ /sbin/lsmod

$ find /lib/modules

提示:与 lspcidmesg 一样,在任一命令后附加 | grep 以过滤结果。

如果驱动程序被这些命令识别,但未被 lscpidmesg 识别,则意味着驱动程序在磁盘上但不在内核中。在这种情况下,请使用 modprobe 命令加载模块

$ sudo modprobe MODULE_NAME

sudo 身份运行此命令,因为此模块必须以 root 用户身份安装。

添加存储库并安装

有不同的方法通过 yumdnfapt-get 添加存储库;描述所有这些方法超出了本文的范围。为了简单起见,此示例将使用 apt-get,但对于其他选项,思路是相似的。

1. 删除现有的存储库(如果存在)。

$ sudo apt-get purge NAME_OF_DRIVER*

其中 NAME_OF_DRIVER 是驱动程序的可能名称。您还可以将模式匹配添加到正则表达式以进一步过滤。

2. 将存储库添加到 repolist,这应该在驱动程序指南中指定。

$ sudo add-apt-repository REPOLIST_OF_DRIVER

其中 REPOLIST_OF_DRIVER 应从驱动程序文档中指定(例如,epel-list)。

3. 更新存储库列表。

$ sudo apt-get update

4. 安装软件包。

$ sudo apt-get install NAME_OF_DRIVER

5. 检查安装。

运行 lscpi 命令(如上所述)以检查驱动程序是否已成功安装。

更多信息

User profile image.
Bryant Jimin Son 是 GitHub 的一名 Octocat(这不是正式职称,但他喜欢这样称呼自己),GitHub 是一家因托管世界上大多数开源项目而广为人知的公司。在工作中,他正在探索不同的 git 技术、GitHub Actions、GitHub 安全等。此前,他曾是 Red Hat 的高级顾问,Red Hat 是一家以其 Linux 服务器和开源贡献而闻名的技术公司。

1 条评论

您是指固件吗?

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.