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

Ubuntu 22.04安装CUDA时NVIDIA DKMS模块因vm_flags只读成员赋值错误编译失败的解决方法咨询

Ubuntu 22.04安装CUDA时NVIDIA DKMS模块因vm_flags只读成员赋值错误编译失败的解决方法咨询

嗨,从你的描述和错误日志来看,问题的核心是CUDA安装程序自带的旧版NVIDIA驱动(520.61.05)和你当前使用的6.2.0-39内核不兼容,再加上你之前已经通过ubuntu-drivers autoinstall装了更新的535驱动,新旧驱动的DKMS模块发生冲突,最终触发了编译失败。

内核6.2及后续版本里,vma->vm_flags被改成了只读成员,但旧版NVIDIA驱动的代码还在尝试直接修改它(就是日志里那行vma->vm_flags |= VM_MIXEDMAP;),这就是导致编译报错的直接原因。

下面给你几个可行的解决步骤:

  • 第一步:清理冲突的旧版DKMS模块
    先把安装失败的520驱动DKMS模块彻底移除,同时删除残留的崩溃文件:

    sudo dkms remove nvidia/520.61.05 --all
    sudo rm /var/crash/nvidia-dkms-520.0.crash
    
  • 第二步:升级到兼容当前内核的NVIDIA驱动
    你的系统nvidia-detector已经推荐了545版本,这个版本完全适配6.2内核,直接安装即可:

    sudo apt update
    sudo apt install nvidia-driver-545 nvidia-dkms-545
    

    安装完成后重启系统,用nvidia-smi命令验证驱动是否正常加载。

  • 第三步:跳过驱动组件安装CUDA Toolkit
    现在你已经有了兼容的驱动,安装CUDA时要避免安装程序再自带旧驱动,分两种情况操作:

    1. 如果你用的是CUDA本地.run安装包:
      运行安装包时加上以下参数,跳过驱动和OpenGL组件:
      sudo sh cuda_*.run --no-opengl-libs --no-dkms --override
      
      安装过程中,当提示是否安装NVIDIA驱动时,选择No,只安装CUDA Toolkit及配套工具。
    2. 如果你用的是deb仓库安装:
      直接安装cuda-toolkit包而不是完整的cuda包,这样就不会附带驱动组件:
      sudo apt install cuda-toolkit
      
  • 第四步:验证CUDA安装
    安装完成后,把CUDA的环境变量加到你的shell配置文件里(比如~/.bashrc~/.zshrc):

    export PATH=/usr/local/cuda/bin:$PATH
    export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
    

    重载配置文件后,用nvcc -V命令验证CUDA编译器是否正常工作。

另外补充一点:你当前用的是Wayland会话,虽然这不是这次问题的直接原因,但如果后续遇到NVIDIA相关的显示异常,可以尝试切换到Xorg会话(登录界面点击齿轮图标选择),Wayland对NVIDIA的兼容性偶尔会有小问题。


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

火山引擎 最新活动