AcoolA или работа над Calculate Linux 14

{{TOC}}

Перемещаемые профили

Пока нет названия для чего-то нового, приходят в голову разные варианты. Вот и эту главу решил назвать “Перемещаемые профили”. Перемещаемые профили системы - это то, что ляжет в основу нового дистрибутива Calculate Linux 14.0.

Как это иногда бывает, для подготовки нулевой версии мы задерживаем релиз на неопределённый срок. Впереди много работы, важно задокументировать все моменты, т.к. главная особенность CL14 будет рассчитана на продвинутых пользователей.

Работа над новой версией CL14 уже началась, но вестись она будет в отдельном перемещённом профиле - дистрибутиве под рабочим названием “AcoolA”. Дистрибутив будет наследовать профиль CLDX, тестируя новый функционал. Как только появится поддержка перемещаемых профилей в утилитах, тестовый дистрибутив появится в свободном доступе.

Преимущества перемещаемых профилей

В настоящее время Calculate Linux использует один оверлей Calculate, в котором описаны профили дистрибутивов - флаги, маски, переменные и т.д., а так же пакеты, шаблоны и переменные утилит. Это удобно, если разработка ведётся централизованно одной командой разработчиков. Создание какого-то ответвления, даже использование сторонних оверлеев просто не предусмотрено утилитами. В итоге все хранят свои шаблоны в образе системы, в крайнем случае подключая локальный репозиторий.

CL14 будет иметь не один, а два оверлея: базовый Calculate и оверлей дистрибутива Distros. В Distros будут перемещены профили дистрибутивов. По аналогии с репозиторием Distros можно будет создавать свои версии дистрибутива просто склонировав его и изменив на своё усмотрение. Название оверлея, разумеется, может быть изменено.

Что содержит профиль дистрибутива? - все отличия конкретного дистрибутива от профиля “desktop”, наследуемого из оверлея Calculate. Почему именно “desktop” и почему из оверлея Calculate? Оверлей Calculate содержит уже достаточное кол-во преднастроенных переменных, которые не нужно будет каждый раз копировать и поддерживать в своём форке. Помимо этого Calculate содержит дерево шаблонов, которые удобно брать за основу. Профиль “desktop” удобно наследовать, т.к. он оптимизирован для графического окружения, содержит настройки ядра, размаскировки определённых пакетов, например libreoffice. Удобно в своей системе использовать готовый репозиторий бинарных пакетов, где как минимум версии пакетов будут совпадать.

Благодаря перемещаемым профилям вы сможете:

  • Хранить и использовать все свои изменения, начиная от состава пакетов и заканчивая ebuild-ами и шаблонами в отдельном публичном репозитории.
  • Использовать наработки других пользователей.
  • Участвовать в коллективной работе над различными версиями дистрибутивов.

Новая система обновлений

В данный момент, чтобы избежать коллизий при обновлении портежей, когда версия пакета, отмеченного в оверлее стабильным из портежей удаляется, а новая ещё не размаскирована, портежи обновляются в Git-е одновременно с оверлеем Calculate. В CL14 обновление будет происходить по другому. Портежи будут синхронизироваться по крону 2-3 раза в сутки. Оверлей Calculate будет обновляться по мере внесения изменений. Профиль же дистрибутива при обновлении будет ссылаться на определённые версии портежей и оверлея Calculate. Выступая в роли разработчика дистрибутива, вы будете пропускать через себя все коллизии при обновлении, оставляя пользователям разрешённые зависимости.

Если проект с дистрибутивом перестаёт поддерживаться - его можно форкнуть, если это временно, можно будет настроить обновление всегда до свежей версии портежей и вручную решать зависимости, продолжая использовать профиль дистрибутива как основу. По всей видимости в настройках будет задан временной интервал, по истечении которого при неактивности разработчика дистрибутива, обновление перейдёт до свежих версий оверлея Calculate и портежей.

Утилита cl-update, впервые появившаяся в пакете calculate-update будет отвечать за обновление системы. В неё перейдёт функционал из calculate-assemble. То, что выполняется автоматически на протяжении нескольких лет при сборке дистрибутивов CL, в виде обновления библиотек perl, python и т.д. при обновлении пакетов, можно будет использовать в своей системе при обновлении. В начале cl-update не будет учитывать пользовательские изменения флагов и масок, чтобы избегать коллизий, в будущем, если получится, можно будет добавить и другие режимы работы. Для cl-update появится и графическая составляющая. Говоря другими словами, CL14 сможет обновлять себя через графическое приложение, открываемое через иконку в трее. Так как при исопользовании бинарных пакетов важно своевременно выполнять синхронизацию портежей, cl-update при вызове будет обновлять портежи и оверлеи.

Calculate-assemble вместо Calculate-builder

В CL14 мы решили отказаться от поддержки интерактивной сборки системы, поддержка которой ведётся с 2009 г. Вместо этого усилия будут сосредоточены на функционале calculate-assemble, который начнёт использовать наработки calculate-builder, а именно поддержку слоёной файловой системы aufs. Для того, чтобы быстро внести изменения в систему вам не нужно будет её устанавливать специальным образом, вы просто подмонтируете iso образ в текущий раздел, внесёте изменения и запакуете. Утилиты из calculate-assemble сами подготовят обновление для вашего репозитория, если вы являетесь разработчиком или просто храните свои настройки в Git.

Предстоит много поработать над calculate-assemble, добавив поддержку графического клиента.

Другие полезные изменения

Разумеется мы не спроста отказались от builder-режима загрузки. CL14 будет собирать initramfs при помощи Dracut. В отличие от genkernel он модульный, поддерживает udev, plymouth, загрузку образа из iso. Чтобы не усложнять код и не дублировать функционал, часть из которого перейдёт в calculate-assemble, в dracut будет внесено минимальное количество изменений, без поддержки builder-режима. Ядра calculate-sources будут собираться также без использования genkernel.

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

То что можно увидеть уже сейчас, это обновлённый менеджер входа в сеанс lightdm, используйемый в CLDX. Теперь для каждого пользователя задаётся иконка в виде смешной рожицы. Почему бы и нет? Мы (компания Калкулэйт) более года используем на рабочих местах CLDX. После перехода с CLD при входе в сеанс перестали отображаться фотографии пользователей. После ускорения загрузки и в CLD фотографии пользователей также исчезли, т.к. сеть поднимается позже запуска xdm. Сейчас фотографии отображаются в обоих десктопах. Если сотрудник успел поработать, его фото кэшируется на локальном ПК.

Сегодняшним обновлением все версии Calculate Linux обзавелись tmux-ом. В CDS и CMC screen также заменён на tmux. Мы потратили около недели на изучение настроек как screen, так и tmux, доведя их до удобного вида и исправив некоторые недоработки. Tmux удалось настроить в стиле кальки со статусной строкой сверху. Конечно это послужило последним аргументом в выборе tmux-а :slight_smile: Не смотря на то, что screen не будет предустановлен в систему, его настройки с интерфейсом схожим с tmux также поддерживаются теперь шаблонами.

Голосование, проведённое в VK порадовало. На данный момент 34 пользователя используют screen/tmux, 27 возможно знают, по крайней мере хотят попробовать. VK это не весь мир, умножив на 2, чтобы учесть остальных, получим 100 продвинутых пользователей кальки. Неплохо!

Обращусь теперь к продвинутым пользователям. Много моментов остаются незамеченными, например кол-во цветов в xfce4-terminal. После следующего обновления их будет 256. Слава ревизиям! Уверен это мало кому нужно, но тем не менее, если вы знаете и исправили узкие места, пишите, Сделаем кальку удобней!

Когда релиз?

Обновил http://www.calculate-linux.ru/projects/calculatelinux/roadmap

Как много всего нового. Прямо глаза разбегаются. Уверен - это будет что-то особенное. Обновлений через графическую утилиту не жду, так как всё устраивает, но если будет - то хорошо. Спасибо за разработку этого отличнейшего проекта.

У меня есть может быть такой странный вопрос, но если уж интересоваться чем-нибудь у разработчика операционной системы, так это странными идеями. Я вот смотрю уже много лет на дистрибутивы Линукс и пока вижу только разбег в разные стороны. Все придумывают что-то своё, разные форматы пакетов, разные способы управления настройками и отдаляются друг от друга и отдаляются.

А нет чего-нибудь такого, объединяющего? Например, мне всегда была интересна идея о том, чтобы дистрибутив поддерживал не одну пакетную базу (например apt или rpm), а несколько. Например, возможно ли в принципе, технически создать дистрибутив Линукс, который бы работал как Gentoo дисрибутив, но вместе с тем спокойно устанавливал пакеты через synaptic (от Debian или Ubuntu)?

Что для этого нужно? Запустить второе ядро? Переработать весь механизм работы Линукс ядра, превратив его гибридно-модульное ядро в микроядерную архитектуру? Все эти Xen, KVM и тем более виртуальные машины, на практике нужны только или для серьёзных вещей (и требуют серьёзных ресурсов) или для баловства. Нет какой-то середины, типа умершего User Mode Linux, который предлагал идею закрытой песочницы. Я даже не припомню схожих проектов, которые бы работали нативно, без тормозов на обычных рабочих станциях (которые в Линукс дистрибах почти всегда полу-сервера).

Кстати по поводу различной версионности в дистрибутиве. Есть такой интересный проект, как пакетный менеджер Nix, ну и дистриб на его основе. Хотя, по своему - это очень интересная система, ей мало кто интересуется. Почему? Загадка. Ведь отказ системы или неправильные обновления, после которых часто происходит простая переустановка - это настолько частая проблема, что она всем известна. Но мало кто смотрит в сторону Nix.

В общем, такие идеи возникли у меня, пока читал обзор грядущих событий. Радует, что у вас много идей и есть желание претворять их в жизнь… Ждём новый Calculate, который будет ещё лучше, я уверён.

Товарищи! Прошу прощения за излишнюю жёсткость суждений, но позвольте высказать своё мнение, несмотря на известный принцип - каждый занимается тем, что ему интересно:

Мне кажется сначала стоит всё-таки доделать то, что уже есть. Стабилизировать, вычистить известные баги, а онные присутствуют. Актуализировать документацию, что очень важно. Т.к. в данный момент (взгляд со стороны) - порог вхождения в проект достаточно высок из-за отсутствия внятной документации к актуальному коду.

Мы пробуем calculate для создания инфраструктуры тонких клиентов - проект хорош, многое автоматизировано, но! Но в силу большого количества недоработок - использовать его очень тяжело. Опускаются руки:

1. Делаешь как в документации - не работает.
2. Читаешь тут же справку в дистрибутиве - не работает: справка не актуальна своим же командам.
3. Заявленные возможности работают не всегда ожидаемо, документации по этому поводу нет - приходится надеяться только на форум, где отвечают, но в основном один разработчик,а времени у него, понятное дело на это не много.

И в этой ситуации система переделывается, перепиливается стахановскими методами… Может быть чуток остановиться? :slight_smile:
Потихоньку, с любовью, доделать то, что есть, завиксировать стабильный, документированный “LTS” и уж после этого спокойно и неспешно приниматься за “alfa”-версию…

Ещё раз прошу прощения, что лезу со “своим уставом в чужой монастырь”, но мне кажется и такое мнение будет Вам полезно, для полноты выборки. :slight_smile:

Сергей, пусть вас не пугает план работ. Это естественный процесс, без которого нельзя идти дальше. Вы могли заметить, что в CL существуют три версии утилит - 2.1, 2.2 и 3.1. Поддерживать их сложно, возможно из-за этого вы видите неточности в документации. Перед началом работ над CL14 мы максимально стабилизировали десктопы выпустив незапланированную версию дистрибутива. Сейчас вся работа над альфа-версией пойдёт в отдельной ветке, что никак не отразится на текущих системах.

Поскольку при переходе на версию 3.x в любом случае придётся переписывать утилиты, мы улучшаем их функционал на основании накопленного опыта и новых потребностей.

Мне очень хочется пройти этот этап и как можно скорее выпустить CL14, т.к. дальше мы планируем плотно начать заниматься сервером, шаг за шагом убирая функционал из calculate-server, перенося в отдельные пакеты: calculate-samba, calculate-ftp и т.д., которые будут работать уже с новой версией шаблонов, устанавливаться не только на сервер, но и на десктоп, поддерживать настройку как из консоли, так и из графического клиента, как локально, так и удалённо.

Так как ресурсы как вы понимаете у нас ограничены, мы планируем свою работу максимально эффективно, решая задачи в то время, когда всё для их решения уже есть. Пишите, если вы увидите какие-то неточности в документации.

Кстати о документации. Новый сайт должен исключить проблемы с синхронизацией переводов. Это сейчас, к сожалению, сильно мешает своевременно вносить исправления.

P.S. В форуме не один, а три разработчика отвечают на вопросы, в зависимости от вопросов.

P.S2. Много мелочей можно упустить, глаз замыливается. Указывайте на них на сайте, выделяя текст и нажимая Ctrl+Enter, на форуме или в багтрекере. Реально поможете.