truenas sclae 25.04版本 安装SR-IOV 显卡驱动
非常高兴听到您成功安装了 i915 驱动!根据您的反馈,我将核心步骤整理成一个完整的总结,包含您提到的关键点和解决方案,供未来参考或分享给其他 TrueNAS Scale 用户。以下是总结:
在 TrueNAS Scale 上成功安装 i915 SR-IOV 驱动的完整步骤总结
以下是在 TrueNAS Scale 上安装 i915-sriov-dkms 驱动并解决相关问题的详细步骤。TrueNAS Scale 的特殊文件系统和配置需要一些额外处理,与普通 Linux 系统有所不同。
核心点 1:处理只读文件系统
问题:TrueNAS Scale 默认将根文件系统挂载为只读,导致无法写入或安装文件。
解决方法:
mount -o remount,rw /
说明:此命令将根文件系统临时改为读写模式,允许后续操作。每次重启后可能需要重新执行。
核心点 2:修复缺少 .config 文件的错误
问题:编译 i915-sriov-dkms 时提示缺少 /lib/modules/
解决方法:
查看 /usr/src/ 下可用的头文件目录:ls -l /usr/src/
示例输出可能包含:
drwxr-xr-x 6 root root 9 Mar 18 14:57 linux-headers-truenas-production-amd64
创建符号链接到当前内核的 build 目录:
ln -sf /usr/src/linux-headers-truenas-production-amd64 /lib/modules/6.12.15-production+truenas/build
注意:将 6.12.15-production+truenas 替换为您当前的内核版本(通过 uname -r 获取)。
说明:TrueNAS Scale 的头文件默认位于 /usr/src/,需要手动链接到 /lib/modules/
核心点 3:安装必要的构建工具
问题:缺少编译工具会导致 DKMS 无法构建模块。
解决方法:
apt install build-essential dkms git sysfsutils -y
注意:如果使用 Zsh 壳,可能会报错“build-* not found”。需要切换到 Bash 壳:
说明:
build-essential 包含编译器(如 gcc)和相关工具。
dkms 用于动态管理内核模块。
git 用于获取源代码(可选)。
sysfsutils 提供系统文件系统工具(可选)。
Zsh 转 Bash:TrueNAS Scale 默认可能使用 Zsh,需切换到 Bash 以正确解析通配符。
核心点 4:搜索并安装头文件
问题:需要确保与当前内核匹配的头文件已安装。
解决方法:
搜索可用头文件:
apt search linux-headers
示例输出可能包含:
linux-headers-truenas-production-amd64
安装匹配的头文件(以生产版本为例):
apt install linux-headers-truenas-production-amd64
验证安装:
dpkg -l | grep linux-headers
说明:如果 apt search 未找到所需版本,可尝试从 TrueNAS 或 Debian 源手动下载 .deb 文件。
核心点 5:下载并安装 i915 SR-IOV DKMS 包
解决方法:
下载 .deb 文件:
wget -O /tmp/i915-sriov-dkms_2025.02.03_amd64.deb "https://github.com/strongtz/i915-sriov-dkms/releases/download/2025.02.03/i915-sriov-dkms_2025.02.03_amd64.deb"
安装包:
dpkg -i /tmp/i915-sriov-dkms_2025.02.03_amd64.deb
说明:从 GitHub 下载特定版本的 i915 SR-IOV 驱动,确保与您的内核兼容。安装后,DKMS 会自动构建模块。
核心点 6:更新内核参数并应用 GRUB 配置
问题:i915 驱动需要特定的内核参数启用 SR-IOV 和 GuC 支持。
解决方法:
运行 midclt 命令设置参数,这是truenas 关键
你需要将 i915.enable_guc=3 module_blacklist=xe 添加到 kernel_extra_options 中。运行以下命令:
midclt call system.advanced.update '{"kernel_extra_options":
"i915.enable_guc=3 module_blacklist=xe"}'
这条命令会将参数设置为 i915.enable_guc=3 和 module_blacklist=xe,并存储在 TrueNAS 的配置数据库中。
之前方法 重启后会失效 编辑 GRUB 配置文件:
nano /etc/default/grub.d/truenas.cfg
修改或添加以下参数到 GRUB_CMDLINE_LINUX_DEFAULT:
GRUB_CMDLINE_LINUX_DEFAULT="i915.enable_guc=3 module_blacklist=xe"
i915.enable_guc=3:启用 GuC 和 HuC 固件支持。
module_blacklist=xe:禁用 Xe 驱动(避免与 i915 冲突)。
更新 GRUB:
grub-mkconfig -o /boot/grub/grub.cfg
重启系统:
reboot
说明:TrueNAS Scale 的 GRUB 配置存储在 /etc/default/grub.d/truenas.cfg 中,更新后需重新生成 GRUB 文件。
验证安装
重启后,检查 i915 驱动是否加载:
lsmod | grep i915
dmesg | grep i915
如果 lsmod 显示 i915 已加载,且 dmesg 没有初始化错误(如之前的 MMIO 失败),则安装成功。
总结
在 TrueNAS Scale 上安装 i915 SR-IOV 驱动需要解决只读文件系统、头文件链接、构建工具和内核参数等问题。关键步骤包括:
挂载读写:mount -o remount,rw /
链接头文件:ln -sf /usr/src/
安装工具:apt install build-essential dkms git sysfsutils -y(Zsh 下需切换到 Bash)
查找头文件:apt search linux-headers 并安装
安装驱动:下载并用 dpkg -i 安装 .deb 文件
更新 GRUB:调整内核参数并更新 GRUB 配置