Мотивация и размышления
В течение полугода после покупки я определился с тем, что мне нужно от телевизора. Из-за того, что он используется, как монитор для моего ПК, то никаких смарт-функций мне не нужно. От телевизора требуется отображать картинку достаточно хорошо на мой вкус.
Но! В телевизоре есть железо и оно работает, но зачем и почему — непонятно. Как его превратить в то, что будет работать для меня, но не в виде красивых картинок и видео, которые я могу открыть с ПК.
После многочисленных поисков я не нашёл ничего, кроме подключения миниПК всех размеров и форм-факторов (у меня уже так и есть), смены лаунчера (и это тоже есть) или просто удаления нескольких программ.
Нет, значит сделаем сами
Подготовительный этап
-
Скачивание программ. Их не так много. Основные программы:
-
FLauncher;
-
Shizuku;
-
Termux;
-
Termux:x11;
-
adb (на ПК. Его не просто скачать, а установить!!!).
-
Всё скачиваем с официальных источников (чаще Git-платформы)! Если используете форки, клоны или аналоги, то степень риска возрастает.
-
Оборудование.
-
ПК;
-
телевизор;
-
мышь;
-
клавиатура. Тут я отдельно указал периферию, так как она нужна для телевизора. Оборудование просто должно быть.
-
Тут первое действие, которое мы делаем. Сбрасываем телевизор до заводских настроек и проверяем, как он выглядит и что на нём есть. Может вам уже и так нравится и дальше не нужно? Если нужно, то получаем то, что больше нам ничего не помешает в виде недостатка памяти, как физической, так и оперативной, багов и лагов из-за программ, и идём дальше
Этап подключения
На этом этапе мы просто первый раз дружим системы между собой и учимся сами, как их друг к другу подключить. Устанавливаем базовые приложения.
Здесь важно понять, как подключиться, что делать и какие этапы. Может потребоваться подключиться к ПК не 1 и не 10 раз по adb и вы должны знать, как это делается.
Нам нужно:
-
Включить на стороне ТВ отладку по USB.
-
Подключиться к ТВ по adb.
-
adb connect <IP_АДРЕС_ТВ_ПО_КАБЕЛЮ>:5555
Тут важно понимать, что ТВ, скорее всего, спросит разрешение. Нужно разрешить и не забыть поставить галку «Всегда разрешать»
-
-
Запускаем установку программ с ПК на ТВ.
-
adb install <название_файла.apk>
Тут ждём заветную строчку Success для каждого файла.
-
-
Запустить Shizuku.
-
adb shell /data/app/~~OUkzf_...много символов...-jv/arm/libshizuku.so
* Эту команду берём из самого Shizuku, который установлен на ТВ. Там есть отдельный пункт для отладки по USB. Тут ждём несколько строчек вывода:
info: starter begin info: killing old process... info: apk path is /data/app/~~OUkzf_...много символов...-jv/==/base.apk info: starting server... info: shizuku_server pid is 17058 info: shizuku_starter exit with 0 -
Этап работы с новой системой
На этом этапе мы делаем все необходимые настройки, чтобы система, которую мы будем использовать, работала стабильно и запускалась сама.
-
Устанавливаем нужные пакеты в Termux
-
pkg install x11-repo root-repo -y -
pkg update && pkg upgrade -y -
pkg termux-x11-nightly openbox micro st fastfetch openssh -y
-
-
Тестируем запуск системы, которая у нас получилась
-
termux-x11 :1 & -
export DISPLAY=:1 -
openbox-session &
Тут отдельно отмечу, что при вводе 1 и 3 команды я нажимал Ctrl+C, чтоб ввести следующую команду. Есть предупреждения, но я на них не обращаю внимание.
-
-
Открываем Termux:x11 и видим чёрный экран. Если нажимаем на правую кнопку мыши, то видим контекстное меню. Это лаунчер Openbox.
-
После того как получили «рабочий стол», можно немного настроить. Идём обратно в Termux.
-
mkdir -p ~/.config/openbox -
cp /data/data/com.termux/files/usr/etc/xdg/openbox/* ~/.config/openbox/ -
micro ~/.config/openbox/menu.xml
Тут перед нами конфиг, в который мы добавляем вот это:
<item label="Terminal"> <action name="Execute"> <command>st</command> </action></item>Сохраняем через Ctrl+S и выходим — Ctrl+Q
-
openbox --reconfigure
-
-
Запустим ssh-службу для доступа к машине извне (при следующей перезагрузке ТВ или отключении от сети).
-
micro ~/.config/openbox/autostart
Начало не трогаем, а в самый конец на новой строке пишем
sshd &Сохраняем через Ctrl+S и выходим — Ctrl+Q
Далее задаём пароль. Любой. Важно! При вводе пароля вы не видите символов
-
passwd
После задания пароля запускаем сервис здесь и сейчас без ожидания выключения
-
sshd
-
-
Настроим автозапуск нашей системы при включении ТВ с нуля (когда от сети отключаете, а не с пульта выключаете)
-
mkdir -p ~/.termux/boot -
micro ~/.termux/boot/start-x11.sh
Это пока пустой файл, в который вы вставляете следующее:
#!/data/data/com.termux/files/usr/bin/sh#Разрешаем просыпаться и чистим старые сессии, если они есть, а потом запускаем новую.termux-wake-lockrm -f /tmp/.X11-unix/X1pkill -f termux.x11termux-x11 :1 &sleep 3#Запускаем графикуexport DISPLAY=:1openbox-session &sleep 2#Делаем вывод автоматически на передний план, чтобы сразу пользоваться.am start -n com.termux.x11/com.termux.x11.MainActivityСохраняем через Ctrl+S и выходим — Ctrl+Q
-
chmod +x ~/.termux/boot/start-x11.sh
-
-
Теперь добавляем чуть-чуть магии в работу всей системы автоматическим запуском того, что запускаться автоматически не должно.
-
pkg install android-tools -y -
micro ~/.config/openbox/autostart
Спускаемся на 2 строки ниже последней нашей записи и пишем следующее
adb connect 127.0.0.1:5555adb -s 127.0.0.1:5555 shell /data/app/~~OUkzf_...много символов...-jv/arm/libshizuku.so* Эту команду берём из самого Shizuku, который установлен на ТВ. Там есть отдельный пункт для отладки по USB.
-
Теперь у нас есть рабочая система, которая автоматически запускается, поднимает отладку и даёт нам возможность спокойно работать с Android без боязни его уничтожить. И мы не боимся, что пропадёт что-то важное из программ, так как все важные программы мы помним (4 штуки из первого раздела).
Тут стоит отдельно остановиться и отметить, что на данный момент все изменения, которые мы сделали, легко обратимы. Это была самая простая часть.
Перед уходом в следующую часть выключаем телевизор из розетки на 5-10 секунд. Потом включаем и ждём. Примерно через минуту перед вами должен быть чёрный экран с курсором. Нажимаете на правую кнопку мыши и появляется контекстное меню. Нажимаете на ST и открывается окно терминала.
Если что-то работает не так. Возвращаемся к первому пункту всей статьи и проверяем.
Отправляем старую систему отдыхать.
Теперь нам нужно определиться, что лишнее в нашем телевизоре, а что должно остаться. Эти программы удаляемые, но мы их ни в коем случае не удаляем:
-
FLauncher
-
Shizuku
-
Termux
-
Termux:x11
Самый простой способ для начала пройтись в разделе «Настройки» → «Приложения»:
-
Выбрать конкретные приложения
-
Открыть информацию нажатием
-
Нажать на «Disable» или «Отключить» (если есть)
-
А после этого «очистить данные»
-
Ниже отключить уведомления
Важно! Идём с начала списка по 4-5 приложений после которых выключаем телевизор, обязательно отключаем от розетки на 5-10 секунд и включаем заново.
Есть небольшой риск не включиться или получить полный сброс.
Очевидно ненужные приложения в самой системе отключили. Но остались приложения, которые отключить или удалить невозможно, но они не нужны, или же приложения, которые непонятны.
И тут нам нужно приложение Canta.
-
Открываем приложение.
-
Справа вверху есть символ воронки → нажимаем.
-
Снимаем галку, которая стоит на системных.
-
Теперь идём по списку сверху вниз и выбираем то, что не нужно или отключено.
-
Отключено: просто отмечаем и нажимаем на пункт → читаем, что отключили. Больше оптимизация всегда хорошо. Если отключили что-то важное, то запоминаем название и тут же идём включать в настройки.
-
Не нужно: сначала читаем, думаем нужно ли оно нам. Если точно нет, то читаем, думаем ещё раз и потом отмечаем.
-
После выбора нужных приложений нажимаем на корзину справа снизу.
Важно! Идём с начала списка по 2-3 приложения, после которых выключаем телевизор, обязательно отключаем от розетки на 5-10 секунд и включаем заново.
Есть большой риск не включиться.
Обратите внимание на одну важную деталь: При удалении приложений вы будете выключать телевизор из розетки для проверки целостности системы. Смотрите за запуском графики Termux. Он должен запускаться автоматически без вашей помощи.
Ещё важное уточнение: Когда отключите графику (лаунчер) телевизора, он может ненадолго отключиться и потом включиться. Это нормально. В этом случае вместо стандартного лаунчера вы увидите FLauncher.
Наслаждаемся рабочим Linux и далее всё настраиваем в Openbox по стандартным мануалам из интернета.
Суровая реальность или как это прошло у меня
Если с установкой программ никаких проблем нет, так как это просто этап ввода команд, то вот с Shizuku возникли проблемы, так как я не совсем понимал, как это работает. Я пытался найти пути, где он установлен. Это заняло немало времени и абсолютно ни к чему не привело. После использования команды из самого приложения всё сразу же завелось и больше я проблем не испытывал.
В самом приложении рекомендуется способ с самого устройства по беспроводной отладке, но проблема с ним в том, что, например, на моём телевизоре такого пункта вообще нет и он не появляется даже при подключении к Wi-Fi. И ещё особенность телевизора в том, что он видит сигнал Wi-Fi и даже показывает, что идёт процесс подключения, но больше ничего. В конце он просто вам выдаст ошибку, что не может найти сеть. Как только вы отключите проводной интернет от ТВ, он сразу же подключится к Wi-Fi, если вы ранее пароль задали. Такая странная техника.
Из систем сначала я пытался установить Nix-On-Droid, что вроде бы логично в моём случае, ведь я использую NixOS на основном ПК. И тут оказалось, что на мой ТВ он не встаёт, так как не совместим.
Потом я попробовал proot-distro с Alpine, но он меня обрадовал ошибкой «terminated with signal 11». Я не стал разбираться, так как списков дистрибутивов я не нашёл, да и немного дистрибутивов легковестных для моего случая.
Поэтому я ушёл в сторону использования Termux, как системы.
С самой системой проблем не возникло, так как это «стандартная» Linux-система.
Но проблемы возникла на этапе выбора программ… Сначала я выбрал Alacritty, как эмулятор терминала, но при его запуске в системе быстро заканчивалась память и забито было всё, в том числе и своп. И он часто просто не стартовал. Поэтому был выбран st в стандартном виде. Чем меньше потребление, тем лучше.
Кто-то может возразить, что я не выбрал в качестве оконного менеджера, например, i3, ведь он удобнее для клавиатуры и легче. Тут я спорить не стану и лишь предложу пройти моим путём с заменой openbox.
После того, как система благополучно стабилизировалась, насколько это можно назвать стабильным поведением, началась борьба за память, за любую память. Чем меньше её у ТВ, тем больше она нужна нам.
Для решения вопроса нужно чистить Android, в котором и стоит Termux. И тут самый интересный момент. Не зря я в инструкции указываю на этом моменте сноски, что это делать небезопасно. Это работает как 2 зависимых друг от друга параметра: безопасность действий, количество отключенных/удалённых программ. Чем больше приложений вы уже удалили, тем более небезопасным становится дальнейше удаление. А показателем успеха считается точка, когда вы оставляете только то, что вам действительно нужно.
Мне не нужно было ничего. Я хотел сократить сторону Android максимально, но с возможностью базовых функций устройства, как телевизора. И несмотря на начало статьи, надо признать, что кроме просто включения, мне важно, чтобы я мог, например, переключаться между входами HDMI. И неудача пришла в первые 10 минут, когда я понял, что вижу интерфейс Android и всё работает, но при нажатии на пульте на кнопку «Вход» ничего не происходит, а при открытии настройки через интерфейс телевизора и выборе любого входа пишет «Не удалось открыть источник». И при этом самого Android в списке источников нет. Это нормальное поведение при действиях почти вслепую. А действовал я так, потому что в Canta есть описания многих компонентов Android, которые встречаются в смартфонах, но компоненты ТВ практически не описаны, по крайней мере, у меня система собрана из большинства неизвестных компонентов. А далее было 4 часа плотных раздумий, как выйти из интерфейса Android, т.к. выше в инструкции я описываю, как подготовиться к такому «сюрпризу» с отладкой самого себя через localhost, но у меня не было статьи и не было такого трюка. Трюк появился именно из-за этого.
После того как я нашёл способ вернуть всё обратно, я выяснил, что одна специфичная программа содержит в себе всю логику железа, при очень безобидном названии «LiveTV». Смотря изначально на неё, у меня была только одна мысль, как её удалить и зачем мне в Android TV эта программа, если сам ТВ имеет в базовой функциональности тюнер, антенну и т. д. Эти грабли я успешно использовал по назначению — я на них попрыгал.
После небольшого отката и чистки очевидных приложений, пришло время тяжёлого выбора. Из-за алфавитного порядка выбор сразу встретил меня сверху. Нужно чистить Google сервисы, в том числе и Android TV. И вот тут сильно помогает, что я заранее подумал о его замене и выбрал Flauncher. Меньше него для ТВ я найти не смог, скорее даже минималистичнее. Тут важным моментом было максимальное отсутствие каких-либо настроек, кастомизаций. Мне нужен был только вариант запуска приложения, если я когда-нибудь открою лаунчер. Почему тут это важно, ведь кажется, что мы просто меняем одно на другое? Да, фактически мы меняем, но практически я бы сказал, что просто ставим заглушку в виде Flauncher, чтобы система не сошла с ума и не стала перезагружаться бесконечно (bootloop), так как не видит лаунчер. И тут я бы предложил сразу поставить его, как дефолт, но я этого делать не стал в инструкции, так как для меня это был сильный сигнал того, что мы перешли линию, где всё очень опасно. С этим чувством опасности я дошёл до конца списка и в Canta нашёл 58 отключенных/удалённых компонентов.
Немного цифр и статистики
-
Доступно всего ОЗУ 1.75ГиБ: До чистки свободно 200 МиБ, после чистки 900 МиБ.
-
Доступно всего Своп 500МиБ: До чистки свободно 0, После чистки 500МиБ (Да, доступен полностью).
-
В моей системе «установлено» на момент стабилизации 209 пакетов.
-
Время исследования и планирования: ~6 месяцев.
-
Время активных действий: 18 часов с перерывами.
Вывод
Мне было интересно посмотреть на работу с ОС с другой стороны, когда ты не боишься, что что-то сломается. Интересно посмотреть в действии на инструменты, которые ты редко встречал в статьях или на форумах, но никогда это не использовал. Есть ли какой-то в этом смысл? Для меня только развлечение. Я даже не знаю, для чего теперь эту систему использовать. Она просто есть. Я сделал её, потому что могу, а не потому что надо.
Блок вопросов сообществу
-
Для чего можно использовать эту систему?
-
Какие ещё инструменты существуют для подобных действий?
-
Что бы вы заменили в моём списке программ и на что?
ссылка на оригинал статьи https://habr.com/ru/articles/1052166/