如何在 Linux 上安装设备驱动程序
创始人
2024-03-02 01:06:37
0

学习 Linux 设备驱动如何工作,并知道如何使用它们。

对于一个熟悉 Windows 或者 MacOS 的人,想要切换到 Linux,它们都会面临一个艰巨的问题就是怎么安装和配置设备驱动。这是可以理解的,因为 Windows 和 MacOS 都有一套机制把这个过程做得非常的友好。比如说,当你插入一个新的硬件设备, Windows 能够自动检测并会弹出一个窗口询问你是否要继续驱动程序的安装。你也可以从网络上下载驱动程序,仅仅需要双击解压或者是通过设备管理器导入驱动程序即可。

而这在 Linux 操作系统上并非这么简单。第一个原因是, Linux 是一个开源的操作系统,所以有 数百种 Linux 发行版的变体。也就是说不可能做一个指南来适应所有的 Linux 发行版。因为每种 Linux 安装驱动程序的过程都有差异。

第二,大多数默认的 Linux 驱动程序也都是开源的,并被集成到了系统中,这使得安装一些并未包含的驱动程序变得非常复杂,即使已经可以检测大多数的硬件设备。第三,不同发行版的许可也有差异。例如,Fedora 禁止事项 禁止包含专有的、受法律保护,或者是违反美国法律的驱动程序。而 Ubuntu 则让用户避免使用受法律保护或闭源的硬件设备

为了更好的学习 Linux 驱动程序是如何工作的,我建议阅读 《Linux 设备驱动程序》一书中的 设备驱动程序简介

两种方式来寻找驱动程序

1、 用户界面

如果是一个刚从 Windows 或 MacOS 转过来的 Linux 新手,那你会很高兴知道 Linux 也提供了一个通过向导式的程序来查看驱动程序是否可用的方法。 Ubuntu 提供了一个 附加驱动程序 选项。其它的 Linux 发行版也提供了帮助程序,像 GNOME 的包管理器,你可以使用它来检查驱动程序是否可用。

2、 命令行

如果你通过漂亮的用户界面没有找到驱动程序,那又该怎么办呢?或许你只能通过没有任何图形界面的 shell?甚至你可以使用控制台来展现你的技能。你有两个选择:

  1. 通过一个仓库

这和 MacOS 中的 homebrew 命令行很像。通过使用 yumdnfapt-get 等等。你基本可以通过添加仓库,并更新包缓存。 2. 下载、编译,然后自己构建

这通常包括直接从网络,或通过 wget 命令下载源码包,然后运行配置和编译、安装。这超出了本文的范围,但是你可以在网络上找到很多在线指南,如果你选择的是这条路的话。

检查是否已经安装了这个驱动程序

在进一步学习安装 Linux 驱动程序之前,让我们来学习几条命令,用来检测驱动程序是否已经在你的系统上可用。

lspci 命令显示了系统上所有 PCI 总线和设备驱动程序的详细信息。

$ lscpci

或者使用 grep

$ lscpci | grep SOME_DRIVER_KEYWORD

例如,你可以使用 lspci | grep SAMSUNG 命令,如果你想知道是否安装过三星的驱动。

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

$ dmesg

或配合 grep 使用:

$ dmesg | grep SOME_DRIVER_KEYWORD

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

如果通过 dmesg 或者 lscpi 命令没有识别到任何驱动程序,尝试下这两个命令,看看驱动程序至少是否加载到硬盘。

$ /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、将仓库加入到仓库表中,这应该在驱动程序指南中有指定

$ 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 命令来检查驱动程序是否已经安装成功。


via: https://opensource.com/article/18/11/how-install-device-driver-linux

作者:Bryant Son 选题:lujun9972 译者:Jamskr 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

**解锁企业增长新范式:丹...
在数字化转型的浪潮中,企业营销与运营正面临前所未有的挑战:内容创作...
2026-01-19 19:25:28
**丹之辰AI超级员工系统...
在当今充满不确定性的商业环境中,成本控制已不再是简单的“节流”,而...
2026-01-19 19:24:58
原创 ...
文 |姑苏九歌 编辑 |姑苏九歌 Linux内核最近干了件大事,R...
2026-01-19 19:22:40
Arch Linux系统停...
IT之家 12 月 25 日消息,据外媒 Tom's Hardwa...
2026-01-19 19:21:55
东阳光药(06887.HK...
【财华社讯】东阳光药(06887.HK)公布,集团持续深化AI战略...
2026-01-15 10:18:40
苹果选择Gemini驱动今...
报道称,苹果公司确认,选定谷歌的Gemini 模型支持今年将面世的...
2026-01-13 06:45:07

热门资讯

如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Textual:为 Pytho... 快速入门使用 TextualPython 在 Linux 上有像 TkInter 这样的优秀 GUI...
硬核观察 #1245 Open... #1 OpenAI 悄然删除禁止将 ChatGPT 用于 “军事和战争” 的禁令在 1 月 10 日...
使用时间序列数据,用开源工具助... InfluxData 是一个开源的时间序列数据库平台。下面介绍了它是如何被用于边缘应用案例的。收集到...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
硬核观察 #1249 LG 洗... #1 LG 洗衣机每天上传近 4GB 的数据?一个名为 Johnie 的 LG 洗衣机用户发现,他的...
2024 年 Linux 和开... 让我们尝试预测未来吧!新的一年快乐,朋友们 ✨2024 年的钟声已经敲过,我们有必要去预见一下将塑造...