Flipper OS — the operating system for Flipper One [DRAFT - DO NOT PUBLISH]
TL;DR: Flipper OS is an additional layer on top of a standard Debian-based Linux system. It lets you switch between multiple preconfigured system profiles for different tasks, so you can experiment freely without worrying about breaking your setup or turning it into a mess.
Why build Flipper OS, yet another operating system, when there are already so many? Why not simply take a standard Debian-based system, as Raspberry Pi does, and customize it?
The problem is that conventional Linux distributions are designed for traditional computers/servers. They are not convenient for a multitool like Flipper One, which can be a network router, a radio lab, desktop computer or TV mediabox all on the same device.
What we want to build into Flipper OS:
System profiles — preconfigured operating system images for different tasks, such as a Network Router, Radio Lab, Desktop Computer, TV Media Box. Each profile has its own settings, kernel, device tree, and set of applications.
Unbreakable playground — users can clone profiles and modify anything inside them, from the kernel to system files. They can install whatever they want without worrying about breaking the device.
Reset to default — wow, what an innovation💀! Yet even in 2026, most Linux systems still do not let you roll back your changes and return to a clean system after breaking it.
Atomic updates — updating Linux today is still an unpredictable operation. No matter how badly you have broken the system, we want to guarantee that it can still update to a new version.
Trash system problem
We all love single-board computers like Raspberry Pi. They are perfect for DIY projects when you need a tiny Linux box that is always close at hand. Today it is a home server, tomorrow you repurpose it as a servomotor controller, and the day after that as a debug probe. Each time, you completely reconfigure the operating system, kernel, and device tree.
This is what the typical workflow looks like when using SBC in your projects:
Install a clean system on an SD card → Install packages and configure it for one project → Rework everything for a different project → End up with a trash system → Reinstall everything from scratch.
Containers not always work
To solve this problem, developers made containers such as Docker, along with all kinds of modern virtualization and containerization systems. They work perfect when you need to isolate userspace applications. But when you need to work close to the bare metal, patch the kernel, modify the device tree, reconfigure HDMI port or Wi-Fi drivers, or bit-bang GPIOs — сontainers not helping. In these cases, you need full access to the hardware.
Impossible to roll back changes
Удивительно, но в 2026 году в большинстве Linux дистрибутивов нельзя просто взять и откатить изменения вернув систему в Default. Единственным надежным способом остается переустановка все системы с нуля. А для этого, нужно иметь отдельный компьютер, чтобы перезаписать образ на SD-карту.
Multiple SD-cards

Самым простым способом остается иметь несколько SD-карт и перевтыкать нужную СД-карту каждый раз под конкретную задачу. Я лично возил с собой свою любимую походную Raspberry pi для путешествий в металлическом корпусе вместе с несколькими подписанными SD-картами, и втыкал нужную в зависимости от задачи. При этом сохраняя образы SD-карт на компьютере перед каждым большим эспериментом с системой. Именно так мы придумали концепцию Flipper OS.
What is Flipper OS?
Flipper ОS это не совсем операционная система, а скорее набор инструментов уровнем выше, который позволяет централизованно управлять снэпшотами разных операционных систем с одного устройства. Можно думать об этом как о привычных docker контейнерах, только без какой-либо виртуализации, полным доступом к bare metal.

<БАБЛ> В этом тексте автор задает много открытых технических вопросов без четкого ответа. Этот текст не является четким описанием продукта, а скорее приглашает к дискуссии о том как лучше решить техническую задачу и сделать действительно удобный и полезный проект. <БАБЛ>
В конечном счете мы хотим создать инструмент, который будет удобно использовать хардваррным хакерам для создания собственных универсальных linux boxes под разные задачи и распространять готовые образы среди community. Мы хотим, чтобы наши наработки можно было использовать за пределами Flipper One, но и на других платформах
Fuck containers & virtualization
Containers is amazing... for your web application. Но они абсолютно неудобны когда тебе нужно работать с голым железом: дрыгать GPIO, эмулировать USB устройства, работать с сетью.
Представьте, что вам нужно объединить Ethernet и виртуальный эмулированный USB Ethernet адаптер в один бридж, потом модифицировать драйвер wifi и прошивку адаптера, потом отснифать CEC сообщения в HDMI порту. Сможете вы сделать это в docker контейнере? Наверное да, но больше всего сил вы потратите на борьбу с настройкой самих контейнеров и сетевой подсистемы. Одна только сетевая подсистема в docker чего стоит.
Поэтому для инструментов вроде Flipper One контейнеры не работают, нам нужна голая операционка и полный доступ к железу, только bare metal, только хардкор.
Концепт Flipper OS (со стороны пользователя)
Для пользователя Flipper OS должна быть максимально привычной и знакомой. В userspace ничем не отличаться от Debian-based операционной системы, чтобы все существующие how-to из интернета написанные для Debian/Ubuntu работали на Flipper One сразу из коробки.
Boot Menu & OS Profiles

Вся магия Flipper OS должна происходить на отдельном слое в boot menu, до загрузки системы. Сразу после включения устройства юзер выбирает конкретный boot profile и загружает его.
- Boot menu — это программа которая стартует сразу после включения CPU и показывает список профилей ОС. Из коробки на устройстве предустановлены несколько стандартных преднастроеных профилей системы. После выбора профиля начинается его загрузка. В boot menu юзер видит last used timestamp и может выполнять операции с профилями: reset to default, clone
- Profile — os profile это слепок операционной системы изначально сконфигурированный для конкретных задач. Он имеет название, например "TV Media Box" и иконку. Из коробки на устройстве предустановлено несколько профилей. Каждый профиль это по сути отдельная операционная система, которая может иметь свой root, kernel и device tree.
Boot stages
Flipper One имеет двухпроцессорную архитектуру (MCU+CPU), для того чтобы с устройством можно было взаимодействовать через LCD экран и кнопк, даже когда Linux и CPU выключены. Поэтому устройство может находится в разных stages:

- MCU Mode — в этом режиме CPU и Linux выключены, активна только прошивка микроконтроллера. Она запускает CPU и передает управление экраном софту работающему на урвоне CPU.
- Boot Menu — это отдельная программа, которая работает на CPU и отображает меню выбора профилей ОС. На этом этапе полноценный линукс еще не загружен. Boot menu умеет отрисовывать графику на LCD экране и понимает ввод с кнопок. Прямо сейчас для этих целей мы используем U-Boot, но в будуем хотим перейти на маленький линукс в котором вкомпилена программа Boot Menu. Эта программа должна уметь читать информацию о методанных профиля, его размере, дате последнего использования. Так же уметь управлять профилям: очищать к default, удалять, клонировать.
- Profile started — загруженный профиль это полноценная операционная система без каких-либо ограничений, с доступным на запись root filesystem, с возможностью устанавливать пакеты и как угодно ломать и модифицировать систему. При этом все изменения внунтри профиля сохраняются в отдельный overlay слой, который можно удалить и вернуть профиль в default состоянию.
Unbreakable Profile
Мы хотим дать полную свободу действий юзеру внутри загруженного профиля, то есть разрешить ломать и ковырять систему как угодно: устанавливать пакеты, изменять системные файлы, модифицировать ядро и device tree. Поэтому root фс должна быть доступен на запись и для пользователя никаких ограничей не должно быть.

Одновременно с этим, мы хотим иметь возможность откатить все изменения пользователя и вернуть состояния профиля в default. То есть все модификации исходного профиля должны быть на отдельном overlay слое.
При этом важно, чтобы сохранение изменений происходило незаметно для пользователя и не нужно было выполнять отдельные команды, чтобы сохранить user modifications. Иначе говоря, если юзер постоянно загружается в один и тот же стоковый профиль и делает там какие-то модификации, при перезагрузке они должны всегда сохранятся, так будто он работает в обычной классической операционной системе.
Cloning & Sharing Profiles
Представим, что юзер долго настраивал сложную конфигурацию системы находясь в профиле "Router" и в какой-то момент он ей доволен. Он решает сохранить этот профиль как отдельную сущность. Для этого он в boot menu выбирает Edit, делает Clone профиля и сохраняет его с отдельным названием. Такой профиль мы решили называть пользовательским и помечать его в имени с помощью квадратных скобок.

В такой схеме юзер не боится потерять удачную конфигурацию, а может продолжить эксперименты в отдельном профиле, подобну тому как мы все привыкли работать с бранчами в git.
В идеальном случае мы бы хотели дать возможность юзеру to share свои профили с сообществом, так чтобы другие пользователи могли их скачивать и использовать. Так же хорошо бы для экономии места иметь дедупликацию, чтобы один и тот же файл на диске не сохранялся дважды в разных профилях.
User Data & Volatile files
Пользовательские данные должны быть доступны во всех профилях, поэтому какая-то часть файловой системы должны быть независима от профилей. Например, если юзер скачал видео из интернета и положил его в /home/user/Downloads оно должно быть доступно из всех профилей. Однако мы не можем решить как быть с другими волатайл данными, которые генерирует сам факт использования профиля, например кеши и настройки.

Например юзер сохранил пароль от WiFi сети внутри одного Desktop профиля, должен ли этот же пароль быть доступен в другом профиле? Непонятно. Так же и с конфиг-файлами внутри папки /home если мы решаем делать домашнюю папку юзера общей для всех файлов, это сломает возможность иметь разные конфигурации в разных профилях и будет вызывать конфликты. Скорее всего мы склоняемся к мысли что домашняя папка /home/user должна быть привязана к профилю, и только одна папка типа /home/user/user_data должна быть общей между профилями.
System Update problem
Главная трудность во всей концепции Flipper OS — это обновления системы. Как нам выпускать новые версию профилей и раскатывать их поверх существующих, если у юзера модифицированный root да еще и несколько клонированных профилей? Мы ни в коем случае не хотим, чтобы процесс обновления был сложной миграцией из одно версии в другую, который может еще и сломаться. Классический apt upgrade максимально непредсказуемый и отврательный, ты никогда не знаешь в каком месте что сломается при агрейде на новую версию дистрибутива.
По возможности нам нужен атомарный апдейт, который гарантированно и предсказуемо обновляет профиль на новую версию. Пока ответа на этот вопрос нет.
Join development
В данный момент мы экспериментируем с разными концепциями, смотрим на подход OSTree и тестируем образы Btrfs. Приглашаем вас поучаствовать в дискусии и происоедениться к разработке
- Read how to join development https://docs.flipper.net/one/how-to-join
- Read about Flipper OS https://docs.flipper.net/one/cpu-software/flipper-os