使用 Mini PC 當 Proxmox 主機前,你一定要做的 BIOS / Kernel 設定

很多人為了省電、省空間,會選擇 Mini PC(像 Ryzen 7840HS、7940HS、Intel N100 之類)來跑:

  • Proxmox VE
  • ESXi
  • KVM
  • HomeLab
  • NAS + VM
  • 備份節點

👉 但如果你「沒有調整 BIOS 與 Kernel 參數」,
你可能會遇到:

  • ❌ 半夜自動重開機
  • ❌ 備份跑到一半整台 freeze
  • ❌ 完全沒有 kernel panic 記錄
  • ❌ journal log 直接中斷
  • ❌ 看起來像被拔電

而 log 裡 什麼都沒有

這不是錯覺。

這是 Mini PC 常見的 PCIe / C-state / Power Management 硬體層級 freeze 問題


為什麼會發生?

Mini PC 本質是「筆電級主機板」設計。

特點是:

  • Aggressive 省電策略
  • PCIe ASPM 深度省電
  • 深層 CPU C-State
  • IOMMU + PCIe 共享匯流排
  • 小型電源模組

當系統進入:

  • ✅ 高 I/O(vzdump 備份)
  • ✅ 高網路流量
  • ✅ NVMe 滿載
  • ✅ 多 VM 同時運作

就可能觸發:

PCIe Bus Hang
CPU 深層睡眠喚醒失敗
Root Complex Freeze

而這種 freeze:

  • 不會留下 kernel panic
  • 不會有 OOM
  • 不會有 MCE
  • watchdog 也來不及救

系統直接「硬死機」。


✅ Mini PC 當虛擬化主機的必要設定

請按照順序做。


🥇 Step 1:關閉 PCIe ASPM(最重要)

編輯:

/etc/default/grub

找到:

GRUB_CMDLINE_LINUX_DEFAULT="quiet"

改成:

GRUB_CMDLINE_LINUX_DEFAULT="quiet pcie_aspm=off"

然後執行:

update-grub
reboot

為什麼?

ASPM 是 PCIe 省電機制。

在桌機主機板通常沒問題。

但在 Mini PC 上:

  • 高流量 + 省電切換
  • 可能導致 PCIe Link 無法正確喚醒
  • 整條 bus freeze

這是最常見原因。


🥈 Step 2:限制 CPU C-State

如果 BIOS 有以下選項:

  • ✅ Disable Global C-State Control
  • ✅ Disable CPPC
  • ✅ Disable ASPM

請全部關閉。

如果 BIOS 沒有提供,

可以改用 kernel 參數:

processor.max_cstate=1 idle=nomwait

變成:

GRUB_CMDLINE_LINUX_DEFAULT="quiet pcie_aspm=off processor.max_cstate=1 idle=nomwait"

然後:

update-grub
reboot

為什麼?

Mini PC 為了省電會讓 CPU 進入:

  • C6
  • C10

但在高 I/O 中斷情況下:

👉 CPU 可能喚醒失敗
👉 整台 freeze


🥉 Step 3:測試性關閉 IOMMU(排除法)

如果還是會發生,

可以暫時加入:

amd_iommu=off

完整變成:

GRUB_CMDLINE_LINUX_DEFAULT="quiet pcie_aspm=off processor.max_cstate=1 idle=nomwait amd_iommu=off"

⚠️ 注意:

如果你有做 PCI Passthrough,不能關。


🔎 為什麼這些設定對 Mini PC 特別重要?

因為 Mini PC:

  • 使用筆電等級主板
  • PCIe 通道少
  • 多裝置共享 Root Port
  • 電源模組小
  • BIOS 通常未針對長時間高負載優化

當你把它當成:

24 小時虛擬化主機

你必須把它從「省電模式」改成「穩定模式」。


🔥 常見錯誤判斷

很多人會以為是:

  • ❌ igc 網卡 driver
  • ❌ NVMe 壞掉
  • ❌ RAM 問題
  • ❌ Proxmox bug

但如果 log 是「乾淨消失」,

那 90% 是 Power Management 問題。


✅ 建議 Mini PC 虛擬化標準設定

建議至少包含:

pcie_aspm=off
processor.max_cstate=1
idle=nomwait

✅ 結論

Mini PC 當 HomeLab / Proxmox 主機完全可行。

但前提是:

❗ 你要先把「筆電省電策略」關掉。

否則你會在:

  • 半夜備份
  • RAID rebuild
  • 大量 VM I/O

時遇到神秘重開機。

而 log 裡什麼都沒有。


如果你正在用 Mini PC 跑虛擬化,
建議今天就檢查你的設定。

穩定,比省 3W 電重要得多。