主题
宿主机来电自动启动配置指南
主机
yi(ai-ear.cn)断电恢复后自动开机设置。 目标:AC 断电恢复供电后,主机自动上电启动,无需人工干预。
1. 主机环境
| 项目 | 信息 |
|---|---|
| 主机名 | yi |
| SSH 地址 | ssh -p 6022 zai@ai-ear.cn |
| sudo 密码 | xxx |
| 主板 | Intel X99(AMI Aptio V BIOS 5.11) |
| CPU | Intel Xeon E5-2690 v3 @ 2.60GHz |
| 系统 | Ubuntu 20.04.6 LTS (UEFI 64-bit) |
| 虚拟化 | libvirt / KVM(harbor、jumpserver) |
| 启动方式 | UEFI(OVMF) |
| 磁盘 | KINGSTON SNV2S1000G (NVMe) |
2. 当前状态诊断
bash
# 查看电源管理寄存器
sudo setpci -s 00:1f.0 0xa0.l # GEN_PMCON_1
sudo setpci -s 00:1f.0 0xa4.w # GEN_PMCON_2
# 查看 ACPI 唤醒表
cat /proc/acpi/wakeup
# 查看 UEFI 变量
ls /sys/firmware/efi/efivars/
# 查看 CMOS NVRAM
sudo xxd /dev/nvram诊断结果:
GEN_PMCON_1 (0xA0) = 0x60203a18
Bit 7 (BILD - BIOS Interface Lock Down) = 1 ← 已锁定
GEN_PMCON_2 (0xA4) = 0x1849
Bit 1 (AfterG3En - 来电自启动) = 0 ← 关闭⚠️
BILD(BIOS Interface Lock Down)已启用,操作系统无法修改 PCH 电源管理寄存器。
3. 为什么无法远程修改
经过以下尝试,均无法从 OS 侧修改来电自启动设置:
| 方法 | 结果 | 原因 |
|---|---|---|
setpci -s 00:1f.0 0xa4.w=184b | 写入无效,值未变 | BILD 锁定了 GEN_PMCON_2 寄存器 |
修改 EFI OsIndications 变量 | 写入被拒绝 | 固件未支持从 OS 修改该选项 |
修改 CMOS /dev/nvram | 扩展区域全为 0xFF | 设置存储在 SPI Flash,非传统 CMOS |
| 查找 AMI Setup EFI 变量 | 未找到 | AMI Aptio V 的 Setup 变量未暴露给 Linux |
chipsec 工具 | 未安装(pip3 不可用) | 需要编译内核模块 |
结论:必须进入 BIOS 界面修改。
4. BIOS 设置步骤(需要物理接触 / KVM / VNC)
4.1 进入 BIOS
bash
# 方法一:设置下次启动进入 BIOS Setup(如果固件支持)
sudo systemctl reboot --firmware-setup
# 方法二:直接重启后按 DEL 键
sudo reboot
# 开机时连续按 DEL(Delete)键进入 BIOS如果有 VNC / 远程 KVM 设备(如 PiKVM、BMC),可通过它们远程操作 BIOS。
4.2 找到来电自启动选项
进入 BIOS 后,路径通常为:
Advanced → APM Configuration → Restore on AC Power Loss不同主板可能的路径:
| 路径 | 说明 |
|---|---|
Advanced → APM → Restore on AC Power Loss | 最常见(AMI BIOS) |
Power → AC Power Loss Restart | 部分主板 |
Chipset → PCH-IO Configuration → State After G3 | Intel 平台 |
Advanced → ACPI Settings → Power On After Power Failure | 少数主板 |
4.3 设置选项
| 值 | 效果 | 选择 |
|---|---|---|
| Power Off | 断电恢复后保持关机 | ❌ 当前设置 |
| Power On | 断电恢复后自动开机 | ✅ 选择此项 |
| Last State | 恢复到断电前的状态 | 备选方案 |
4.4 保存退出
按 F10 → 选择 Yes 保存并退出 → 主机自动重启。
5. 验证设置
重启后 SSH 进入主机验证:
bash
# 验证 GEN_PMCON_2 寄存器 bit 1 是否变为 1
sudo setpci -s 00:1f.0 0xa4.w
# 期望结果:最后一位为奇数(bit 1 = 1)
# 例如:184b 表示 bit 0=1, bit 1=1 → 来电自启动已开启 ✅
# 手动验证(可选):
# 1. SSH 关闭主机:sudo shutdown -h now
# 2. 物理拔掉电源线,等待 10 秒
# 3. 重新插上电源
# 4. 观察主机是否自动启动6. 虚拟机自动启动确认
主机来电自启动后,libvirt 虚拟机也会自动启动(已配置 autostart):
bash
# 确认虚拟机 autostart 状态
virsh list --all
# 应该看到 harbor 和 jumpserver 都已启动
# 查看 autostart 配置
ls -la /etc/libvirt/qemu/autostart/
# 应包含 harbor.xml 和 jumpserver.xml 的符号链接
# 如果虚拟机未设置 autostart,执行:
virsh autostart harbor
virsh autostart jumpserver7. 补充:通过 GRUB 设置固件启动(备选方案)
如果 BIOS 不支持直接设置来电自启动,可以通过 GRUB 在系统启动时自动执行一些初始化操作:
bash
# /etc/default/grub 中添加内核参数确保 ACPI 正常工作
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi=force"
# 更新 GRUB
sudo update-grub这不能替代 BIOS 的来电自启动设置,但可以确保系统的 ACPI 电源管理功能正常工作。
8. 相关文件
| 文件 | 说明 |
|---|---|
/etc/libvirt/qemu/harbor.xml | harbor 虚拟机配置 |
/etc/libvirt/qemu/jumpserver.xml | jumpserver 虚拟机配置 |
/etc/libvirt/qemu/autostart/ | 虚拟机自启动符号链接 |
/etc/libvirt/storage/images.xml | 存储池配置 |
/sys/firmware/efi/efivars/ | UEFI 变量 |
/dev/nvram | CMOS NVRAM 设备 |