Svitlo GNU/Linux. Незалежний дистрибутив, який збирається з вихідних кодів
Запускаю публічну фазу проєкту, над яким працював кілька місяців. Svitlo GNU/Linux. Незалежний український дистрибутив для x86_64. Це не форк Debian, Arch чи Fedora. Уся система від тулчейна (binutils, gcc, glibc), ядра і завантажувача до робочого столу збирається з вихідного коду єдиним рушієм. У завантажувальному образі лежать ядро, завантажувач, мережа і wifi-стек та сам менеджер пакетів, тож система здатна керувати собою з першого запуску
Менеджер пакетів promin
promin реалізує модель, близьку до Nix. Кожен пакет встановлюється у шлях, ключем якого є хеш від усіх входів збірки (вихідник, версія, тіло рецепта, хеші залежностей)
/promin/store/{hash}-{name}-{version}/
Різні версії і прапори дають різні шляхи, тому кілька версій співіснують без конфлікту. Активне середовище це симлінк-ферма (покоління профілю). Перемикання між поколіннями атомарне, відкат миттєвий. Хеш рахується від канонічного представлення рецепта, тому косметичні правки не запускають зайвих перезбирань
Клієнт і сервер
promin працює за схемою клієнт-сервер. Тонкий сервер віддає рецепти, вихідники і бінарні пакети за хешем по HTTP і сам нічого не складає. На встановленій системі встановлення йде binary-first. Спершу перевіряється store, потім локальний кеш, далі бінарник із сервера за збігом хеша, і лише у крайньому разі складання з вихідників. Бінарник із сервера верифікується sha256 перед розпакуванням. Для користувача це означає, що пакети ставляться так само швидко як у звичайному дистрибутиві, а складання з джерела лишається деталлю інфраструктури на стороні сервера
Робочий стіл
COSMIC (libcosmic, Rust) на чистому Wayland. У базовій системі немає X11, XWayland виноситься у факультативний користувацький пакет. Це знімає типовий шар прихованих залежностей, який у дистрибутивах загального призначення тягне за собою весь стек X11 без явного запиту
SvitloLinux-pkgs
Окрема організація на GitHub для бази вихідних кодів. Модель проста, один пакет один репозиторій з ім’ям пакета без префіксів. Версія це гілка, перший коміт гілки це vanilla upstream as-is, наші правки лежать поверх, тож дельта відносно upstream завжди читається з історії. Гілки main немає, default-гілка вказує на актуальну версію. Кількість репозиторіїв дорівнює замиканню профілю, а не довільному масиву
Чесно про стан
Проєкт на ранній стадії. Інфраструктура складання і менеджер пакетів працюють, рецепти ростуть знизу вгору від крос-тулчейна до COSMIC. Шифрування збережених даних з ключем, що генерується під час встановлення, і відсутність телеметрії заявлені як цілі архітектури, але це планований стан, а не поточний. Завантажувальний образ ще не опублікований, дата залежить від готовності базового профілю. ARM наступним кроком після стабілізації x86_64
Кого це може зацікавити
Інженерів, що працюють з reproducible builds, фахівців із безпеки, яким потрібен прозорий ланцюг постачання, освітні установи, де ідентичність парку машин до біта і миттєвий відкат покоління знімають типові операційні витрати, і всіх, хто хоче розібратися, як влаштований Linux нижче рівня пакетного менеджера дистрибутиву загального призначення. Запрошую до обговорення архітектурних рішень, баг-репортів і pull-реквестів
Посилання
svitlolinux.org
github.com/SvitloLinux
github.com/SvitloLinux-pkgs