- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
现场Dell R740xd2机器使用网卡Broadcom 57412 10Gb SFP+,固件版本22.21.06.80。bnxt_en.ko内核模块是该网卡的驱动,我们默认的驱动版本为1.8.0,而固件版本22.21.06.80需要1.10.2的driver.
本文主要是记录一些操作步骤,后续出现类似驱动过旧的问题可以快速解决.
modprobe -r bnxt_en
和 modprobe bnxt_en
重新加载新的模块,可以通过 modinfo bnxt_en
查看module的信息 depmod -a
更新module加载的依赖 update-initramfs -u
来更新initramfs image。 make modules SUBDIRS=drivers/net/ethernet/broadcom/bnxt
就可以编译啦 结果同样差距太多,很多改动涉及到公共文件的接口,故放弃.
既然使用源码包可以直接在4.14内核环境上进行编译,那使用dkms(Dynamic Kernel Module Support)来在需要的时候编译安装是一个不错的选择,而且bnxt_en体量小,编译很快,安装系统时不会占用太多时间.
解压netxtreme-bnxt_en-1.10.2-224.0.157.0.tar源码包,目录结构如下:
drwxrwxr-x 4 18896 dialout 4096 Mar 29 11:59 ./
drwxr-xr-x 18 root root 4096 Mar 27 18:03 ../
lrwxrwxrwx 1 18896 dialout 27 Nov 3 04:25 bnxt_en -> bnxt_en-1.10.2-224.0.157.0//
drwxrwxr-x 5 18896 dialout 4096 Mar 30 10:01 bnxt_en-1.10.2-224.0.157.0/
lrwxrwxrwx 1 18896 dialout 20 Nov 3 04:25 bnxt_re -> bnxt_re-224.0.157.0//
drwxrwxr-x 2 18896 dialout 4096 Mar 27 19:08 bnxt_re-224.0.157.0/
-rw-r--r-- 1 root root 309 Mar 27 19:12 dkms.conf
-rw-rw-r-- 1 18896 dialout 537 Mar 27 17:18 Makefile
其中dkms.conf是我们创建并加入的,内容如下:
PACKAGE_NAME="netxtreme-bnxt_en"
PACKAGE_VERSION="1.10.2"
CLEAN="make clean"
MAKE="make"
BUILT_MODULE_NAME[0]="bnxt_en"
BUILT_MODULE_NAME[1]="bnxt_re"
BUILT_MODULE_LOCATION[0]="bnxt_en"
BUILT_MODULE_LOCATION[1]="bnxt_re"
DEST_MODULE_LOCATION[0]="/updates"
DEST_MODULE_LOCATION[1]="/updates"
AUTOINSTALL="yes"
根据dkms的要求,我们需要将源码包移到/usr/src目录下,即当前源码包路径/usr/src/netxtreme-bnxt_en-1.10.2 。
接下来就可以验证dkms是否可以使用了,以下指令:
# 可以查看当前的dkms模块的情况
dkms status
# 添加到dkms树,此时是added状态
dkms add -m netxtreme-bnxt_en -v 1.10.2
# 编译,成功是built状态
dkms build -m netxtreme-bnxt_en -v 1.10.2
# 安装,成功是installed状态
dkms install -m netxtreme-bnxt_en -v 1.10.2
# 其他指令
# 移除
dkms remove netxtreme-bnxt_en/1.10.2 --all
# 打包deb
dkms mkdeb netxtreme-bnxt_en/1.10.2
# 查看module信息
modinfo bnxt_en
# 重新生成module加载依赖关系
depmod -a
# 加载module
modprobe bnxt_en
# 移除module
modprobe -r bnxt_en
根据dkms status确定dkms安装没有问题,再通过modinfo确认module的信息没问题后,我们就可以将dkms模块打包成deb(ubuntu)了,指令 dkms mkdeb netxtreme-bnxt_en/1.10.2 ,我们可以得到一个名为netxtreme-bnxt-en-dkms_1.10.2_all.deb的deb,这样就可以在安装系统或升级阶段进行安装了.
如果制作好的deb存在问题,需要在安装前后做一些清理或加载的工作后才能工作。这个时候可以将netxtreme-bnxt-en-dkms_1.10.2_all.deb解开,具体操作如下:
# 创建工作目录
mkdir -p extract/DEBIAN && mkdir build
# 提取deb控制文件
dpkg -e netxtreme-bnxt-en-dkms_1.10.2_all.deb extract/DEBIAN
# 提取源文件
dpkg -x netxtreme-bnxt-en-dkms_1.10.2_all.deb extract/
提取后extract目录结构如下
.
├── DEBIAN
│ ├── control
│ ├── md5sums
│ ├── postinst
│ └── prerm
└── usr
├── share
│ └── netxtreme-bnxt_en-dkms
│ ├── netxtreme-bnxt_en-1.10.2.dkms.tar.gz
│ └── postinst
└── src
我们通过DEBIAN内的文件对deb安装前或安装后进行配置,常用的有preinst、postinst、prerm 和 postrm 。
制作好控制文件后使用指令 dpkg-deb -b extract/ build 在build目录下重新生成netxtreme-bnxt-en-dkms_1.10.2_all.deb软件包.
最后此篇关于broadcomEthernetBCM57412驱动更新记录(dkms方式)的文章就讲到这里了,如果你想了解更多关于broadcomEthernetBCM57412驱动更新记录(dkms方式)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我在 VirtualBox 中使用 Ubuntu 18.04,在安装 guest 添加后,我可以在 virtualbox-guest-dkms 和 virtualbox-guest-dkms-hwe
我正在尝试在我正在处理的内核模块中添加 DKMS 支持。 我已将带有静态库的内核模块源代码放置在以下目录中: /usr/src/dpx/1.0 包含以下文件: dkms.conf Makefile d
我目前正在尝试将内核模块安装到 Ubuntu。我已将模块的源文件复制到 /usr/src/applespi-0.1。 然后,我做了 sudo dkms install -m applespi -v 0
背景 我开发了一个 Linux 设备驱动程序 (ASoC)。现在我想将它作为 DKMS 包发布。目标机器是带有 Raspbian 的 Raspberry Pi。 问题 我的源代码依赖于 Linux /
创建带有内核模块的 debian 包似乎相当容易,如所述 here和其他地方。我想用 a patch 更新现有模块.我该怎么做?我真的没有要解压的源代码压缩包,但我会为 dkms 正在构建的任何内核版
我正在尝试将dkms安装到没有make或gcc的机器上。我计划仅将二进制文件推送到这些目标计算机。 在我的构建机器上,我计划使用 dkms 构建支持 dkms 的模块,然后使用 dkms mktarb
$ sudo apt install acpi-call-dkms Reading package lists... Done Building dependency tree Readi
我正在尝试使用 DKMS 为正在运行的内核 (4.4) 构 build 备树覆盖。我天真的 Makefile 如下: PWD := $(shell pwd) dtbo-y += my-awsome-o
我有一个 dkms 模块。我想删除它。我执行了 sudo dkms remove ...。但是当我更新到更新的内核时,我的包管理器尝试构建该模块但失败了,所以它再次添加了它。 如何防止这种情况发生并移
我正在尝试使用 DKMS 构建模块。我的问题是我似乎无法让 DKMS 将正确的 ARCH 传递给“make”。它继续使用我的操作系统内核的架构,即 armv7l。但是没有 map /usr/src/l
目前,Ubuntu 在其存储库中以 nvidia-current 的形式提供 195.36.24 驱动程序。这个打包的驱动程序非常酷,因为它使用 DKMS,因此您不必在新内核版本后继续重新安装驱动程序
我正在尝试让 VirtualBox 在内核 3.2.0-49-generic 的 ElementaryOS 上工作。我一直收到此错误: WARNING: The character device /d
与其说是问题不如说是文档。 这是关于失败的 apt-get install或 update与无法构建的 virtualbox 6.1.10、Ubuntu 20.04 和 virtualbox-dkms
我是一名优秀的程序员,十分优秀!