编译Linux网卡驱动

caocao2年前教程342

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 曹操wifi

各位好 又见面了 我是曹操 今天给大家带来一篇新的教程

希望各位细心学习 低调用网

uname -a

本文将阐述Linux环境下安装WIFI驱动的常规思路。网络上绝大多数教程对新手极其不友好,现在咱们就用简单一点的方式来搞定无线网卡驱动安装。本文的安装思路在Ubuntu、Debian、Deepin、CentOS、Kali等不同Linux发行版通用。无论使用Raspberry Pi、Nano Pi、Orange Pi等ARM开发板还是x86架构的设备,安装思路大体一致。

分清网卡是什么接口 主流的接口有两种:

  1. 直接插在主板上的是PCI接口(包括MINI-PCI或PCIE)。
  2. 插在USB接口上的USB无线网卡。

如果还没有购买,购买前到网卡官网搜一下,看官方提供的驱动是否兼容你的设备。MacOS(包括黑苹果)的驱动和Linux驱动不通用。需要特别注意Linux驱动对Linux内核版本或发行版、设备架构的要求,一般在驱动下载界面会有明确说明。

部分无线网卡只兼容x86架构的设备,因此对于ARM开发板,可以到对应官方提供的文档手册,查看官方系统已经兼容的无线网卡型号,官方测试过的型号通常更加稳定和易用。需要注意的是,文档中列明的型号未必和销售标识的型号一致,此情况后文有说明。

查看内核信息:

ifconfig -a
yum install net-tools -y

判断网卡是否在Linux下免驱 查看是否有wlan开头的网卡信息。例如:wlan0。当然,部分网卡也会显示为eth1或wlx803f5d150c4c、usb0之类。可以在插入网卡前执行一次ifconfig -a,插入网卡后再执行一次命令,对比前后差异。

ifconfig: command not found 部分发行版,例如CentOS 7默认已不再安装此命令,可以用ip addr替代或安装相应的net-tools软件包。

例如,CentOS下,安装net-tools:

iwconfig

net-tools包括了ifconfig、route、arp和netstat命令。

其它判断方法 也可以用iwconfig命令,查看当前无线网卡信息。

同样的,如果出现iwconfig: command not found,需要安装wireless-tools这个包。

apt-get install linux-firmware

请将apt替换为对应发行版的包管理工具。

如果上述方式已经可以获取到相应的无线网卡信息,则说明已经驱动了网卡。

到网卡官网下载驱动 根据所购买的网卡型号,到对应的网卡官网,下载驱动并按说明进行安装。只有运气非常好,才有可能遇到所购买的无线网卡兼容Linux平台的情况。否则我们可能需要先获取网卡芯片型号,然后再搜搜对应芯片的Linux驱动程序或驱动源文件。

到对应Linux发行版Wiki中查找固件 如果你的PCI无线网卡或USB WIFI无法正常工作,大概率是因为系统中缺少了对应的网卡固件。

Debian 对于Debian系统, 可以在Debian-Wiki里找到并安装USB无线网卡芯片的固件。

Ubuntu 对于Ubuntu系统, 可以通过下列命令安装所有的USB无线网卡固件:

apt install pciutils

通常情况下, 各类WiFi芯片的固件都存放在/lib/firmware目录下。

查看网卡芯片型号 无线网卡型号和芯片型号通常不一致。例如电商平台显示的型号TL-WN725N型号可能对应芯片型号rtl8188eu或rtl8188eus。不同版本的无线网卡对应的芯片型号可能不同,例如水星MW150US对应rtl8188eu,而MW150US(免驱版) V2.0对应芯片rtl8188gu。不同生产批次对应的芯片型号也有可能不同,例如2019的批次可能对应一个型号,而2020可能对应另外的型号。这是因为本身网卡芯片也在不断迭代升级,提供更多的功能,而厂商为了销售的方便,会统一制定一个网卡型号。不同品牌相似功能的产品可能用的是同一个芯片,为了准确定位当前硬件的芯片,可以通过lspci或lsusb查看。

PCI无线网卡

lspci -v
apt install usbutils
lsusb

查看网卡信息:

lspci -v|grep network

如果信息太多,可以使用lspci -v|grep network过滤一些信息,方便查找。

通常PCI无线网卡的芯片型号信息会直接显示在设备名称中。

USB无线网卡 查看网卡信息:

root@raspberrypi:~# lsusb
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 0846:9053 NetGear, Inc.
root@NanoPi-NEO2:~# lsusb
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 004: ID 0bda:8812 Realtek Semiconductor Corp. RTL8812AU 802.11a/b/g/n/ac WLAN Adapter
Bus 005 Device 012: ID 0bda:b711 Realtek Semiconductor Corp.

通常usb无线网卡显示的芯片信号信息不一定在名称中。例如:

部分已经安装了驱动程序的网卡,显示信息可能如下:

这种情况,芯片信号一目了然,就是RTL8812AU。但其实第一种情况也可以查找芯片信号,根据ID 0846:9053到相应的网卡厂商官网进行查找。

例如水星MW150US2.0:

dmesg | grep brcm

根据ID 0bda:b711,到下述网站查找型号,可以找到对应的网卡芯片型号为RTL8188GU。

USB ID查询站点:

除了水星MW150US 2.0免驱版的网卡芯片为RTL8188GU,普联TL-WN726N(免驱版)、 TL-WN725N、CF-WU815N V2也可能使用的是这款芯片。

BCM无线网卡 目前很多笔记本电脑的用的是BCM的无线网卡和蓝牙模块集成模块,上述两个命令是无法找到网卡信息的。

kali怎么使用无线网卡
sudo apt install git bc bison flex libssl-dev make raspberrypi-kernel-headers

可以看到类似上图所示内容,则型号为BCM4343A0,蓝牙和WIFI共用一个模块。

根据网卡芯片型号查找驱动 知道了网卡芯片型号后,可以搜索到的资料就很多了。只要芯片型号匹配的驱动理论上都可以用。

查找驱动除了百度、Google,还有俩常规方案:

  1. 到对应的芯片厂商官网搜索。
  2. 到万能的github搜索。

通常芯片厂商会提供部分Linux网卡驱动的源代码,需要自行编译安装,也可能只提供对应发行版的安装文件(一定要确认一下内核版本和驱动要求的版本是否匹配、架构是否匹配。x86的驱动程序是不能用于arm64架构的,反之亦然)。

这里给出部分Linux驱动地址。

rtl8188guLinux驱动: https://github.com/kelebek333/rtl8188gu

rtl8188euLinux驱动: https://github.com/lwfinger/rtl8188eu

rtl8821cuLinux驱动(ID 0bda:1a2b): https://github.com/whitebatman2/rtl8821CU

编译Linux网卡驱动 驱动编译命令一般在README.md中都已经有介绍,在此不再赘述。但是在执行编译命令前,需要先确保对应内核的linux-headers包已经安装。

安装编译工具和内核头文件 通常编译驱动也需要git、gcc、make、autoconf、build-essential等依赖,请根据需要自行研究。

如果执行make编译时提示/lib/modules/……/build does not exist,通常由于对应的内核头文件(kernel header)没有安装。

树莓派 由于Raspberry Pi具有超大的用户群,在Raspbian中安装常见驱动比其他Linux系统方便得多。

git clone https://github.com/friendlyarm/linux.git -b sunxi-4.14.y --depth 1

如果您的Raspberry Pi内核非常新,则您需要等待几个周的时间才能通过apt安装到对应的kernel-headers。或者通过获取内核源文件。

关于树莓派内核编译:

Nano Pi 内核源码:

yum install kernel-devel
apt-get install linux-headers-$(uname -r)
cd /lib/modules/`uname -r`
ln -s build ../相近版本

其中4.14应替换为uname -r对应的版本。

参考文档:%2B/zh

编译内核或模组的方法,请参考对应平台的说明文档。

ORange Pi 内核源码:

CentOS 其它发行版 编译无线网卡技巧相近内核头文件用于编译

通常下载内核的方式获取linux-headers非常耗时耗力,而某些情况无法通过包管理工具直接安装现行版本的内核linux-headers。这种情况下,可以安装与当前内核版本号非常接近的kernel headers版本,然后进入对应当前版本的modules文件夹下,通过软连接ln -s将build文件连接到相近版本,然后再编译。

[ 4496.876553] 8188gu: version magic '4.15.0-99-generic SMP mod_unload aarch64' should be '4.14.111 SMP mod_unload aarch64'
cd /usr/src/linux-headers-当前内核
vim include/linux/vermagic.h

内核模块版本和内核版本不一致的处理方法 如果在dmesg中看到类似下面的信息(version magic):

...
#define VERMAGIC_STRING                         \
    UTS_RELEASE "    "                        \
    MODULE_VERMAGIC_SMP MODULE_VERMAGIC_PREEMPT             \
    MODULE_VERMAGIC_MODULE_UNLOAD MODULE_VERMAGIC_MODVERSIONS    \
...
...
#define VERMAGIC_STRING                         \
    "4.14.111 "                            \
    MODULE_VERMAGIC_SMP MODULE_VERMAGIC_PREEMPT             \
    MODULE_VERMAGIC_MODULE_UNLOAD MODULE_VERMAGIC_MODVERSIONS    \
...
dmesg

将UTS_RELEASE修改为uname -r对应的版本号。注意后面的空格。

例如,修改前:

修改后:

修改完成后,重新编译无线网卡驱动即可。

查看驱动加载报错信息 如果编译安装了无线网卡驱动并重启后仍然无法正常使用网卡。可以通过

相关文章

Kali Linux Web渗透测试手册(第二版) - 7.8

Kali Linux Web渗透测试手册(第二版) - 7.8

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 曹操wifi 各位好 又见面了 我是曹操 今天给大家带来一篇新的教程 希望各位细心学习 低调用网 翻译来自:掣雷小组 成员...

无线网络破解工具(EWSA) v7.12.538 中文安装版

无线网络破解工具(EWSA) v7.12.538 中文安装版

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 曹操wifi 各位好 又见面了 我是曹操 今天给大家带来一篇新的教程 希望各位细心学习 低调用网 手机想要连接免费的WiF...

信息系统安全与对抗实践(北京理工大学) 中国大学mooc慕课答案100分最新版

信息系统安全与对抗实践(北京理工大学) 中国大学mooc慕课答案100分最新版

第一单元第一单元测试 本单元测试主要涵盖了如何简单避免恶意代码进入U盘建立autorun.inf文件夹、学生在与骗子的斗争过程中使用的对抗方法、骗子在施骗过程中使用的网络欺诈行为等内容。 在避免恶意代...

使用Kali Linux系统生成木马病毒并实现远程控制计算机

使用Kali Linux系统生成木马病毒并实现远程控制计算机

使用KALI生成木马病毒实现远程控制 前言 本文旨在学习使用Kali Linux系统,不得将其用于非法目的。我将详细介绍使用Kali Linux系统生成木马病毒,并利用它远程控制一台位于外网的物理计算...