С чего всё началось
Долго и без дела у меня в ящике лежал Xiaomi Redmi Note 10s, на котором хотелось настроить кастомный Android. В какой-то момент наткнулся на информацию о PostmarketOS (полноценный Linux дистрибутив для смартфонов, планшетов и т.п.), и что мой смартфон может быть на него прошит
.
Разблокировка загрузчика
На первом шаге был разблокирован загрузчик, чтобы появилась возможность заливать кастомные прошивки через fastboot. Это отдельная длинная история, но вкратце суть следующая - для разных устройств Xiaomi есть минимум 3 версии программы разблокировщика от вендора (5-я, 6-я и 7-я), однако какая именно подойдет в вашем случае, это лотерея со случайными числами. Более подробная инструкция яндексится/гуглится на 4pda.
Подготовка образа и прошивка
На втором шаге идет подготовка образа прошивки с помощью консольной утилиты pmbootstrap (есть в родных репозиториях большинства Linux дистрибутивов). Здесь важно определиться с тем, какая графическая оболочка вам доступна - в моем случае из-за downstream ядра мне были доступны только X11 окружения под управлением openrc, так как Wayland оболочки требуют systemd, который недоступен для моей сборки ядра Linux.
Далее казалось бы всё, но к сожалению нет - смартфон запускался, а графическая оболочка нет, при этом со стороны казалось что всё зависло. Благо телефон опознавался как сетевая карта по USB и была возможность подключиться по SSH для диагностики.
Подсказки из сообщества и доработки напильником
“Я бывалый Linux-админ, и знаю как запускать графический режим с толкача из консоли вручную!” - проскочила мысль в моей голове, однако, как обычно, всё пошло не по плану. После небольшого колдунства с конфигурационными файлами удалось добиться того что startx примерно 10 секунд стал запускать графику на смартфоне, но потом он уходил в типа-штатную перезагрузку, и всё возвращалось в исходное.
Пообщавшись с сообществом пользователей PostmarketOS я узнал про необходимость установки пакета postmarketos-base-downstream, но его доустановка какого-либо эффекта не давала. Также они подтвердили, что моя гипотеза про доступность для установки только X11 окружений, из-за отсутствия поддержки systemd в моей сборке ядра Linux, верна, однако рекомендуемой оболочкой для моего смартфона, из личной практики реальных пользователей, является Mate, которую я устанавливал, но корректного запуска добиться не смог. С этими знаниями я пересобрал образ для смартфона с помощью pmbootstrap init, явно добавив в конфигурацию образа установку пакета postmarketos-base-downstream, чтобы его не нужно было доустанавливать вручную.
Записав через fastboot получившийся образ в память смартфона, я на реальном примере увидел, что для корректного запуска графической оболочки не хватало именно тех шагов, которые я попробовал сделать наугад - я увидел окно авторизации системы :-)
Итоговый результат
Теперь у меня есть полноценный КПК в форм-факторе смартфона. Да, он не идеален, но для меня в данной ситуации был важен proof-of-concept.
На этом всё, спасибо за внимание.