You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu Cinnamon 23.04执行apt安装时遭遇xtrx-dkms模块编译失败问题

Ubuntu Cinnamon 23.04执行apt安装时遭遇xtrx-dkms模块编译失败问题

看起来你在Ubuntu Cinnamon 23.04上执行sudo apt install gcc时,意外触发了xtrx-dkms模块的编译失败,导致apt命令报错。我帮你分析下问题根源,再给出可行的解决办法:

问题根源分析

从你提供的make.log日志可以看出两个核心问题:

  1. 内核API变更:Linux内核6.3+版本中,struct vm_area_struct的vm_flags成员变为只读,而xtrx-dkms的旧版本代码(0.0.1+git20190320.5ae3a3e-3.2)还在直接修改这个变量(比如vma->vm_flags |= VM_LOCKED;),这直接导致编译报错。
  2. 多内核版本冲突:你的系统同时存在6.2.0-20-generic和6.3.2-060302-generic两个内核,dkms尝试为两个内核都编译模块,但新内核不兼容旧驱动代码。

具体解决办法

根据你的需求,有三种方案可选:

方案一:快速恢复apt正常状态(临时跳过问题)

如果暂时不需要xtrx模块,可以先强制跳过有问题的包配置,让apt回到正常状态:

sudo dpkg --configure -a --force-confdef --force-confold

方案二:彻底卸载xtrx-dkms(推荐,若不需要该模块)

如果确认用不到xtrx相关硬件,直接卸载这个有问题的dkms包:

sudo apt remove --purge xtrx-dkms
sudo apt autoremove

执行完这两条命令后,再运行sudo apt update && sudo apt upgrade就能正常操作了。

方案三:修复xtrx-dkms编译问题(若需要保留模块)

如果你确实需要使用xtrx硬件,得手动修改驱动代码适配新内核:

  1. 先获取xtrx-dkms的源码包:
sudo apt source xtrx-dkms
cd xtrx-0.0.1+git20190320.5ae3a3e
  1. 编辑build/xtrx.c文件,找到所有直接修改vm_flags的行(日志里标记的1075、1090、1115行),替换为内核推荐的API:
    • 将vma->vm_flags |= VM_LOCKED;替换为:
      vm_set_page_prot(vma, vm_get_page_prot(vma->vm_flags | VM_LOCKED));
      
    • 将vma->vm_flags |= VM_IO;替换为:
      vm_set_page_prot(vma, vm_get_page_prot(vma->vm_flags | VM_IO));
      
  2. 重新编译并安装修改后的dkms模块:
sudo dkms build -m xtrx -v 0.0.1+git20190320.5ae3a3e-3.2
sudo dkms install -m xtrx -v 0.0.1+git20190320.5ae3a3e-3.2
  1. 最后完成系统包配置:
sudo dpkg --configure -a

附:你执行命令时的完整错误日志

执行sudo apt install gcc后的输出:

Reading package lists... Done

Building dependency tree... Done

Reading state information... Done

gcc is already the newest version (4:12.2.0-3ubuntu1).

gcc set to manually installed.

The following packages were automatically installed and are no longer required:

fortune-mod fortunes-min gir1.2-gexiv2-0.10 librecode0 python3-configobj

Use 'sudo apt autoremove' to remove them.

0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.

1 not fully installed or removed.

After this operation, 0 B of additional disk space will be used.

Do you want to continue? [Y/n] y

Setting up xtrx-dkms (0.0.1+git20190320.5ae3a3e-3.2) ...

Removing old xtrx-0.0.1+git20190320.5ae3a3e-3.2 DKMS files...

Module xtrx-0.0.1+git20190320.5ae3a3e-3.2 for kernel 6.2.0-20-generic (x86_64).

Before uninstall, this module version was ACTIVE on this kernel.

xtrx.ko:

- Uninstallation

- Deleting from: /lib/modules/6.2.0-20-generic/updates/dkms/

- Original module

- No original module was found for this module on this kernel.

- Use the dkms install command to reinstall any previous module version.

depmod...

Deleting module xtrx-0.0.1+git20190320.5ae3a3e-3.2 completely from the DKMS tree.

Loading new xtrx-0.0.1+git20190320.5ae3a3e-3.2 DKMS files...

Building for 6.2.0-20-generic 6.3.2-060302-generic

Building initial module for 6.2.0-20-generic

Done.

xtrx.ko:

Running module version sanity check.

- Original module

- No original module exists within this kernel

- Installation

- Installing to /lib/modules/6.2.0-20-generic/updates/dkms/

depmod...

Building initial module for 6.3.2-060302-generic

ERROR (dkms apport): kernel package linux-headers-6.3.2-060302-generic is not supported

Error! Bad return status for module build on kernel: 6.3.2-060302-generic (x86_64)

Consult /var/lib/dkms/xtrx/0.0.1+git20190320.5ae3a3e-3.2/build/make.log for more information.

dpkg: error processing package xtrx-dkms (--configure):
 installed xtrx-dkms package post-installation script subprocess returned error exit status 10

Errors were encountered while processing:
 xtrx-dkms

E: Sub-process /usr/bin/dpkg returned an error code (1)

/var/lib/dkms/xtrx/0.0.1+git20190320.5ae3a3e-3.2/build/make.log内容:

DKMS make.log for xtrx-0.0.1+git20190320.5ae3a3e-3.2 for kernel 6.3.2-060302-generic (x86_64)

Mo 29 Mai 2023 12:56:35 CEST

make: Entering directory '/usr/src/linux-headers-6.3.2-060302-generic'

warning: the compiler differs from the one used to build the kernel
The kernel was built by: x86_64-linux-gnu-gcc-12 (Ubuntu 12.2.0-17ubuntu1) 12.2.0
You are using:           gcc-12 (Ubuntu 12.2.0-17ubuntu1) 12.2.0

CC [M]  /var/lib/dkms/xtrx/0.0.1+git20190320.5ae3a3e-3.2/build/xtrx.o
/var/lib/dkms/xtrx/0.0.1+git20190320.5ae3a3e-3.2/build/xtrx.c: In function ‘xtrxfd_mmap’:
/var/lib/dkms/xtrx/0.0.1+git20190320.5ae3a3e-3.2/build/xtrx.c:1075:31: error: assignment of read-only member ‘vm_flags’
1075 |                 vma->vm_flags |= VM_LOCKED;
|                               ^~
/var/lib/dkms/xtrx/0.0.1+git20190320.5ae3a3e-3.2/build/xtrx.c:1090:31: error: assignment of read-only member ‘vm_flags’
1090 |                 vma->vm_flags |= VM_IO;
|                               ^~
/var/lib/dkms/xtrx/0.0.1+git20190320.5ae3a3e-3.2/build/xtrx.c:1115:31: error: assignment of read-only member ‘vm_flags’
1115 |                 vma->vm_flags |= VM_LOCKED;
|                               ^~
make[1]: *** [scripts/Makefile.build:252: /var/lib/dkms/xtrx/0.0.1+git20190320.5ae3a3e-3.2/build/xtrx.o] Error 1
make: *** [Makefile:2031: /var/lib/dkms/xtrx/0.0.1+git20190320.5ae3a3e-3.2/build] Error 2
make: Leaving directory '/usr/src/linux-headers-6.3.2-060302-generic'

备注:内容来源于stack exchange,提问作者Longlost

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 14:05:30