运行 Ubuntu 的 Mac mini 断电后重启

pal*_*ogt 11 mac ubuntu

我在 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 上启用“服务器模式”?

Jas*_*n C 9

在一些 Mac Mini 上(我在 2014 年左右测试过)它似乎仍然是:

sudo setpci -s 00:1f.0 0xa4.b=0
Run Code Online (Sandbox Code Playgroud)

经过一些研究,我验证了这一点。我所采取的步骤,理论上也可以用于这些机器的未来迭代,是:

  1. 查找 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。

  2. 查找设备的数据表。例如,谷歌搜索“intel hm77 lpc 控制器数据表”产生了这个数据表

  3. 现在您只需要找到正确的寄存器,根据数据表,这可能是一个挑战。在这里,我在目录中找到了“5.13.7.5 Sx-G3-Sx,处理电源故障,第 180 页”,它描述了控制位AFTERG3_EN

  4. 在文档中搜索,我们在第 530 页表格底部的 13.8.1.3 节(通用 PM 配置寄存器 3)中找到它。由此我们看到它是 0xA4 处的 16 位寄存器的位 0。

然后可以用来构造相关的setpci命令。

因此,如果将来再次发生这种情况,请找到设备,找到数据表,构建命令,进行测试,然后举起拳头取得胜利。

但基本上不同机器上的设备和寄存器地址可能会有所不同,这是特定于LPC控制器的;所以这是您在确定使用哪个命令之前必须首先检查的硬件。


pal*_*ogt 8

我在这篇文章中找到了答案。新的 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\n
Run Code Online (Sandbox Code Playgroud)\n

对于 2006 年初的 Mac Mini / MacMini1,1 / A1176:

\n
00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)\n
Run Code Online (Sandbox Code Playgroud)\n

对于 2009 年初的 Mac Mini / MacMini3,1 / A1283:

\n
00:03.0 ISA bridge: NVIDIA Corporation MCP79 LPC Bridge (rev b2)\n
Run Code Online (Sandbox Code Playgroud)\n

对于 2010 年初的 Mac Mini / MacMini4,1 / A1347:

\n
00:03.0 ISA bridge: NVIDIA Corporation MCP89 LPC Bridge (rev a2)\n
Run Code Online (Sandbox Code Playgroud)\n

对于 Mac Mini Server 2011:

\n
00:1f.0 ISA bridge: Intel Corporation HM65 Express Chipset Family LPC Controller (rev 05)\n
Run Code Online (Sandbox Code Playgroud)\n

请注意,配置在重新启动后不会持久,因此需要在启动时进行配置(例如通过@Juan Carlos M\xc3\xa9ndez 建议的系统)。

\n

要创建 systemd 启动服务,请创建一个文件etc/systemd/system/reboot_on_power_failure.service

\n
[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\n
Run Code Online (Sandbox Code Playgroud)\n

并运行sudo systemctl enable --now reboot_on_power_failure.service

\n