Set-Top-Box И Эксперименты С Android В Контейнере Lxc

Как возникла странная необходимость запускать Android в Linux-контейнере и что из этого вышло



Фон

Запуск Android в контейнере LXC, на мой взгляд, является логичным решением, если вы хотите иметь прозрачность и надежность Bare Linux и использовать огромный потенциал хороших (и не очень) сторонних приложений для Android. Данная конфигурация представляет интерес и как платформа для отладки собственного AOSP-образа в условиях, максимально приближенных к боевым.

Для экспериментов мы выбрали прогрессивную и недорогую китайскую приставку на базе 64-битного ARMv8 от Amlogic S905x (ЦП — 4 ядра, ОЗУ — 2 ГБ, MMC — 8 ГБ).

Еще одним веским аргументом стала хорошая (по сравнению с другими поставщиками) кодовая база в OpenSource и наличие исходного кода драйвера ядра для Mali-450. А пользовательское пространство библиотеки Мали теперь общедоступно на официальном сайте ARM Limited. Библиотеки доступны в двоичной форме для Linux-FB, Linux-Wayland и Android. Основной целью экспериментов были приложения для онлайн-кинотеатров и приложения для работы с сетевыми медиахостингами.

Например, сразу начались проблемы с Youtube на Linux. Во-первых: хакерский метод получения ссылок на контент путем разбора JS-скрипта и генерации подписи (ранее реализованный в minitube от Tordini и в youtube-dl) стал регулярно ломаться из-за беспощадной борьбы Google с методами обхода рекламы.

Во-вторых: максимальное разрешение контента было 720p — большего Google-API не выдал.

В-третьих: WebKit утратил нормальное обслуживание и в последнее время поддерживается лишь небольшой группой энтузиастов.

Та же участь постигла и его порт Qt. В результате в один момент страница youtube/tv отказалась работать, сославшись на старость веб-движка.

Ну и в итоге WebEngine (Qt-Chromium) преподнес сюрприз.

Оказывается эта красота не поддерживает аппаратное ускорение.

Исключение сделано только для порта Android и маргинальной ветки VAAPI в Linux. Тупик.

В общем, простого способа включить аппаратное ускорение декодирования видео для Chromium в Linux я не нашел.

Реализация VAAPI для Amlogic показалась мне тяжелой и бесполезной работой.

Я также попробовал плагин перца — к сожалению, PPAPI не позволяет воспроизводить закадровое видео.



Андроид

Почему бы не запустить Android в контейнере? Этот подвиг был вдохновлен проектом Anbox. Тщательное изучение Anbox показало, что он нам не подходит. Но идея была ясна.

В статьях других авторов говорилось, что запуск Android в контейнере — это проще простого.

Но на деле все оказалось гораздо сложнее.

Нам не удалось обойтись простой настройкой файлов конфигурации.

Итак, собираю LXC и устанавливаю в систему.

Тест конфигурации ядра выявил проблемы: необходимо включить поддержку пространства имен.

Так как платформа встроенная, все лишнее было отключено.

Мне предстояло выявить эти нужные ненужные вещи.

Первым тестом была проверка работы Busybox в контейнере.

Убедившись, что все работает, я начал экспериментировать.

Первоначальный вид /var/lib/lxc/abox.conf:

   

lxc.rootfs = /var/lib/lxc/abox/rootfs

Теги: #Android #Виртуализация #lxc #iptv
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.