编译linux-modules-iwlwifi、获取含iwlxvt模块的完整源码及确定iwl backports版本的技术咨询
编译linux-modules-iwlwifi、获取含iwlxvt模块的完整源码及确定iwl backports版本的技术咨询
我来帮你一步步解决这些合规工作中碰到的棘手问题——毕竟源码不全、编译踩坑这种事确实让人头大。
一、获取包含iwlxvt的完整内核源码(适配Canonical包)
你提到apt安装的内核源码缺iwlxvt,这是因为默认的linux-source包可能没有包含Canonical添加的backports补丁。试试下面的步骤:
- 启用deb-src仓库:
编辑/etc/apt/sources.list,把对应你Ubuntu版本的deb-src行取消注释(比如Ubuntu 20.04的行是deb-src http://archive.ubuntu.com/ubuntu focal main restricted universe multiverse),然后执行:sudo apt update - 下载对应内核的完整源码:
先查看当前运行的内核版本:
然后下载该版本的内核源码包(包含所有Canonical的补丁和backports模块):uname -r
下载完成后,进入源码目录的sudo apt-get source linux-image-$(uname -r)drivers/net/wireless/intel/iwlwifi文件夹,你应该就能找到iwlxvt相关的源码文件了。
二、确定iwl backports的Core版本
如果需要手动下载backports源码,有几种可靠的方法:
- 从模块信息里提取:
查看已加载的iwlxvt模块的详细信息:
在输出的modinfo iwlxvtversion字段里,通常会包含backports的版本标识,比如类似5.15.0-78-backports的格式,其中的数字就是对应的核心版本。 - 从包版本信息获取:
查看linux-modules-iwlwifi包的版本:
输出中的apt show linux-modules-iwlwifi-$(uname -r)Version字段会包含内核版本和Ubuntu的定制标识,比如5.15.0-78.85~20.04.1,其中前半部分5.15.0-78就是对应的backports核心版本。 - 从内核日志查找:
查看系统启动时的iwl模块加载日志:
日志里可能直接显示“iwlxvt loaded with backports version X.X.X”这类信息。dmesg | grep -i "iwlxvt\|backport"
三、编译带自定义补丁的iwlwifi模块(避免全内核编译)
你提到编译整个内核会碰到zfs缺失的问题,其实完全没必要编译整个内核——只编译你需要修改的iwlwifi模块就行:
- 安装编译依赖:
sudo apt install build-essential linux-headers-$(uname -r) - 打自定义补丁:
进入之前下载的内核源码中的drivers/net/wireless/intel/iwlwifi目录,执行补丁命令:patch -p1 < /path/to/your/custom.patch - 编译模块:
用内核的构建系统编译当前目录下的所有模块(包括iwlxvt):make -C /lib/modules/$(uname -r)/build M=$(pwd) modules - 替换并安装模块:
- 先卸载正在运行的旧模块:
sudo rmmod iwlxvt sudo rmmod iwlwifi - 加载编译好的新模块:
sudo insmod ./iwlxvt.ko sudo insmod ./iwlwifi.ko - 如果需要永久替换,执行安装命令并更新initramfs:
sudo make -C /lib/modules/$(uname -r)/build M=$(pwd) modules_install sudo update-initramfs -u
- 先卸载正在运行的旧模块:
如果选择手动下载backports源码编译,步骤类似:下载对应版本的backports tarball,解压后执行make defconfig-iwlwifi只启用iwlwifi相关模块,打补丁后编译安装即可。
备注:内容来源于stack exchange,提问作者davolfman
相关产品推荐
相关产品推荐

