- Установка linux на tv box
- Введение.
- Сравнение.
- Установка ОС.
- Пример №0: Тривиальный. Настройка торентокачалок, файлохранилок.
- Пример №1: Установка системы домашней автоматизации на примере Domoticz (или majordomo\OpenHAB по вкусу).
- Пример №2: Видеонаблюдение на базе motion+motionEye.
- Пример №3: Продвинутый. Управление системой через Телеграм с помощью бота на Python.
Установка linux на tv box
Добрый день, коллеги!
В очередной раз наткнулся на споры в комментариях в отношении ТВ-бокса на Amlogic s905. Большинство комментаторов призывают дать инструкции, что нужно сделать, чтобы из китайской коробочки сделать производительный (медиа)сервер. Скажу сразу: покурить мануалы все же придется, все само не заработает. Однако, у вас будет стимул, вы будете знать что можно в итоге получить. Данная статья призвана обобщить довольно значительный опыт в рамках бытовой автоматизации и использования медиаплееров. Цель всего опуса описать неочевидные возможности устройств и ПО, примеры того, как можно из булки хлеба сделать троллейбус при помощи python и нескольких десятков пар костылей. Интересующихся прошу под кат.
Введение.
Сравнение.
System: amlogic: GNU/Linux
OS: GNU/Linux — 3.14.29 — #146 SMP PREEMPT Tue Dec 26 12:40:49 MSK 2017
Machine: aarch64 (aarch64)
Language: en_US.utf8 (charmap=«UTF-8», collate=«UTF-8»)
16:22:44 up 9 min, 1 user, load average: 0.21, 0.18, 0.10; runlevel 5 — Benchmark Run: Tue Mar 27 2018 16:22:44 — 16:50:50
0 CPUs in system; running 1 parallel copy of tests
Dhrystone 2 using register variables 7436510.3 lps (10.0 s, 7 samples)
Double-Precision Whetstone 1312.0 MWIPS (10.1 s, 7 samples)
Execl Throughput 871.6 lps (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 180951.1 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 56264.8 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 428546.6 KBps (30.0 s, 2 samples)
Pipe Throughput 437935.7 lps (10.0 s, 7 samples)
Pipe-based Context Switching 93731.8 lps (10.0 s, 7 samples)
Process Creation 3236.2 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 2428.7 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 714.0 lpm (60.1 s, 2 samples)
System Call Overhead 929656.2 lps (10.0 s, 7 samples) System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 7436510.3 637.2
Double-Precision Whetstone 55.0 1312.0 238.6
Execl Throughput 43.0 871.6 202.7
File Copy 1024 bufsize 2000 maxblocks 3960.0 180951.1 456.9
File Copy 256 bufsize 500 maxblocks 1655.0 56264.8 340.0
File Copy 4096 bufsize 8000 maxblocks 5800.0 428546.6 738.9
Pipe Throughput 12440.0 437935.7 352.0
Pipe-based Context Switching 4000.0 93731.8 234.3
Process Creation 126.0 3236.2 256.8
Shell Scripts (1 concurrent) 42.4 2428.7 572.8
Shell Scripts (8 concurrent) 6.0 714.0 1190.0
System Call Overhead 15000.0 929656.2 619.8
========
System Benchmarks Index Score 421.7
System: rpi3: GNU/Linux
OS: GNU/Linux — 4.9.35-v7+ — #1014 SMP Fri Jun 30 14:47:43 BST 2017
Machine: armv7l (unknown)
Language: en_US.utf8 (charmap=«ANSI_X3.4-1968», collate=«ANSI_X3.4-1968»)
CPU 0: ARMv7 Processor rev 4 (v7l) (0.0 bogomips) CPU 1: ARMv7 Processor rev 4 (v7l) (0.0 bogomips) CPU 2: ARMv7 Processor rev 4 (v7l) (0.0 bogomips) CPU 3: ARMv7 Processor rev 4 (v7l) (0.0 bogomips) 16:26:55 up 20:47, 1 user, load average: 0.77, 0.98, 0.57; runlevel 3
— Benchmark Run: Tue Mar 27 2018 16:26:55 — 16:56:17
4 CPUs in system; running 1 parallel copy of tests Dhrystone 2 using register variables 2179181.5 lps (10.0 s, 7 samples)
Double-Precision Whetstone 368.3 MWIPS (9.9 s, 7 samples)
Execl Throughput 463.0 lps (29.6 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 73545.4 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 20941.9 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 194029.5 KBps (30.0 s, 2 samples)
Pipe Throughput 155045.4 lps (10.0 s, 7 samples)
Pipe-based Context Switching 27361.7 lps (10.0 s, 7 samples)
Process Creation 1177.1 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 1176.1 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 317.4 lpm (60.1 s, 2 samples)
System Call Overhead 333399.9 lps (10.0 s, 7 samples) System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 2179181.5 186.7
Double-Precision Whetstone 55.0 368.3 67.0
Execl Throughput 43.0 463.0 107.7
File Copy 1024 bufsize 2000 maxblocks 3960.0 73545.4 185.7
File Copy 256 bufsize 500 maxblocks 1655.0 20941.9 126.5
File Copy 4096 bufsize 8000 maxblocks 5800.0 194029.5 334.5
Pipe Throughput 12440.0 155045.4 124.6
Pipe-based Context Switching 4000.0 27361.7 68.4
Process Creation 126.0 1177.1 93.4
Shell Scripts (1 concurrent) 42.4 1176.1 277.4
Shell Scripts (8 concurrent) 6.0 317.4 529.0
System Call Overhead 15000.0 333399.9 222.3
========
System Benchmarks Index Score 159.7 — Benchmark Run: Tue Mar 27 2018 16:56:17 — 17:25:34
4 CPUs in system; running 4 parallel copies of tests Dhrystone 2 using register variables 8690198.1 lps (10.0 s, 7 samples)
Double-Precision Whetstone 1470.5 MWIPS (10.0 s, 7 samples)
Execl Throughput 1266.4 lps (29.8 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 113576.7 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 31186.4 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 332597.5 KBps (30.0 s, 2 samples)
Pipe Throughput 616170.2 lps (10.0 s, 7 samples)
Pipe-based Context Switching 95804.8 lps (10.0 s, 7 samples)
Process Creation 2793.2 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 2657.3 lpm (60.1 s, 2 samples)
Shell Scripts (8 concurrent) 341.1 lpm (60.2 s, 2 samples)
System Call Overhead 1277095.6 lps (10.0 s, 7 samples) System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 8690198.1 744.7
Double-Precision Whetstone 55.0 1470.5 267.4
Execl Throughput 43.0 1266.4 294.5
File Copy 1024 bufsize 2000 maxblocks 3960.0 113576.7 286.8
File Copy 256 bufsize 500 maxblocks 1655.0 31186.4 188.4
File Copy 4096 bufsize 8000 maxblocks 5800.0 332597.5 573.4
Pipe Throughput 12440.0 616170.2 495.3
Pipe-based Context Switching 4000.0 95804.8 239.5
Process Creation 126.0 2793.2 221.7
Shell Scripts (1 concurrent) 42.4 2657.3 626.7
Shell Scripts (8 concurrent) 6.0 341.1 568.6
System Call Overhead 15000.0 1277095.6 851.4
========
System Benchmarks Index Score 395.2
Есть смысл заморочиться? Ну, я заморочился 🙂
Установка ОС.
Все достаточно просто. Листаем выше обозначенную тему до постов “последний стабильный образ” и переходим на яндекс.диск: на момент написания (12.2017) это здесь
Скачиваем образ системы и заливаем на sd или usb флэшку с помощью программ rufus или win32diskimager.
Важным является момент активации загрузки. Для этого нужно загрузиться в андроид, вставить созданный на предыдущем шаге накопитель и через стандартную программу обновления (update&backup) исправить загрузчик бокса, т.е. запустить с флэшки скрипт обновления (aml_autoscript.zip). Подходящий файл будет на флешке только один, вы не перепутаете его. После запуска обновления, бокс перезагрузится и, если все сделано правильно, запустится выбранный образ Linux.
Учетные данные для образа armbian (ubuntu 16.04): root, пароль: 1234.
При первом входе будет запущена процедура изменения пароля и затем создания нового (нерутового) пользователя. Когда все будет выполнено — бокс еще раз перезагрузится. После этого, рекомендую назначить для твбокса постоянный ip адрес в DHCP на вашем домашнем роутере. После чего ходить на твбокс будет удобно по ssh (я пользуюсь для этих целей putty в windows).
Итак, мы в линуксе. На этом этапе, если вы жадный IT менеджер и планируете унижать своих пользователей(или сами любите страдания), вы можете сообщить: вот полноценный компьютер с ОС Linux! В нем можно запускать офис, выполнять типовые задачи и\или использовать браузер. Можно устанавливать дополнительные программы.
Лично я не склонен считать получившуюся систему полноценной. Я бы назвал это тонким клиентом, из которого, например, можно использовать сервисы предприятия в режиме удаленного рабочего стола, vdi или через веб интерфейсы.
На этом этапе также могут возникнуть вопросы с железом, например wifi и аппаратной поддержкой декодирования видео. Уважаемый balbes150 дает нам подборку драйверов(в терминологии linux — модулей ядра) в образе (утилита armbian-config), но с большой вероятностью вы можете оказаться в пролете и они не заработают. Увы, китайцы в каждом боксе ставят разную периферию. С этой проблемой вы, вероятно, один на один, ну или может вам помогут на форуме. Гуглите.
Для дома, получившуюся систему можно установить без графического интерфейса, а все необходимые функции получать в виде веб интерфейсов. Я использую дистрибутив Ubuntu server 16.04.
Пример №0: Тривиальный. Настройка торентокачалок, файлохранилок.
Что тут можно посоветовать. Любое ПО на ваш вкус.
Для торренов могу порекомендовать transmission
Для общих папок с windows: samba.
Самбу, кстати, можно использовать для автоматического резервного копирования видео с популярных камер Xiaomi Dafang по вот этой инструкции.
Для монтирования яндекс диска используем dav2fs — чтобы превратить ваш бокс в облачное хранилище, например, для тех же видеозаписей с камеры.
Пример №1: Установка системы домашней автоматизации на примере Domoticz (или majordomo\OpenHAB по вкусу).
Про использование домотикза читайте на муське тут.
Последнее время я им не особо доволен, он стал тормозить при взаимодействии с xiaomi шлюзом. Но пока разбираться лень.
Устанавливается система с помощью скрипта: После нескольких простых вопросов у вас на порту 8080 будет запущен интерфейс Domoticz. Далее подключение и настройка устройств осуществляется через этот веб интерфейс.
Без труда можно интегрировать с умным домом xiaomi и выключателями sonoff, избавив их от гнета Китая 🙂
Выглядит в сборе примерно так:
Пример №2: Видеонаблюдение на базе motion+motionEye.
Кто не знает, motion это видеорегистратор с открытым исходным кодом. А motionEye это веб-интерфейс для настройки камер и управления архивами.
Устанавливается по инструкции (со 2го шага)
Выглядит так:
Кстати, он умеет работать с непосредственно подключенными USB web камерами. Ну, это понятно, что для любителей приключений…
RTSP потоки сильно грузят процессор, поэтому больше 2-х потоков в разрешении 720р amlogic s905x вряд ли вытянет.
У меня дома, кстати, стоят камеры Xiaomi Xiaofang с хаком. С помощью motionEye и хака можно просматривать видео (rtsp) с камер и получать изображения без помощи родного приложения MiHome. Я считаю это очень важным, т.к. стабильность и защищенность китайского облака оставляет желать лучшего.
Мой вариант использования: при открытии входной двери, датчик открытия отправляет запрос на сервер автоматизации, там python скрипт, запущенный linux лезет к камерам и получает с них фото, после чего направляет их мне через pushover по ftp или telegram.
Далее совмещайте с Яндекс-Диском и получайте облако для записей.
Пример №3: Продвинутый. Управление системой через Телеграм с помощью бота на Python.
Данный кейс требует некоторых навыков программирования и был очень удобен до последних событий, связанных с РКН. Я планировал использовать телеграм бота для отказа от белого IP дома.
На текущий момент ситуация не изменилась кардинально, но возможны проблемы со стабильностью, но скрипт бота приходится запускать с использованием прокси. Для надежности и секурности рекомендую обзавестись собственным proxy/vpn.
В основе бота лежит библиотека python-telegram-bot
Мой бот выполняет следующие функции:
- запуск linux shell команд, перенаправление вывода в телеграм
- краткая информация о состоянии устройства
- информация о состоянии домашних устройств
- получение фото с камер
В работе выглядит так: