Проект по установке Debian (arm64) с графическим ускорением и рабочим столом GNOME на Samsung Galaxy S8 (SM-G950F, Exynos 8895 / Mali-G71 MP20).
- Полноценный Debian на телефоне.
- Аппаратное графическое ускорение (Mali-G71, драйвер Panfrost/Mesa).
- Рабочий стол GNOME (GNOME Shell / Mutter, Wayland).
| Состояние | Что именно |
|---|---|
| Работает | uniLoader + mainline Linux на SM-G950F, UFS-root на sda29, ext4, SimpleDRM-экран, тачскрин и кнопки |
| Работает | Mali-G71 через Panfrost; Phosh запускается на программном выводе SimpleDRM; USB CDC ECM/SSH подготовлены |
| Исправлено в исходниках | драйвер MAX77865 теперь читает RepSOC корректно и опрашивает батарею каждые 2 секунды; готовый boot-образ нужно проверить на телефоне |
| В разработке | нативный KMS: DECON + DSI + панель S8; сейчас безопасный профиль оставляет SimpleDRM активным |
| В разработке | публичный релиз boot-образа и полная автоматическая установка из чистого Debian |
| Пока не работает | Wi-Fi, Bluetooth, звук, камеры и модем в mainline; GNOME остаётся экспериментальным и может дать чёрный экран |
Для установки с очисткой раздела используется интерактивный установщик. Он создаёт новый Debian-rootfs, поэтому настройки и обои с текущего телефона не переносятся.
- 🎉 Mainline-ядро Linux (7.2.0-rc6) успешно загружается на реальном устройстве через uniLoader — initramfs стартует, лог загрузки виден на экране телефона через DRM/SimpleDRM. Тачскрин и кнопки (GPIO-keys) — подтверждённо рабочие. Подробности — см. docs/progress-log.md.
- 🎉 Debian 13 (trixie) arm64 реально работает на телефоне — debootstrap
(обе стадии) пройден нативно через chroot в TWRP.
/bin/bash,dpkg,aptработают. - GNOME 48 ранее запускался на телефоне, но остаётся экспериментальным: native KMS-путь сейчас даёт чёрный экран, поэтому рабочий rollback использует Phosh + SimpleDRM. Рендеринг десктопа пока программный (llvmpipe), даже при рабочем GPU.
- Прямой интернет в TWRP без сети на телефоне:
adb reverse+tinyproxyна хосте — TCP-туннель поверх adb-канала,aptвнутри chroot ходит в реальный интернет напрямую. Заменил медленную qemu-эмуляцию для установки пакетов. - 🎉 Debian грузится с microSD нашим собственным ядром —
switch_rootпроходит, rootfs с карты исполняется как корневая ФС. Карта работает в high-speed на 50 МГц. Корневая причина многодневной проблемы «карта опознаётся, но чтение всегда падает с DRTO» — ошибка кодирования таймаута данных для Exynos8895 вdw_mmc:TMOUT[10:8]там множитель, а не младшие биты счётчика. Патчи — в patches/kernel/. - 🎉🎉 Debian живёт на внутренней памяти и грузится без карты вообще.
Корень —
sda29(бывший USERDATA, 34.5 ГБ, меткаlinuxroot), microSD освободилась целиком. UFS и PHY собраны в ядро (=y): корень на UFS, а модуль для UFS с этого самого корня не загрузить. - 🎉 Внутренняя память (UFS) заработала на полной скорости — HS Gear 3,
две линии, серия B; накопитель Samsung KLUCG4J1ED-B0C1 на 64 ГБ,
sda1…sda29видны, разделы читаются. Понадобились: свой PHY-драйверsamsung,exynos8895-ufs-phyс калибровкой PMA из вендорского dts, своя последовательность старта линка, флагEXYNOS_UFS_OPT_UFSPR_SECUREпротив SError на защищённом UFSP,freq-table-hz(без него все тайминги M-PHY считались от нулевой частоты) и чтение статуса смены режима питания из регистра UniPro0x78ECвместо несуществующего поля вHCS. Разбор — в docs/ufs-bringup.md. - USB CDC ECM/SSH подготовлены и проверены через MAX77865 + S2MM005; Wi-Fi в mainline не поднят. Поэтому рабочий канал диагностики — SSH по USB, а TWRP/ADB остаётся каналом восстановления и прошивки.
- USERDATA (34.5GB, раньше FAT32 от попыток с Windows) переформатирован под ext4 — постоянное хранилище для Linux-rootfs.
- Родной раздел BOOT сохранён локально перед перепрошивкой
(
build/device-backups/boot_orig.img) — путь отката есть. - 🎉 GPU заведён: Mali-G71 MC20 работает через Panfrost. Ядерный
драйвер опознаёт чип сам, Mesa 26.1.2 из trixie-backports выдаёт
GL_RENDERER = Mali-G71 MC20 (Panfrost)на всех профилях, включая OpenGL ES. Понадобились свой блок тактов CMU_G3D, домен питания G3D и узел GPU в device tree — ничего этого в mainline для 8895 не было. - Рабочий стол пока остаётся на программном рендере, и упирается это не
в GPU. У нас нет KMS-драйвера дисплея:
card0— этоsimpledrm, голый буфер кадра от загрузчика. Mutter отвергает panfrost (у того нет modesetting) и рисует процессором. Следующий шаг — DECON + DSI + панель S8 в mainline; разбор в docs/graphics.md. - Побочные направления: Wi-Fi, Bluetooth, звук, камеры и модем.
- docs/device.md — железо и текущее состояние устройства.
- docs/prior-art.md — что уже сделано сообществом (mainline-ядро, uniLoader, postmarketOS, Halium).
- docs/boot-chain.md — план загрузки (uniLoader + mainline, запасные варианты).
- docs/graphics.md — план по графическому ускорению (Mali-G71/Panfrost) и открытый блокер.
- docs/risks-and-open-questions.md — открытые риски и вопросы.
- docs/NEXT-SESSION.md — промпт для продолжения работы в новой сессии и чек-лист.
- docs/ufs-bringup.md — bring-up внутренней памяти (UFS): состояние, что исправлено, что делать дальше. Самодостаточный документ для продолжения работы.
- docs/progress-log.md — журнал прогресса по датам.
.
├── docs/ # документация проекта
├── patches/ # наши изменения к mainline-ядру + скрипты initramfs/rootfs
├── configs/ # конфиг ядра (savedefconfig)
├── scripts/ # скрипты сборки/прошивки (будут добавляться по ходу работы)
├── rootfs/ # (не в git) debootstrap rootfs
├── firmware/ # (не в git) прошивки/блобы с устройства
├── images/ # (не в git) образы разделов, бэкапы TWRP
└── build/ # (не в git) артефакты сборки ядра/GRUB
Папки rootfs/, firmware/, images/, backups/, downloads/, build/
создаются локально по мере работы и не должны попадать в публичный
репозиторий (см. .gitignore) — там будут большие бинарники,
дампы устройства и потенциально проприетарные блобы.
Репозиторий публикуется как source-only проект: патчи ядра, конфигурация и
скрипты установки. Локальные build/, rootfs, образы разделов и бэкапы
исключены через .gitignore. Для полного сценария установки
нужен совместимый boot-образ; до проверки на реальном телефоне он передаётся
явным локальным путём или URL релиза, а не берётся из пользовательского
rootfs.
Проект распространяется под GNU GPL v2 — той же лицензией, что и
ядро Linux: патчи ядра (patches/kernel/) являются производными от него, а
скрипты, установщик и документация лицензированы так же, чтобы у репозитория
был один режим. Форки и доработки приветствуются при сохранении GPL-2.0.
Прошивки Wi-Fi, NVRAM и другие файлы из стокового ПО Samsung в репозиторий не
входят и под эту лицензию не подпадают: их нужно извлечь из стокового
vendor-раздела своего телефона (см. docs/progress-log.md, 2026-09-28).