Разработчиците на проекта postmarketOS, който развива дистрибуция на Linux за мобилни устройства, обявиха създаването на атомно обновляем вариант на дистрибуцията. Новата версия се разработва под името Duranium и е забележителна с предоставянето на системата като единно цяло, без разделяне на отделни пакети. Отбелязва се, че новият вариант отговаря на идеята, че устройството трябва просто да работи, без потребителят да знае за съществуването на терминал и да разбира в особеностите на системата.
Системната среда в директорията /usr се монтира в режим само за четене с използване на файловата система EROFS и се проверява при всяко стартиране по цифров подпис. Директорията /usr има размер 5GB. За контрол на целостта на данните в директорията /usr се използва dm-verity, а при откритие на модификация на съдържанието — стартирането се блокира. Проверъчният хеш е интегриран в унифицирания образ UKI (Unified Kernel Image), който обединява обработчика за стартиране на ядрото от UEFI (UEFI boot stub), образа на ядрото на Linux и зарежданата в паметта системна среда initrd, използвана за начална инициализация преди монтирането на кореновата файловата система. UKI-образът е оформен като един изпълним файл в формат PE и се извиква от UEFI буутлоудера.
Останалите директории, освен /usr, са част от кореновата директория, достъпна за запис и запазвана между перезапусканията и обновленията. Съдържанието на кореновата директория задължително се шифрова с използване на LUKS2, което поставя повишени изисквания към оборудването. Шифрованата коренова файловата система се създава по време на първото стартиране или след изпълнение на нулиране към заводските настройки. По подразбиране се създава празен ключ, позволяващ автоматично отключване на шифрованата директория. В мастера за начална настройка и в конфигуратора на потребителя се предлага да зададе парола за декриптиране.
Настройките по подразбиране се съхраняват в системния образ в директорията /usr/share/factory/etc. По време на първото стартиране в директорията /etc се създават символични линкове към всички файлове в /usr/share/factory/etc, с изключение на файловете passwd, group, shadow, fstab, machine-id и hostname. При необходимост от промени в настройките по време на работа, символичният линк се заменя с копие на файла.
Актуализациите се инсталират чрез замяна на целия системен образ. На носителя се създават два идентични коренови дяла - активен и пасивен. Новата актуализация се инсталира в пасивния дял, без да влияе на работата на активния. След проверка на коректността на инсталираната актуализация и успешен рестарт, дяловете сменят местата си - дялът с актуализацията става активен, а предишният активен дял преминава в пасивен режим и чака инсталирането на следващата актуализация. Ако след актуализацията възникнат проблеми с зареждането, се извършва автоматичен откат на предишната версия на системата.
Подобен подход значително улеснява отстраняването на проблеми и диагностиката, тъй като разработчиците могат точно да възпроизведат състоянието, при което е възникнала грешка, без да е необходимо да възпроизвеждат състава на системата на потребителя на ниво отделни пакети и да отчитат наличните комбинации от версии на пакети. Недостатък е по-високото изискване към хардуера, което не позволява използването на Duranium на всички устройства, поддържани в postmarketOS.
Съдържанието на системния образ Duranium се формира от единна пакетна база на postmarketOS, базирана на Alpine Linux, стандартната C-библиотека Musl и комплекта утилити BusyBox. Релизите на postmarketOS и Duranium са почти идентични по състав, но се различават по методите на доставка на системата. За формирането, инсталирането и обновяването на системните образи се използват компонентите systemd-sysupdate, systemd-repart и systemd-verity-setup.
Допълнителните приложения се инсталират във формат Flatpak или с помощта на пакетния мениджър Coldbrew. Coldbrew позволява да се инсталират пакети от репозitories на Alpine Linux в домашната директория на потребителя. При стартиране подобни пакети се изолират с помощта на инструмента bubblewrap.
Източник: opennet.ru
