Недавно я поменял домашний сервер. Раньше на антресоли лежал обычный десктоп, жужжал вентиляторами и жрал электричество. А теперь стоит Banana Pi R1.
Что хорошо: электричества потребляет всего ничего. На борту двухъядерный гигагерцовый ARM, гигабайт памяти и встроенный свитч о пяти портах наружу и одном на матплату. И 2.5-дюймовый жёсткий диск.
Что плохо: подсистема питания сделана не очень надёжно, и от этого иногда винчестеру перестаёт хватать питания. Он останавливается, потом пытается снова раскрутиться, потом снова останавливается. И так пока не придёшь и не передёрнешь ему питание.
Ещё может не повезти и при включении он пойдёт проверять файловые системы. По умолчанию проверка запускается в режиме «проверять, но не чинить». Чтобы чинилось автоматически, нужно прописать в /etc/default/rcS строчку FSCKFIX=yes.
А ещё хочется видеть прогресс загрузки. Монитор каждый раз не натаскаешься, а надо знать, когда он запустил проверку диска, когда закончил, когда начали подниматься сервисы, и когда загрузка закончена.
Может быть, потом я соберусь докупить подходящий мелкий мониторчик, но это потом. А сейчас у нас есть один светодиод, контролируемый (под ядром 4.4.14-bananian) псевдофайлом /sys/devices/platform/leds/leds/bananapi:green:usr/trigger. Собственно, остаётся написать инит-скриптов, которые будут запускаться в правильные моменты и переключать режим светодиода.
| Фаза загрузки | Условия | Триггер | Поведение |
|---|---|---|---|
| Загрузчик (U-boot) Загрузка ядра |
none |
Выключен Мигает два раза светодиодами портов свитча | |
| Начало runlevel’а S | |
timer† |
Мигает с частотой 1 Гц |
| Начало проверки ФС | |
heartbeat |
Две вспышки, пауза, … |
| Конец проверки ФС | |
timer |
Мигает с частотой 1 Гц |
| Начало загрузки сервисов | |
default-on |
Светится ровно |
| Система загружена | |
none |
Выключен |
† Чтобы работал триггер timer, нужно загрузить модуль ядра ledtrig-timer. Причём обычный способ (через /etc/modules) работает позже, чем мне это нужно, поэтому ручками, командой modprobe ledtrig-timer.
В /etc/init.d складываем пять инит-скриптов по следующему шаблону:
#! /bin/sh
### BEGIN INIT INFO
# Provides: название
# условия
# Short-Description: Blink Banana Pi green LED at start of bootup
### END INIT INFO
case "$1" in
start|"")
echo триггер >/sys/devices/platform/leds/leds/bananapi:green:usr/trigger
;;
restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
stop)
# No-op
;;
status)
exit 3
;;
*)
echo "Usage: название.sh [start|stop]" >&2
exit 3
;;
esac
:
Далее выполняем для них всех update-rc.d название.sh defaults, и готово.
no subject
Date: 2016-08-13 05:18 (UTC)У оригинальной BPi есть, у M2 есть (но чисто механические, плохой контакт в разъеме, там штырковый разъем вместо micro USBпочему-то), а у R1 - нету.
Но я покупал ее в комплекте - с корпусом и блоком питания. И блок питания к ней шел на 3А.
no subject
Date: 2016-08-13 06:19 (UTC)Согласен, что жуть. Это костыль на то время, которое нужно для правильного решения проблемы.
Я покупал тоже в комплекте и у меня блок на 2А.
А как относиться к тому, что пишут про максимум 1.8А через microUSB? Это из разряда «по стандарту гарантируется только 1.8А, но при хорошей реализации можно больше»?
no subject
Date: 2016-08-13 07:06 (UTC)"По стандарту гарантируется только 1.8А, но если ты китаец, ты можешь на стандарт и забить".
no subject
Date: 2016-09-24 17:26 (UTC)Замена питательного блока на трёхамперный, похоже, помогла. Спасибо.
Мигалки, впрочем, оставлю, они прикольные.