Начал портировать свою операционную систему Platinum OS на Samsung Galaxy M52. В основе — Ubuntu 26.04 LTS, собственная графическая оболочка, службы и пакеты приложений. Разблокируемый загрузчик телефона позволяет запускать модифицированные загрузочные образы и экспериментировать с Linux на настоящем устройстве.
Как проверить Samsung M52 на OEM Unlock
Перейти: Настройки → Сведения о телефоне → Сведения о ПО → 7 раз нажать «Номер сборки»
Далее: Настройки → Параметры разработчика → Заводская разблокировка / OEM unlocking
Если переключатель есть — практически наверняка всё нормально.
Дальше разблокировка у Samsung делается не через fastboot flashing unlock.
Сделайте резервную копию — телефон будет полностью очищен.
Включите OEM unlocking.
Выключите телефон.
Подключите USB-кабель к компьютеру.
На выключенном телефоне удерживайте одновременно Volume Up + Volume Down и подключи кабель.
Появится Download Mode.
На экране обычно будет предложение типа:
Device unlock mode — Long press Volume Up
Долго удерживайте Volume Up.
Подтверждаете разблокировку.
Телефон сделает factory reset.
После этого в Download Mode должно отображаться что-то вроде:
OEM LOCK: OFF
или статус загрузчика, показывающий, что разблокировка разрешена.
Уже удалось загрузить Platinum с microSD, запустить интерфейс и добиться работы сенсорного экрана, Wi-Fi и SSH. Сейчас дорабатываю управление питанием, отключение дисплея при бездействии и защиту от критического разряда батареи. Отдельная задача — переключение между штатным Android и Platinum с сохранением пользовательских данных. Для этого использую раздельные ядра: Android загружается через BOOT, а Platinum — через RECOVERY. Схема ещё проходит проверку на телефоне.

На фото Platinum уже работает на самом телефоне: запущена графическая оболочка, обрабатываются касания, открываются приложения и терминал. Это самостоятельная загрузка Linux со своим userspace, основанным на Ubuntu, и оболочкой на Qt/QML.

Одна из основных задач портирования — связать Linux-систему с аппаратной частью Samsung M52. Здесь недостаточно собрать Ubuntu для ARM64: нужны подходящие ядро, описание оборудования — Device Tree, модули драйверов и firmware. Уже удалось добиться работы дисплея, сенсорного ввода и Wi-Fi. Через SSH можно читать журналы, проверять службы и тестировать изменения прямо на устройстве, прежде чем включать их в следующий образ.
Корневая файловая система Platinum располагается на microSD, а Android остаётся во внутренней памяти. Для переключения между ними разрабатываю схему с двумя отдельными ядрами: штатный Android использует раздел BOOT, Platinum — RECOVERY. Выяснилась особенность Samsung: при запуске Android может восстанавливать заводской Recovery, перезаписывая Platinum. Поэтому сейчас проверяю раннее отключение службы vendor_flash_recovery через init-конфигурацию, добавленную в загрузочный образ с Magisk.
Следующий этап — подтвердить стабильное переключение в обе стороны с сохранением данных Android. Параллельно предстоит доработать управление питанием и заняться модемом: звонками, SMS и мобильным интернетом.
Текущая схема с раздельными ядрами Android и Platinum. По журналу проекта два цикла Android → Platinum → Android подтверждены на телефоне. Диаграммы читаются слева направо. Режим загрузки — решение загрузчика Samsung, а не готовое экранное меню выбора ОС.

Переключение ОС:

Собственная часть загрузки Platinum — initramfs и ранний init. ABL остаётся Samsung. Аппаратную поддержку обеспечивают драйверы ядра, Device Tree и firmware; схема не перечисляет все физические разделы, например vendor_boot. Маркер platinum.dualboot=recovery меняет SHA-1 BOOT, но не выбирает ОС сам. Сервис Samsung не отключается: восстановление не проходит проверку источника.
VBMETA сохраняет flags=3 от предыдущего этапа настройки и при переключениях не переписывается. Служба BCB меняет только 32-байтовое поле command в misc. Параметр перезагрузки userrequested остаётся дополнительным механизмом запроса обычной загрузки.
Системные службы работают параллельно с графической сессией.
На Rust в Platinum OS написаны система сборки образов и часть служб устройства. Код разделён на отдельные crates: командный интерфейс, конфигурация оборудования, загрузка компонентов, подготовка корневой файловой системы и создание итогового образа. Параметры устройств задаются через TOML.
Конвейер сборки. Каждый этап реализует общий интерфейс Stage: получает контекст сборки и выполняет свою задачу. Например, скачивает Ubuntu Base, устанавливает пакеты или настраивает систему. Конвейер последовательно запускает этапы, записывает время выполнения и останавливается при ошибке. Такой подход позволяет отдельно проверять компоненты и добавлять поддержку оборудования, не переписывая весь сборщик.
Служба уведомлений platinum-notifyd. Она принимает сообщения приложений через D-Bus, используя интерфейс org.freedesktop.Notifications, и передаёт их оболочке через файлы в каталоге пользовательской сессии. Qt/QML отвечает за отображение уведомлений, а Rust-процесс — за приём, идентификаторы, замену и закрытие сообщений.
Также на Rust реализованы компонент проверки пароля через PAM и заготовка службы модема с AT-командами. Последняя ещё не означает готовую поддержку звонков на M52: интеграция с его модемом — отдельная задача. Графический интерфейс написан на Qt/QML, а часть инструментов портирования и управления питанием — на Python и shell.
Далее буду по мере развития Platinum OS, писать новые статьи, выдержки из опыта разработки.
GitHub: https://github.com/digkill/Platinum-OS
kenomimi
Хорошее начинание. Только проблема в том, что обьем работ для скрещивания ужа с ежом фееричный даже если весь кодинг переложить на ИИ, руками вообще даже средней командой не осилить... Только недавно была статья про линукс на ленове.
CEOCTO Автор
Сам проект создавался как универсальная OS для arm устройств, в первую очередь хотел подружить с Orange PI Zero 3 + подключил Waveshare 6.25inch Capacitive Touch Display и Waveshare A7670E LTE Cat-1 HAT for Raspberry Pi. Но так как из этого сделать смартфон еще труднее (нет ряда датчиков как в современном устройстве), появилась идея сделать на unlock oem устройстве, далее в планах приобрести OnePlus 16 и поэкспериментировать с ним (смартфон + ии робот, с ходовой частью)