SakinaOS: зачем мы написали свою операционную систему

Писать свою операционную систему — обычно плохая идея. Для платформы, которая должна быть быстрой, проверяемой и разворачиваться в любой стране, это был способ сдержать все наши обещания.

Почему такое имя. Sakina (по-арабски سكينة, саки́на, с ударением на «и») значит «покой, умиротворение». Таким мы хотели сделать сервер: тихим и спокойным для тех, кто за него отвечает, — без ночных тревог и ручных откатов.

Суверенитет начинается снизу

Если вы не контролируете слой под своей программой, вы не вполне контролируете свои данные. SakinaOS написана с нуля на Rust — без строчки на C и без чужого кода в образе: нечего проверять и не на что полагаться со стороны.

  • Ни удалённой оболочки, ни SSH: нет удалённого входа, которым можно злоупотребить
  • Обновления подписаны и проверяются на самой машине
  • Ключи дисков никогда не попадают на диск
  • Один и тот же образ работает на вашем оборудовании и в публичном облаке

Создана для одной задачи

Система общего назначения создана, чтобы запускать что угодно. SakinaOS запускает одно приложение на машину. Между приложением и железом нет ни процессов, ни системных вызовов, ни планировщика общего назначения — меньше слоёв, меньше ожидания.

Приложение собирается вместе с системой в один подписанный файл. Узел с операционной системой занимает около 5 МБ.

Обновления, которых не нужно бояться

Каждый образ несёт подписанный манифест, который проверяется при загрузке. Обновления идут через два слота: новая версия стартует «на пробу», и если она не подтверждена, зависла или упала, машина сама возвращается к прежней. Две сборки из одних исходников дают побайтно одинаковый образ — любой может проверить, что работает именно то, что подписано.

Обновление через два слота с автоматическим откатомНовый подписанный образПодпись проверяется при загрузкеСлот Aтекущая версияСлот Bновая, на пробеПодтверждена:остаётсяЗависла, упалаили не подтвержденаоткат сам
Новая версия работает «на пробе» во втором слоте; без подтверждения машина сама возвращается к первому.

Управление по закрытому каналу

Узлом управляют только по нашему протоколу ATL внутри TLS 1.3, где обе стороны проверяют ключи друг друга. Обмен ключами по умолчанию постквантовый: гибрид X25519 + ML-KEM-768. У сертификатов есть роли: роль наблюдения видит, но ничего не меняет; роль отпирания может только отпереть диски.

Диски, которые держат слово

Диски зашифрованы. Ключ приходит по каналу управления при старте и живёт только в памяти. Данные сверяются в фоне, здоровье дисков отслеживается, подозрительные участки уходят в карантин автоматически, пока оператор их не снимет. Драйверы NVMe, SATA, Intel 10 GbE и стандартных виртуальных устройств — свои, написаны по официальным спецификациям, на ARM64 и x86-64.

Замерено

  • Питание обрывали 5 раз во время записи на выделенном сервере AMD EPYC с NVMe (октябрь 2026): все 248 подтверждённых записей на месте, ни одной потерянной или повреждённой
  • 6 часов в виртуальной машине x86-64 с 4 vCPU (октябрь 2026): 17 циклов обновления — 8 подтверждений, 9 автоматических откатов, — 35 перезагрузок и около 407 000 HTTP-операций; все подтверждённые данные на месте, память не росла
  • Узел вместе со своей операционной системой — около 5 МБ

9 откатов — намеренные: эти обновления оставляли без подтверждения, чтобы доказать, что откат срабатывает сам.

Следующий шаг

Посмотрите на примере своего бизнеса

Запросите демо: покажем платформу на ваших процессах и договоримся, где будут жить ваши данные, — в нашем облаке или на ваших узлах.