温馨提示×

linux驱动如何回滚

小樊
71
2026-10-06 13:40:44
栏目: 智能运维

在 Linux 下“回滚驱动”通常指把内核模块(驱动)或内核本身恢复到旧版本。下面按常见场景系统说明。


一、回滚“内核模块(.ko 驱动)”

1. 使用包管理器回滚(推荐)

如果驱动是通过发行版安装的(如 linux-modules-extra、nvidia-driver 等):

Debian / Ubuntu

# 查看历史版本
apt-cache policy linux-modules-extra-$(uname -r)

# 安装指定版本
sudo apt install linux-modules-extra-5.15.0-91-generic=5.15.0-91.101

RHEL / CentOS

sudo dnf history list
sudo dnf history undo <ID>

Arch

sudo pacman -U /var/cache/pacman/pkg/xxx.tar.zst

2. 手动替换 .ko 文件

适用于自定义编译驱动:

# 查看当前驱动
lsmod | grep xxx
modinfo xxx

# 卸载
sudo rmmod xxx

# 替换旧模块
sudo cp old_xxx.ko /lib/modules/$(uname -r)/kernel/drivers/xxx/
sudo depmod -a
sudo modprobe xxx

⚠️ 注意:
内核版本必须匹配,否则无法加载。


二、回滚“整个内核(最安全方式)”

1. 查看已安装内核

# Ubuntu / Debian
dpkg -l | grep linux-image

# RHEL / CentOS
rpm -qa | grep kernel

2. 重启选择旧内核

sudo reboot

在 GRUB 中选择:

Advanced options for Ubuntu
→ Linux 5.x.x-old

3. 设为默认内核(可选)

sudo grub-set-default "Advanced options for Ubuntu>Ubuntu, with Linux 5.x.x-old"
sudo update-grub

三、使用快照回滚(服务器/生产环境推荐)

1. Btrfs / Snapper

snapper list
snapper undochange <from>..<to>

2. LVM 快照

lvcreate --snapshot --name root-snap --size 10G /dev/vg/root
# 回滚
lvconvert --merge /dev/vg/root-snap

3. 虚拟机 / 云

  • 直接使用 快照 / 镜像回滚
  • 最稳妥、零风险

四、DKMS 驱动回滚

dkms status
dkms remove xxx/1.2.3 --all
dkms install xxx/1.2.2

五、注意事项(非常重要)

✅ 回滚前:

  • 记录当前内核版本 uname -a
  • 备份重要数据
  • 确保有可启动的旧内核

❌ 不要:

  • 混用不同内核版本的 .ko
  • 强行 insmod 不兼容模块

如果你能说明:

  • 发行版(Ubuntu / CentOS / Arch)
  • 驱动类型(显卡 / 网卡 / 自定义驱动)
  • 是否生产环境

我可以给你精确的一步一步回滚命令。

0 踩