Apcupsd и решение проблемы с включением

Как то отключали электричество, и я столкнулся с любопытной проблемой, бесперебойник разрядился и выключил компьютер, но при возобновление подачи электроэнергии компьютер не включился, а я ведь был на 100% уверен, что у меня все настроено правильно. Ковыряния BIOS и гугление вопроса выдало мне, что многие материнки десктопных умеют только в Restore on AC Power Loss = Last state(последние состояние), то есть, если бесперебойник аккуратно выключает компьютер, то Last State у нас Off(Выключенный). Давайте сделаем, так, что бы наш компьютер аккуратно завершил все службы, и как бы перешел в состояние halt, и когда отключиться бесперебойник(а он отключится через несколько секунд после достижения halt) у нас будет Last State равный On


Первое, что нам нужно сделать, это выставить в BIOS: Restore on AC Power Loss = Last State, теперь устанавливаем apcupsd pacman -S apcupsd и приступаем к настройке:
/etc/apcupsd/apcupsd.conf
#Имя упса, если делаете все для десктопа, то особо не важно, что вы тут понапишите
UPSNAME APC

#Тип кабеля, надеюсь у вас usb
UPSCABLE usb
#И вновь usb
UPSTYPE usb
#Это директива в принципе не нужна, если мы используем  usb
DEVICE

#Период опрос упса в секундах
#POLLTIME 60

#Расположение lock файла
LOCKFILE /var/lock/


#Директория где располагаются скрипты
SCRIPTDIR /etc/apcupsd

#Директория где будет создан flag файл, обозначающий сбой питания
PWRFAILDIR /etc/apcupsd

# NOLOGINDIR <path to nologin directory>
NOLOGINDIR /etc


#Задержка между обнаружением сбоя электропитания и отсылкой события onbattery
ONBATTERYDELAY 10


#Уровень заряда батареи при котором будет послал сигнал выключения компьютеру
BATTERYLEVEL 15

#Оставшееся время работы компьютера при котором будет инициализировано выключение
MINUTES 4


# Задержка после которой начнется выключение компьютера, 0 - отключено
TIMEOUT 0

# Таймаут об оповещение пользователей
ANNOY 300

# Задержка перед сбоем
ANNOYDELAY 60

# The condition which determines when users are prevented from
# logging in during a power failure.
# NOLOGON <string> [ disable | timeout | percent | minutes | always ]
NOLOGON disable

#задержка перед отключение бесперебойника после инициализации выключения компьютера
KILLDELAY 0
Остальные параметры не критичны. Теперь нам надо отредактировать скрипт выключения компьютера. Открываем файлик и находим там следующее
/etc/apcupsd/apccontrol
    doshutdown)
        echo "UPS ${2} initiated Shutdown Sequence" | ${WALL}
        ${SHUTDOWN} -h now "apcupsd UPS ${2} initiated shutdown"
    ;;
и меняем на:
    doshutdown)
        echo "UPS ${2} initiated Shutdown Sequence" | ${WALL}
        ${SHUTDOWN} -H now "apcupsd UPS ${2} initiated shutdown"
    ;;
Теперь при инициализации выключения компьютера, он будет переходить в режим halt.
Кстати проверить есть ли связь с бесперебойником можно командой apctest.
Так остался еще один момент, это отключение самого бесперебойника, в этом нам поможет systemd.
Создаем файл со следующимм содержанием:
/lib/systemd/system-shutdown/apcupsd.shutdown
#!/bin/sh

if [ -f /etc/apcupsd/powerfail ]; then
    echo
    echo "APCUPSD will now power off the UPS"
    echo
    /etc/apcupsd/apccontrol killpower
fi
Не забываем включить и запустить службу apcupsd systemctl enable apcupsd.service && systemctl start apcupsd.service

Вот вроде бы и все, всем безопасных выключений.

P.S.: Вдруг у вас бесперебойник использует Сom порт, и c Apcupsd ничего не вышло посмотрите в сторону nut.

Комментарии ()

    Есть вопрос или предложение пиши в Telegram @cloudsv

    Прямой эфир

    cloudsv 24 октября 2018, 00:27
    О жизни Обновление Scala Rider G4 0
    cloudsv 21 октября 2018, 23:16
    Arch Linux Памятка по основным утилитам Linux 0
    cloudsv 01 июня 2018, 01:39
    Telegram Настройка прокси mtproto для Telegram 28
    cloudsv 22 января 2018, 21:59
    Web Локальное зеркало обновлений Dr.web 0
    cloudsv 03 октября 2017, 10:55
    Web Пароль от резервной копии Bitrix 1
    cloudsv 09 июля 2017, 23:02
    Arch Linux Let's Encrypt это легко и просто 0