当前位置: 首页 > news >正文

Linux 5.15.189-rt87 实时内核安装 NVIDIA 显卡驱动

目录

  • 一、准备依赖与清理冲突
  • 二、为外部模块准备“内核构建树”(headers)
  • 三、禁用 nouveau
  • 四、Secure Boot 选择
  • 五、安装 NVIDIA 驱动(DKMS)
  • 六、解除 NVIDIA 黑名单
  • 七、强制开启 KMS,固定加载顺序并自动加载
  • 八、验证
  • 九、图形策略:让 NVIDIA 成为主 GPU


  • 目标:在 5.15.189-rt87 实时内核上安装 NVIDIA 535.261.03 驱动(DKMS),并在笔记本混合显卡上可选择 独显主渲染

一、准备依赖与清理冲突

sudo apt-get update
sudo apt-get install -y \build-essential bc flex bison libelf-dev dwarves \libssl-dev libncurses-dev xz-utils zstd pkg-config dkms gcc make# 如系统曾安装 APT 版 NVIDIA,先清理(避免与 .run 混装)
sudo apt-get purge -y 'linux-modules-nvidia-*' 'nvidia-*' 'libnvidia-*'
sudo apt-get autoremove --purge -y

二、为外部模块准备“内核构建树”(headers)

让 .run 能找到、并针对 当前 RT 内核 编译模块。

KVER=$(uname -r)                   # 期望: 5.15.189-rt87
KDIR=/home/li/rtkernel/linux-5.15.189   # ← 改成你的实际内核源码目录cd "$KDIR"# 确保 .config 匹配当前内核(不要多一个 -rt87)
cp /boot/config-$KVER .config
yes "" | make olddefconfig# 生成外部模块编译所需头文件
make prepare modules_prepare# UTS 版本核对(必须等于 5.15.189-rt87)
grep UTS_RELEASE include/generated/utsrelease.h# 若启用了 MODVERSIONS(Ubuntu 常见),需要 Module.symvers:
# - 若保留了当初编译该内核的构建目录,直接拷贝 Module.symvers 过来;
# - 否则在当前树快速编一次模块以生成:
make -j"$(nproc)" modules
test -f Module.symvers && echo "OK: Module.symvers 就绪"# 建立 /lib/modules/$KVER/{build,source} 链接
sudo mkdir -p /lib/modules/$KVER
sudo ln -sfn "$KDIR" /lib/modules/$KVER/build
sudo ln -sfn "$KDIR" /lib/modules/$KVER/source

三、禁用 nouveau

# 黑名单 nouveau
cat <<'EOF' | sudo tee /etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
options nouveau modeset=0
EOF
sudo update-initramfs -u
sudo reboot

四、Secure Boot 选择

  • BIOS 设为 Deployed Mode(不是 Audit)
  • 禁用 Secure Boot

五、安装 NVIDIA 驱动(DKMS)

  • 编译器最好与内核同主版本(例如 gcc-9)
cd ~/Downloads
chmod +x NVIDIA-Linux-x86_64-535.261.03.runsudo env IGNORE_PREEMPT_RT_PRESENCE=1 \./NVIDIA-Linux-x86_64-535.261.03.run \--dkms \--kernel-source-path="$KDIR"

六、解除 NVIDIA 黑名单

  • APT 包常留下 /lib/modprobe.d/blacklist-nvidia.conf 禁用 NVIDIA 模块,必须禁用此黑名单
# 检查并移除/注释黑名单
sudo grep -RniE 'blacklist\s+nvidia|alias nvidia-drm off' /lib/modprobe.d /etc/modprobe.d || true
sudo mv /lib/modprobe.d/blacklist-nvidia.conf /lib/modprobe.d/blacklist-nvidia.conf.disabled 2>/dev/null || true
sudo update-initramfs -u

七、强制开启 KMS,固定加载顺序并自动加载

# 开启 KMS
echo 'options nvidia-drm modeset=1' | sudo tee /etc/modprobe.d/nvidia-kms.conf# 固定加载顺序(避免 nvidia-drm 自卸载)
cat <<'EOF' | sudo tee /etc/modprobe.d/nvidia-softdep.conf
softdep nvidia-modeset pre: nvidia
softdep nvidia-drm     pre: nvidia-modeset
EOF# 启动时自动加载相关模块(特别是 drm/drm_kms_helper)
cat <<'EOF' | sudo tee /etc/modules-load.d/nvidia-rt.conf
drm
drm_kms_helper
nvidia
nvidia_modeset
nvidia_uvm
nvidia_drm
EOF# PREEMPT_RT 建议:线程化中断 + MSI
echo 'options nvidia NVreg_UseThreadedInterrupts=1 NVreg_EnableMSI=1' | \sudo tee /etc/modprobe.d/nvidia-rt.conf# GRUB 参数(避免 simpledrm/efifb 抢占)
sudo sed -i 's/^\(GRUB_CMDLINE_LINUX_DEFAULT="[^"]*\)"/\1 nvidia-drm.modeset=1 simpledrm.modeset=0"/' /etc/default/grub
# 如仍被早期帧缓冲占用,可再追加: video=efifb:off,vesafb:off
sudo update-initramfs -u
sudo update-grub
sudo reboot

八、验证

# 模块已加载
lsmod | egrep 'nvidia(_drm|_modeset|_uvm)?'# KMS 已开启
cat /sys/module/nvidia_drm/parameters/modeset   # 应输出 Y(root 读)# 版本匹配
modinfo -F vermagic nvidia   # 包含 5.15.189-rt87
uname -r                     # 5.15.189-rt87# DKMS 状态
dkms status | grep -i nvidia# 运行状况
nvidia-smi

九、图形策略:让 NVIDIA 成为主 GPU

sudo mkdir -p /etc/X11/xorg.conf.d
sudo tee /etc/X11/xorg.conf.d/10-nvidia-primary.conf >/dev/null <<'EOF'
Section "OutputClass"Identifier "nvidia"MatchDriver "nvidia-drm"Driver "nvidia"Option "PrimaryGPU" "yes"Option "AllowEmptyInitialConfiguration"ModulePath "/usr/lib/nvidia/xorg"ModulePath "/usr/lib/xorg/modules"
EndSectionSection "OutputClass"Identifier "intel"MatchDriver "i915"Driver "modesetting"
EndSection
EOF
sudo reboot
  • 开启 PRIME 同步
xrandr --prop | grep -E ' connected|PRIME Synchronization' -A1
# 假设内屏是 eDP-1:
xrandr --output eDP-1 --set "PRIME Synchronization" 1
http://www.dtcms.com/a/329741.html

相关文章:

  • 手机充电线贴标机如何使用
  • 内存可见性和伪共享问题
  • php7 太空船运算符
  • 在实验室连接地下车库工控机及其数据采集设备
  • 《零基础入门AI:深度学习中的视觉处理(卷积神经网络(CNN)学习)》
  • Github desktop介绍(GitHub官方推出的一款图形化桌面工具,旨在简化Git和GitHub的使用流程)
  • SpringMVC 6+源码分析(六)参数处理
  • 18. parseInt 的参数有几个
  • C语言——深入理解指针(三)
  • 【LeetCode】6. Z 字形变换
  • 美团搜索推荐统一Agent之性能优化与系统集成
  • Linux小白加油站,第二周
  • 云手机未来的发展趋势如何?
  • docker load镜像后 名字和标签异常解决
  • Centos 用户管理
  • [Oracle数据库] Oracle的表维护
  • 使用dify搭建hr简历助手-上传简历-对接飞书ai表格
  • .NET 应用程序 Linux下守护进程脚本编写
  • 集成电路学习:什么是Image Processing图像处理
  • GIS 常用的矢量与栅格分析工具
  • 机器学习——svm支持向量机
  • 向量相似度计算与Softmax概率分布对比
  • 技术速递|使用 AI Toolkit 构建基于 gpt-oss-20b 的应用程序
  • (cvpr2025) IceDiff: 高分辨率北极海冰预报
  • export default和export function的作用及export的含义
  • 2025网络准入控制系统的作用,保障企业网络安全的坚固防线
  • 使用 6 种方法将文件从 Android 无缝传输到iPad
  • 从行业场景到视觉呈现:3ds Max 与 C4D 效果图的本质分野
  • BGP笔记及综合大实验报告册
  • 比特币与区块链:去中心化的技术革命