Как возникла странная необходимость запускать 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:
Теги: #Android #Виртуализация #lxc #iptvlxc.rootfs = /var/lib/lxc/abox/rootfs
-
-В Чем Сила, Брат? Сила В Блоге!
19 Oct, 24 -
Спички Не Игрушка?
19 Oct, 24 -
Apple Пора Прекратить Сравнивать Ipad С Пк
19 Oct, 24 -
Правила «Хорошей» It-Компании
19 Oct, 24 -
Gearjuice Rescue: Если Села Батарея
19 Oct, 24