Guía para Servidores Mac Mini: Encendido Automático con Linux
Como muchos ya saben, tengo en casa 2 Mac Mini 2012 con procesadores Intel que están haciendo la función de servidores, uno con Ubuntu Server y otro con Debian. Estos equipos son ideales para usarlos como servidores porque consumen muy poco, tienen buena refrigeración, son silenciosos, y se pueden actualizar en cuanto a memoria RAM y disco duro.
Por diversos motivos he tenido interrupciones de electricidad, y estaba buscando como configurar ambos Mac Mini para que, cuando detectaran que tienen corriente nuevamente, se enciendan automáticamente y esta es la solución.
Lo primero que tenemos que hacer es identificar el bus PCI del dispositivo de gestión de energía. Para ellos usamos este comando:
lspci | grep -i "LPC"
00:1f.0 ISA bridge: Intel Corporation HM77 Express Chipset LPC Controller (rev 04)
Lo que necesitamos es lo que dice 00:1f.0. El código al principio (00:1f.0) es el ID del Bus PCI.
- 0: Es el número de función.
- 00: Es el número de bus.
- 1f: Es el número de dispositivo.
Teniendo esa información ejecutamos entonces este comando:
$ sudo setpci -s 00:1f.0 0xa4.b
09
En mi caso como pueden ver me devuelve un 09, pero en otros casos debería devolver 00 o 01 según si está activado o no. El valor está en hexadecimal. Para entenderlo, debemos mirar los bits individuales (binario):
- 09 en hex es 0000 1001 en binario.
- El bit 0 (el de la derecha) es el que suele controlar esta función. Al estar en
1, significa que actualmente está configurado para permanecer apagado ("Stay Off"). - Al cambiarlo a
0, el valor pasaría de09a08(binario 0000 1000), lo cual activa el encendido automático ("Power On").
Por lo tanto, como necesito que el valor en mi caso esté en 08 debo ejecutar este comando:
$ sudo setpci -s 00:1f.0 0xa4.b=08
Y luego al volver ejecutar el comando anterior, me debe salir así:
$ sudo setpci -s 00:1f.0 0xa4.b 8
0
Como este cambio se borra al apagar el equipo por completo (especialmente si la pila CR2032 está fallando), lo ideal es crear un servicio que lo aplique en cada arranque:
$ sudo nano /etc/systemd/system/auto-poweron.service
Y le añadimos esto adentro:
[Unit]
Description=Configurar auto-encendido tras corte de luz (Mac Mini 2012)
After=multi-user.target
[Service]
Type=oneshot
ExecStart=/usr/bin/setpci -s 00:1f.0 0xa4.b=08
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Guardamos el fichero y para que el sistema reconozca el nuevo servicio y lo ejecute en cada inicio, lanza estos comandos:
$ sudo systemctl daemon-reload
$ sudo systemctl enable mac-autoon.service
Aunque la pila esté muerta, en el momento en que el Mac Mini reciba corriente (ya sea porque tú pulsaste el botón o por un remanente de energía), el kernel de Linux cargará este servicio de systemd casi de inmediato.
Esto asegura que, aunque el hardware se resetee a sus valores de fábrica, el sistema operativo vuelva a "inyectar" la instrucción de auto-encendido en el chipset Intel para la próxima vez que se vaya la luz.
Y con esto ya estaría todo. Para probar que funciona solo hay que apagar el Mac Mini, quitarle el cable de la corriente y luego de unos segundos conectarlo de nuevo..