了解Linux设备驱动程序的工作原理以及如何使用它们。对于熟悉Windows或MacOS的人来说,想要转用Linux,将面临如何安装和配置设备驱动程序的难题。这是可以理解的,因为Windows和MacOS都有一套机制可以让这个过程变得非常友好。例如,当你插入一个新的硬件设备时,Windows可以自动检测到它并弹出一个窗口询问你是否要继续安装驱动程序。也可以从网上下载驱动,直接双击解压或者通过设备管理器导入驱动。而这在Linux操作系统上就没那么简单了。第一个原因是Linux是一个开源操作系统,因此Linux发行版有数百种变体。这意味着不可能制作出适用于所有Linux发行版的指南。因为每个Linux安装驱动的过程都不一样。其次,大多数默认的Linux驱动程序也是开源的并集成到系统中,这使得安装一些未包含的驱动程序非常复杂,即使大多数硬件设备已经可以检测到。第三,不同发行版的许可证也不同。例如,Fedora禁令禁止包含专有、受法律保护或违反美国法律的驱动程序。另一方面,Ubuntu让用户避免使用受法律保护或闭源的硬件设备。为了更好地了解Linux驱动程序的工作原理,我建议阅读《Linux 设备驱动程序》一书中的IntroductiontoDeviceDrivers。两种查找驱动程序的方法1.用户界面如果您是刚从Windows或MacOS切换过来的Linux新手,您会很高兴知道Linux还提供了一种通过向导式程序查看驱动程序是否可用的方法。Ubuntu提供了一个AdditionalDrivers选项。其他Linux发行版也提供帮助程序,例如GNOME的包管理器,您可以使用它来检查驱动程序是否可用。2.命令行如果你不能通过漂亮的用户界面找到驱动程序,你该怎么办?也许你只能通过shell没有任何图形界面?您甚至可以使用控制台来炫耀您的技能。您有两个选择:通过存储库这类似于MacOS中的自制命令行。通过使用yum、dnf、apt-get等,您基本上可以添加存储库并更新包缓存。下载,编译,然后自己构建这通常需要直接从网络上下载源码包,或者通过wget命令,然后运行configure并编译、安装。这超出了本文的范围,但如果这是您的路径,您可以在Web上找到大量在线指南。检查驱动程序是否已经安装在进一步安装Linux驱动程序之前,让我们学习一些命令来检查驱动程序是否已经在您的系统上可用。lspci命令显示有关系统上所有PCI总线和设备驱动程序的详细信息。$lscpci或使用grep:$lscpci|grepSOME_DRIVER_KEYWORD例如,你可以使用lspci|如果您想知道是否安装了三星驱动程序,请使用grepSAMSUNG命令。dmesg命令显示内核识别的所有驱动程序。$dmesg或与grep一起使用:$dmesg|grepSOME_DRIVER_KEYWORD任何可识别的驱动程序都将显示在结果中。如果dmesg或lscpi命令无法识别任何驱动程序,请尝试这两个命令以查看驱动程序是否至少已加载到磁盘。$/sbin/lsmod和$find/lib/modules提示:与lspci或dmesg一样,通过附加|来过滤结果grep到上面的命令。如果驱动程序被识别,但lscpi或dmesg没有找到,这意味着驱动程序已经存在于硬盘上,但没有加载到内核中。在这种情况下,您可以使用modprobe命令加载此模块。$sudomodprobeMODULE_NAME使用sudo运行此命令,因为此模块需要以root权限安装。添加存储库和安装有几种不同的方法可以通过yum、dnf和apt-get添加存储库;遍历它们中的每一个都超出了本文的范围。为简单起见,此示例将使用apt-get,但命令与其他命令类似。1.删除现有存储库(如果存在)$sudoapt-getpurgeNAME_OF_DRIVER*其中NAME_OF_DRIVER是您的驱动程序的可能名称。您还可以将模式匹配添加到正则表达式以进行进一步过滤。2.将repository添加到repository表中,应该在驱动指南中指定$sudoadd-apt-repositoryREPOLIST_OF_DRIVER其中REPOLIST_OF_DRIVER应该从驱动文档中指定(例如:epel-list)。3、更新仓库列表$sudoapt-getupdate4、安装驱动$sudoapt-getinstallNAME_OF_DRIVER5、查看安装状态上??面说了用lscpi命令查看驱动是否安装成功。
