Intel i915 模块参数配置与验证

太阳作者太阳
原创内容采用 CC-4.0 协议发布,转载请注明出处
Inteli915显卡

这组参数适用于已经使用 Linux i915 驱动、希望检查固件加载、帧缓存压缩或快速启动行为的场景。原配置写入 /etc/modprobe.d/i915.conf;它不是通用性能开关,硬件代际、内核和固件包都会影响结果。Linux 内核 i915 文档说明,GuC 负责部分调度和电源管理,HuC 用于媒体工作负载,具体能力取决于平台。

写入原始配置

先确认模块和内核版本:

uname -r
modinfo i915 | sed -n '1,20p'

先备份已有配置,再查看当前内核实际支持的模块参数:

if [ -f /etc/modprobe.d/i915.conf ]; then sudo cp -a /etc/modprobe.d/i915.conf /etc/modprobe.d/i915.conf.before-$(date +%Y%m%d%H%M%S); fi
modinfo -p i915 | grep -E '^(enable_guc|enable_fbc|fastboot):'

原配置内容如下;只把 modinfo -p i915 输出中存在的参数写入文件:

# 启用 GuC / HuC 固件加载
options i915 enable_guc=2
# 帧缓冲压缩 (enable_fbc)
options i915 enable_fbc=1
# 快速启动
options i915 fastboot=1

enable_guc=2 采用 i915 参数的位值语义时表示选择 HuC 加载/认证路径,不等于开启 GuC submission 调度;不要把注释里的“GuC / HuC”理解成两个功能同时打开。当前内核文档指出 GuC 还承担调度和电源管理,但参数值和支持情况随内核与平台变化,先以本机 modinfo -p i915 和内核日志为准。i915 参数源码是具体参数默认值和存在性的主源。

enable_fbc=1 请求启用 Frame Buffer Compression。它依赖显示管线、内存布局和平台支持,不能保证一定启用。fastboot=1 是 i915 的历史模块参数,只有 modinfo -p i915 明确列出它时才写入;它也不是 BIOS 的 fast boot 选项。

让参数进入启动过程

写入文件后更新 initramfs,再重启加载 i915:

sudoedit /etc/modprobe.d/i915.conf
sudo update-initramfs -u
sudo reboot

不要在正在使用图形桌面的会话中强制卸载 i915;重启是更容易回滚和观察的路径。若系统不是 Debian/Ubuntu,initramfs 更新命令由发行版决定。

验证参数是否生效

重启后分别检查模块参数、固件消息和图形设备:

sudo cat /sys/module/i915/parameters/enable_guc
sudo cat /sys/module/i915/parameters/enable_fbc
sudo cat /sys/module/i915/parameters/fastboot
sudo dmesg | grep -Ei 'i915|guc|huc|fbc|firmware'
sudo journalctl -k -b | grep -Ei 'i915|guc|huc|fbc|firmware'
lspci -k | grep -Ei -A 3 'vga|display|kernel driver'

参数文件不存在或读取值与配置不同,先检查模块是否编进内核、参数是否被 initramfs 中的旧配置覆盖,以及当前内核是否仍支持该参数。日志中的 firmware load/authentication 错误比“参数值等于 1 或 2”更能说明功能是否真正可用。

回滚与边界

遇到黑屏、图形会话异常或日志持续报错时,进入恢复模式或救援环境,恢复前面创建的备份;没有旧文件时,只删除本次新增的具体参数行,再重新生成启动用 initramfs:

sudo cp -a /etc/modprobe.d/i915.conf.before-YYYYMMDDHHMMSS /etc/modprobe.d/i915.conf
sudo update-initramfs -u

如果参数已经嵌入无法启动的 initramfs,需要从救援环境恢复文件并重建对应 initramfs;修改无关的 GRUB 启动项不等价于回滚 modprobe 配置。