updated: 2026-10-13
与 [[PVE-显卡欺骗器与状态检测指令]]、[[PVE]] 相关
[!warning] 本页已于 2026-10-13 按实测同步 改掉了两处错的:「KSM 已禁用」不成立(从来没锁住)、「往
/etc/default/grub里 sed 重加」是已废弃的做法。 现行参数与操作口径以《家庭网络部署与运维手册》(工作目录CLAUDE.md§3.3)为准。
正常重启不会响。 2026-10-06 内核升级后走的是 systemd-reboot(软重启,待机电路不断电),日志干净收尾(Finished systemd-reboot.service → Reached target reboot.target,无 panic / watchdog / Oops),全程无蜂鸣、无硬盘灯异常。
⇒ 蜂鸣只跟着「运行期瞬死之后的冷启动」出现,普通 reboot / 计划内重启不触发。所以升级、改配置这类主动重启不用怕响,怕的是它自己先死。
运行期硬件挂起(整机瞬死,网络全断)
↓ 待机电路留下"脏电源状态"
下次冷启动 → 内存训练从脏状态开始 → 自检早期失败
→ 一长三短 + 硬盘灯不亮 + 必须拔电才能恢复
i915.enable_dc=0 生效后自 9/9 01:26 稳定运行ksmtuned 一直在跑,随时能把 KSM 打开(详见下方专节)。KSM 合并页面正是能瞬间搞坏 VM 内存的那类操作。验证办法 = 彻底关掉 ksmtuned 后观察瞬死是否消失。白牌 Intel N 系列软路由(N95/N100/N305/N355,倍控/CWWK/Topton/HUNSN 同源)在 headless + 软路由 + 核显活跃场景下:iGPU DC 省电死机 + 冷启动 1长3短 需拔电,均为社区公认问题;个体品控只影响频率。参考:https://forums.servethehome.com/index.php?threads/cwwk-topton-n95-n100-n200-n305-quad-nic-router-5-bios-error-beeps-and-black-screen-error.40333/
| 改动 | 现状 |
|---|---|
| ① i915.enable_dc=0(iGPU 修复,7/12 08:59 加,备份 grub.bak-20260712) | ✅ 2026-10-06 内核升级后仍在(三条复查全绿)。注意:现在参数是放在 /etc/default/grub.d/99-i915-enable-dc.cfg,不是主文件 |
| ② |
❌ 原记录「仍在 ✅」是错的 —— 当时只是把 run 置成 0,没有任何持久化,ksmtuned 每次开机自启、随时能把它打开。2026-10-06 才真正用 systemctl mask ksmtuned 锁死 |
| ③ VM 内存:Centos10 8G→6G、WireGuard 2G→1G | 仍在(104=6144MB、102=1024MB)✅ |
升级内容:apt full-upgrade 09:44:09–09:44:46,pve-manager 9.2.20→9.2.21、内核 7.0.14-19→7.0.14-20;10:53 重启,6 台 VM 全部 onboot 自启恢复。
三条复查全绿:/proc/cmdline 含 i915.enable_dc=0 ✅ | /sys/module/i915/parameters/enable_dc = 0 ✅ | /sys/kernel/mm/ksm/run = 0 ✅
grub-mkconfig 确实会读它:/usr/sbin/grub-mkconfig 第 163 行就是 for x in ${sysconfdir}/default/grub.d/*.cfg ; do —— 任何一次 update-grub(内核 postinst 会触发)都会把 .cfg 里的参数重新拼进 GRUB_CMDLINE_LINUX_DEFAULT。.cfg 不属于任何 deb 包,升级不碰它:同目录里的 proxmox-ve.cfg(2023-05-03)是 Proxmox 自己放的 —— 这是厂商也在用的正规位置,不是野路子。本次升级后 .cfg 的 mtime 仍是 2026-09-22 14:45:10,一动没动。/etc/default/grub 的 mtime 是 2026-10-06 09:44:48(正是升级那一分钟,且目录与文件 mtime 相同到纳秒 = 文件被替换过,不只是被读)。不准确。 实测该文件现存 5 份副本(/etc/default/grub.bak-20260712 / -20260719 / -20260909 / -20260922 + 当前)md5 完全一致(ff62eb423b734b0e14ee5c191e3cc4b0),里面从来就没有 enable_dc;且 dpkg -S /etc/default/grub 显示它不属于任何包。
⇒ 当年丢的更可能是直接写进 /boot/grub/grub.cfg 的临时改动,被 update-grub 重新生成时冲掉。结论不变(固化路径对「主文件被替换」和「grub.cfg 被重生成」两种机制都免疫),但原因要按这条记。
原状:ksmtuned.service 是 enabled + active(unit 来自 /usr/lib/systemd/system/ksmtuned.service,preset: enabled)⇒ 每次开机自己起来;/usr/sbin/ksmtuned 第 70 行就是 echo 1 > /sys/kernel/mm/ksm/run(它有权打开 KSM);而 /etc/systemd/system/ksmtuned.service.d/ 不存在、没有 mask、/etc/ksmtuned.conf 全是注释无生效设置。
run=0 仅仅因为它恰好满足自己的「停 KSM」条件:(committed + thres < total) AND (free > thres),其中 thres = total×20%、free = MemFree+Buffers+Cached。
| 量 | 当时实测值 | 触发线 | 余量 |
|---|---|---|---|
free(脚本口径) |
3666 MB | 3152 MB | 只差 513 MB |
committed(各 qemu VmRSS 合计) |
10606 MB | 12610 MB | 只差 2003 MB |
⇒ 宿主内存再紧 513 MB,ksmtuned 就会自己写 1。 6 台 VM 共分配 13 GB、宿主实有 15.7 GB,01:00 备份、VM 迁移这类时段轻松吃掉这个余量。
修复动作(2026-10-06 11:13 执行并核验):
systemctl mask --now ksmtuned
# Created symlink '/etc/systemd/system/ksmtuned.service' → '/dev/null'
核验:is-enabled = masked、is-active = inactive、ksm/run = 0、pages_shared = 0,手动 systemctl start ksmtuned 被拒(Unit ksmtuned.service is masked.)。6 台 VM 全 running、内存无变化。
mask 不用 disable:disable 只摘自启链接,依赖或 preset 可能把它拉回来;mask 指向 /dev/null,连手动启动都拒绝,包升级也扛得住。fs0: → dir → fpt -X XXXX.bin → 等待自动重启;⚠️ 刷机过程严禁断电grep enable_dc /proc/cmdline # 应看到 i915.enable_dc=0
cat /sys/module/i915/parameters/enable_dc # 应为 0;若为 -1 说明防护已失效
cat /sys/kernel/mm/ksm/run # 应为 0(ksmtuned 已 mask,正常恒为 0;若变 1 说明有东西绕过 mask)
ip route get 10.10.10.253 # 旁路由侧:应仍为 dev br-lan(查 ZeroTier 有没有抢路由)
备份文件:/etc/default/grub.bak-20260712、grub.bak-20260719、grub.bak-20260909、grub.bak-20260922(均为无参原始版)
⚠️ 旧版这里的
sed -i直接改/etc/default/grub已废弃 —— 那是会被升级替换掉的文件,参数放进去迟早丢。
# 正确做法:写进 grub.d 固化文件(幂等,升级不会碰它)
cat > /etc/default/grub.d/99-i915-enable-dc.cfg <<'EOF'
GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT i915.enable_dc=0"
EOF
update-grub # 必须执行,否则文件写了也进不了 grub.cfg
# 重启宿主后核对:grep enable_dc /proc/cmdline
# 回滚(去掉这个参数)
rm /etc/default/grub.d/99-i915-enable-dc.cfg && update-grub
enable_dc/etc/default/grub.d/,2026-10-06 内核升级实测扛住;仍建议每次升级后跑一遍「必查三条」