Skip to content
MakrSasPublic

About

Чистый Debian-установщик и материалы бринг-апа Linux для Samsung Galaxy S8 (dreamlte)

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

70 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Debian + GNOME на Samsung Galaxy S8 (SM-G950F)

Проект по установке 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, поэтому настройки и обои с текущего телефона не переносятся.

Текущий статус (актуально на 2026-08-14)

  • 🎉 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 считались от нулевой частоты) и чтение статуса смены режима питания из регистра UniPro 0x78EC вместо несуществующего поля в 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).

About

Чистый Debian-установщик и материалы бринг-апа Linux для Samsung Galaxy S8 (dreamlte)

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages