我在 2010 Mac Mini (4,1) 上运行 Ubuntu 10.04.1 (Lucid)。它是一个服务器,所以我希望它能够在断电后重新启动(“服务器模式”)。
在 Mac OS X 中,您可以在“节能器”系统偏好设置中勾选“断电后自动启动”。但是,检查此值似乎不会影响 Ubuntu 中的“服务器模式”行为(也就是说,它不会在断电后重新启动)。
这似乎是因为“服务器模式”值没有保留在 pram/efi 中,而是在每次启动时由 Mac OS X 设置。
我找到了有关如何为 Mac Mini 打开“服务器模式”的教程,但它不起作用:
$ setpci -s 0:1f.0 0xa4.b=0
setpci: Warning: No devices selected for `0xa4.b=
Run Code Online (Sandbox Code Playgroud)
新的 4,1 Mac Minis 发生了很多变化——仅仅在其上安装 Ubuntu 就已经是一项壮举了。也许“服务器模式”咒语也发生了变化?
我的问题是:如何在新的 4,1 Mac Mini 上启用“服务器模式”?
在一些 Mac Mini 上(我在 2014 年左右测试过)它似乎仍然是:
sudo setpci -s 00:1f.0 0xa4.b=0
Run Code Online (Sandbox Code Playgroud)
经过一些研究,我验证了这一点。我所采取的步骤,理论上也可以用于这些机器的未来迭代,是:
查找 LPC 设备:
$ lspci | grep LPC
00:1f.0 ISA bridge: Intel Corporation HM77 Express Chipset LPC Controller (rev 04)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它是 00:1f.0。
查找设备的数据表。例如,谷歌搜索“intel hm77 lpc 控制器数据表”产生了这个数据表。
现在您只需要找到正确的寄存器,根据数据表,这可能是一个挑战。在这里,我在目录中找到了“5.13.7.5 Sx-G3-Sx,处理电源故障,第 180 页”,它描述了控制位AFTERG3_EN。
在文档中搜索,我们在第 530 页表格底部的 13.8.1.3 节(通用 PM 配置寄存器 3)中找到它。由此我们看到它是 0xA4 处的 16 位寄存器的位 0。
然后可以用来构造相关的setpci命令。
因此,如果将来再次发生这种情况,请找到设备,找到数据表,构建命令,进行测试,然后举起拳头取得胜利。
但基本上不同机器上的设备和寄存器地址可能会有所不同,这是特定于LPC控制器的;所以这是您在确定使用哪个命令之前必须首先检查的硬件。
我在这篇文章中找到了答案。新的 setpci 命令是
sudo setpci -s 00:03.0 0x7b.b=19
Run Code Online (Sandbox Code Playgroud)
顺便说一句,这个设置不是“粘性”的,并且不会在重新启动后持续存在——它必须在每次启动时设置。
您可以将此命令放在 bash 脚本中并在启动时运行它。有关启动脚本的详细信息,请参见此处。
小智 7
这里有关于此事的精彩总结:http://www.macfreek.nl/memory/Reboot_Mac_running_Linux_after_power_failure
\n简而言之,高级配置和电源接口(ACPI)的配置取决于Mac使用的南桥型号。
\n为了配置电源故障时自动启动,请通过查找 LPC 设备来识别南桥型号,并创建 cron 选项卡或 systemd 服务来相应地设置位寄存器。
\n$ lspci | grep LPC\nRun Code Online (Sandbox Code Playgroud)\n对于 2006 年初的 Mac Mini / MacMini1,1 / A1176:
\n00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)\nRun Code Online (Sandbox Code Playgroud)\n对于 2009 年初的 Mac Mini / MacMini3,1 / A1283:
\n00:03.0 ISA bridge: NVIDIA Corporation MCP79 LPC Bridge (rev b2)\nRun Code Online (Sandbox Code Playgroud)\n对于 2010 年初的 Mac Mini / MacMini4,1 / A1347:
\n00:03.0 ISA bridge: NVIDIA Corporation MCP89 LPC Bridge (rev a2)\nRun Code Online (Sandbox Code Playgroud)\n对于 Mac Mini Server 2011:
\n00:1f.0 ISA bridge: Intel Corporation HM65 Express Chipset Family LPC Controller (rev 05)\nRun Code Online (Sandbox Code Playgroud)\n请注意,配置在重新启动后不会持久,因此需要在启动时进行配置(例如通过@Juan Carlos M\xc3\xa9ndez 建议的系统)。
\n要创建 systemd 启动服务,请创建一个文件etc/systemd/system/reboot_on_power_failure.service:
[Unit]\nDescription=Reboot after power failure\n\n[Service]\nType=oneshot\n\n# Please select the appropriate ISA bridge for your MAC below:\n\n# reboot register for Mac Mini with nVidia ISA bridge\n# ExecStart=setpci -s 00:03.0 0x7b.b=0x19\n\n# reboot register for Mac Mini with Intel ISA bridge\n# ExecStart=sudo setpci -s 0:1f.0 0xa4.b=0\n\n# reboot register for PPC Mac Mini (not tested myself):\n# ExecStart=echo server_mode=1 > /proc/pmu/options\n\n\n[Install]\nWantedBy=sysinit.target\nRun Code Online (Sandbox Code Playgroud)\n并运行sudo systemctl enable --now reboot_on_power_failure.service
| 归档时间: |
|
| 查看次数: |
6511 次 |
| 最近记录: |