You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

内核升级时linux-modules-extra缺失的自动安装方案咨询

内核升级时linux-modules-extra缺失的自动安装方案咨询

我完全懂你这种头疼的情况——Dell XPS 9300的无线驱动刚好依赖linux-modules-extra包里的模块,每次内核更新后如果没同步装上对应版本的包,wifi就直接罢工,还要靠蓝牙 tether 来手动修复,确实麻烦。下面给你几个靠谱的自动解决方法,按推荐程度排序:

方法一:安装通用元包(最省心)

Ubuntu提供了linux-modules-extra-generic这个元包,它会自动追踪当前内核系列,每次内核更新时,apt会自动把对应版本的linux-modules-extra-XX-generic包一起安装。只需要执行一次:

sudo apt install linux-modules-extra-generic

安装完成后,后续所有内核更新都会自动带上对应的模块包,基本一劳永逸。

方法二:APT Post-Invoke钩子

如果元包方案对你不适用,可以给apt加一个钩子,让它每次完成包操作后自动检查并安装当前内核对应的模块包:

  1. 创建钩子配置文件:
sudo nano /etc/apt/apt.conf.d/99-auto-install-modules-extra
  1. 写入以下内容:
DPkg::Post-Invoke {"apt-get -y install linux-modules-extra-$(uname -r) 2>/dev/null || true;";};
  1. 保存退出(Ctrl+O,回车,Ctrl+X)。

这个钩子会在每次apt install/apt upgrade完成后,尝试安装当前运行内核对应的linux-modules-extra包,即使安装失败也不会影响其他操作。

方法三:DPKG触发器脚本

如果需要更精准地追踪内核安装事件,可以写一个DPKG触发器脚本:

  1. 创建执行脚本:
sudo nano /usr/local/bin/auto-install-modules-extra.sh
  1. 写入脚本内容:
#!/bin/bash
# 获取所有已安装的内核版本
INSTALLED_KERNELS=$(dpkg --get-selections | grep -E 'linux-image-[0-9]+\.[0-9]+\.[0-9]+-[0-9]+-generic' | grep install | awk '{print $1}' | sed 's/linux-image-//')

# 为每个内核版本安装对应的modules-extra
for kernel in $INSTALLED_KERNELS; do
    apt-get -y install linux-modules-extra-$kernel 2>/dev/null
done
  1. 给脚本加执行权限:
sudo chmod +x /usr/local/bin/auto-install-modules-extra.sh
  1. 创建DPKG触发器配置:
sudo nano /etc/dpkg/dpkg.cfg.d/trigger-modules-extra
  1. 写入:
trigger-hook linux-image-*-generic {
    action = install;
    command = "/usr/local/bin/auto-install-modules-extra.sh";
};

这样每次有新的linux-image-*-generic包被安装时,就会自动触发脚本安装对应的模块包。

小提示

如果之后还是遇到问题,可以先检查当前内核对应的模块包是否存在:

apt-cache search linux-modules-extra-$(uname -r)

如果显示存在但没安装,那钩子或元包可能没生效,再排查一下配置即可。

备注:内容来源于stack exchange,提问作者Miguel Sá Vieira

火山引擎 最新活动