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

72 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Сборка MontanaOS
Привязка к спецификации: MontanaOS v0.2, раздел 7.
## Системные требования
Подробности — раздел 7.1 спецификации, не дублируется здесь.
Кратко: Debian 12 «bookworm» или Ubuntu 22.04 LTS, тридцать два гигабайта оперативной памяти, четыреста гигабайт свободного диска, восемь и более ядер процессора, стабильное соединение для синхронизации дерева исходников.
## Шаги сборки
### Подготовка окружения
```
./scripts/setup-build-env.sh
```
Устанавливает: openjdk-21-jdk-headless, repo, базовые средства сборки и зависимости AOSP. Точный список пакетов — в самом скрипте.
### Синхронизация исходников
```
./scripts/sync-grapheneos.sh
```
Скрипт читает [MONTANAOS_VERSIONS.lock](MONTANAOS_VERSIONS.template) и синхронизирует дерево GrapheneOS на зафиксированный коммит. До закрытия Фазы 1 lock-файла нет, скрипт откажется работать. Это намеренно: воспроизводимая сборка невозможна без зафиксированных хэшей.
### Применение патчей MontanaOS
```
./scripts/apply-patches.sh
```
### Сборка под целевое устройство
```
./scripts/build-montanaos.sh komodo
```
Список целевых устройств — раздел 4 спецификации, не дублируется здесь.
Скрипт требует чистого рабочего дерева репозитория MontanaOS. Источник детерминизма метки времени — переменная `SOURCE_DATE_EPOCH`, рассчитанная из метки времени коммита HEAD репозитория MontanaOS. Имя выходного файла включает короткий хэш этого коммита.
Кэш компиляции (ccache) выключен в этом режиме (см. раздел 7.2 спецификации).
Итоговый образ помещается в каталог `out/target/product/<кодовое-имя>/` с именем вида `MontanaOS-<кодовое-имя>-<короткий-хэш>.zip`.
### Прошивка на устройство
```
fastboot flash bootloader bootloader.img
fastboot reboot bootloader
fastboot flash radio radio.img
fastboot reboot bootloader
fastboot --skip-reboot update MontanaOS-<кодовое-имя>-<короткий-хэш>.zip
```
Подробные инструкции по прошивке наследуются из документации GrapheneOS.
## Проверка воспроизводимости
Двое разработчиков, исполнившие одни и те же скрипты на чистом окружении Debian 12 с одним и тем же коммитом репозитория MontanaOS, обязаны получить побайтово идентичные итоговые образы, включая имя файла. Любое отличие — блокирующая регрессия.
Проверка через `sha256sum` итогового zip-файла на двух разных машинах. Хэши обязаны совпасть.
## Подпись
До закрытия Фазы 6 — неподписанные сборки. Скрипт сборки не пытается подписывать образ, файл [MONTANAOS_RELEASE_KEY.pub](MONTANAOS_RELEASE_KEY.pub) содержит только заглушку.
После закрытия Фазы 6 — отдельная процедура подписи, описанная в разделе 7.3 спецификации.