montana/_internal-private/MontanaOS-archived-20260521/ROADMAP.md
2026-05-26 21:14:51 +03:00

8.2 KiB
Raw Blame History

MontanaOS — Дорожная карта

Дата: 2026-05-06 Привязка к спецификации: MontanaOS v0.2 Целевой первый релиз: подписанный образ под Pixel 9 Pro XL

Список поддерживаемых устройств — раздел 4 спецификации, не дублируется здесь.

Фаза 0. Скаффолдинг проекта

Текущая фаза.

  • Структура репозитория
  • Спецификация версии 0.2 (после прохода критика)
  • Карта Безопасности процесса узла
  • Файлы ролей: архитектор, критик
  • Эскизы патчей ядра и сервисных файлов
  • Скелеты скриптов сборки
  • Окружение сборки на отдельной машине Debian 12
  • Зеркало GrapheneOS source

Длительность: один день.

Фаза 1. Ванильная сборка GrapheneOS

Цель: собрать неизменённый образ GrapheneOS из исходников и прошить на тестовое устройство.

  • Определение действующей ветки GrapheneOS под целевое устройство (через git ls-remote upstream)
  • Запись зафиксированных хэшей в MONTANAOS_VERSIONS.lock (создание из шаблона)
  • Полная синхронизация дерева исходников
  • Полная сборка образов: загрузчик, vendor, system
  • Прошивка через fastboot на тестовое устройство
  • Проверка цепочки проверенной загрузки с пользовательским ключом
  • Закрытие открытого вопроса 8.3 (стратегия повторной синхронизации после применения патчей)

Длительность: одна-две недели.

Фаза 2. Патчи ядра и системы инициализации

  • Эмпирическая проверка: достаточно ли подъёма жёсткого лимита блокировки памяти через систему инициализации
  • Закрытие открытого вопроса 8.1 (нужен ли патч ядра пользовательской блокировки памяти)
  • При необходимости — применение патча ядра, создание SELinux-политики montana_node.te
  • Тест-критерий: непривилегированный процесс класса montana_main блокирует восемь мегабайт памяти под нагрузкой час без подкачки
  • Тест-критерий: попытка ptrace на процесс узла из любого другого домена завершается отказом доступа
  • Закрытие требований Карты Безопасности процесса узла, пункты 3 и 5

Длительность: две-четыре недели.

Фаза 3. Встраивание узла Монтаны

  • Сборка двоичного файла узла под целевую платформу aarch64-linux-android (закрытие открытого вопроса 8.10)
  • Упаковка двоичного файла в системный образ MontanaOS
  • Сервисная запись в системе инициализации с правильным классом, capabilities, oom_score_adj, rlimit core
  • Сторожевой таймер с проверкой Dumpable и VmLck
  • Тест-критерий: узел стартует автоматически, переживает принудительное убийство процесса, не вытесняется системой при нехватке памяти
  • Закрытие требований Карты Безопасности, пункты 1, 2, 4, 6, 7

Длительность: две-три недели.

Фаза 4. Первичная настройка туннеля

  • Чтение списка генезис-серверов из основной спецификации Монтаны (без дублирования адресов в MontanaOS)
  • Мастер первой загрузки: выбор точки выхода + явное согласие на публикацию устройства в сети
  • Семантика смены сети согласно разделу 5.5 спецификации
  • Закрытие открытого вопроса 8.6 (смена генезис-сервера после первой загрузки)
  • Тест-критерий: входящие соединения на порт восемь тысяч четыреста сорок четыре проходят к узлу через выбранный генезис-сервер

Длительность: одна-две недели.

Фаза 5. Приложение статуса и батарейная диагностика

  • Системное приложение «Статус Монтаны» по разделу 5.6 спецификации
  • Пороги предупреждений по температуре процессора: жёлтый 70°C, красный 80°C (закрывает дефект 7-1 критика v0.1)
  • Лимит зарядки восемьдесят процентов как рекомендуемая настройка GrapheneOS, не как требование MontanaOS
  • Закрытие открытого вопроса 8.8 (минимальный образ или среда исполнения Android)

Длительность: три-четыре недели.

Фаза 6. Релизный конвейер

  • Воспроизводимая сборка: два независимых билда дают побайтово идентичный образ, включая имя файла
  • Генерация корневого релизного ключа на изолированной машине (раздел 7.3 спецификации)
  • Генерация первого промежуточного релизного ключа, подпись корневым
  • Заполнение файлов MONTANAOS_RELEASE_KEY.pub и MONTANAOS_RELEASE_KEY.history
  • Публикация подписанных образов на хабе Монтаны
  • Канал обновлений по воздуху через стандартный движок GrapheneOS
  • Закрытие открытого вопроса 8.4 (поведение цепочки подписи после ротации ключа)
  • Закрытие открытого вопроса 8.7 (минимальный объём постоянной памяти после первого тестнета)
  • Документация прошивки для конечных пользователей

Длительность: две недели.

Фаза 7. Защищённый элемент Titan M2 как аппаратный модуль безопасности

Опциональная фаза, не входит в первый релиз. Использование Titan M2 для прямого подписания блоков. Требует драйвера в пользовательском пространстве.

  • Закрытие открытого вопроса 8.2 (фаза, начиная с которой Titan M2 обязателен)

Итог по срокам

Реалистичная оценка для команды из одного-двух разработчиков с опытом AOSP: примерно три-четыре месяца от запуска проекта до первого подписанного публичного релиза.