Daily MaverickHERITAGE AND RESTITUTION OP-ED: We walk to remember what apartheid erased of Newlands and ClaremontThe Jerusalem PostEgyptian-Chinese mission unearths wine press at temple to ancient warrior goddessUN NewsUnited Kingdom announces action on disinformation and global AI standardsESPNOhtani 'considerably' healthier, will return to Dodgers' lineup WednesdayInquirerDiokno: Prosec’s job not easier despite conviction vote rulingCBS NewsBone Loss: A Silent DiseaseWirtualna PolskaUSA: legalny dostęp do prezydenta kosztuje nawet setki tysięcy dolarówSouth China Morning PostItaly’s Colosseum closes after worker dies in accidentNU AchterklapMEAU verloofd met gitarist Vadim: 'Nog steeds aan het bijkomen'RMF24Miko Marczyk pobił kolejny rekord Guinessa. 1338 km na jednym ładowaniu!DeadlineBrad Pitt Praises Streamers For Creating Opportunities & Says He Believes The Indie Film Space Is Currently Just As Strong As In The 90s — San SebastianCNN بالعربيةكيف يمكن إيصال القصص والموسيقى العربية إلى الجمهور العالمي؟
The Daily Newsstand · Free, Always
Wednesday, September 23, 2026

Разработка Platinum OS на базе Samsung M52

Translate

Начал портировать свою операционную систему 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 в Platinum OS

Командная строка linux в Platinum OS

Одна из основных задач портирования — связать 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, а не готовое экранное меню выбора ОС.

Схема загрузки OS

Схема загрузки OS

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

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

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

Собственная часть загрузки 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.

View the original on Хабр

KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.