Русский
Русский
English
Статистика
Реклама

Bedrock Linux лего-набор для создания идеального linux-дистрибутива



С момента появления Linux достаточно скоро возникло множество дистрибутивов: Slack, RedHat, Debian, SUSE и т. д. Тогда же возникла и проблема выбора дистрибутива, ведь каждый из них имеет свои особенности и преимущества, которые делают его особенным. RedHat и Debian наиболее стабильные и консервативные из дистрибутивов, Ubuntu заточен на удобство и имеет прекрасный пользовательский интерфейс, Gentoo свобода выбора и гибкость.

У каждого пользователя Linux были моменты, когда ему не хватало некоторых функций, реализованных в других дистрибутивах. Многим в свое время не понравилось, что Debian перешел на systemd и они создали на его основе новый дистрибутив Devuan. Некоторые перешли на Gentoo, где пользователь может создать среду с двумя системами инициализации: как с openrc, так и с systemd.

В разных дистрибутивах этот вопрос решается по-разному. Установка пакета, который отсутствует в штатном репозитории, решается с помощью docker-контейнеров, или использованием систем самодостаточных пакетов snap и flatpak. Можно даже ставить RPM пакеты на системах с пакетным менеджером DEB. В Gentoo имеется поддержка RPM и DEB пакетов. Все это работает, однако плохо масштабируется и не очень стабильно.

Создатели Bedrock Linux пошли дальше и создали полноценный мета-дистрибутив. В нем возможно использование не только пакетов, но и компонент различных Linux дистрибутивов, как кубиков Лего. В одном окружении можно создать систему из нескольких Linux OS, например установку дополнительных пакетов Ubuntu поверх базовых компонент Debian и Arch. Установочный скрипт доступен для следующих платформ.

  • aarch64;
  • armv7hl;
  • armv7l;
  • mips64el;
  • mips64;
  • mips;
  • mipsel;
  • ppc64;
  • ppc64le;
  • ppc;
  • s390;
  • x86_64;
  • x86;

Кстати, а почему установочный скрипт, а не полноценный установочный диск, или образ? Причина в том, что Bedrock Linux не имеет своего канонического дистрибутива, вместо этого имеется набор рецептов по сборке операционной системы из некоего набора ингредиентов. В этом Bedrock Linux похож на другой мета-дистрибутив Gentoo, однако в попытке объять необъятное продвинулся к самым границам здравомыслия, а возможно и перешел их.

Установка Bedrock и базовые команды


Используя уже установленный традиционный дистрибутив Linux с помощью установочного скрипта Bedrock трансформирует его в гибридную систему. Например, у вас уже установлена ОС Debian, с помощью установочного скрипта, вы получаете совмещенную среду с Ubuntu. Для начала надо запустить из под пользователя root.

sh ./bedrock-linux-<release>-<arch>.sh --hijack

Скрипт выдаст предупреждение, что это не учения.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **                                                               ** Continuing will:                                              ** - Move the existing install to a temporary location           ** - Install Bedrock Linux on the root of the filesystem         ** - Add the previous install as a new Bedrock Linux stratum     **                                                               ** YOU ARE ABOUT TO REPLACE YOUR EXISTING LINUX INSTALL WITH A   ** BEDROCK LINUX INSTALL! THIS IS NOT INTENDED TO BE REVERSIBLE! **                                                               ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *Please type "Not reversible!" without quotes at the prompt to continue:> Not reversible!__          __             __\ \_________\ \____________\ \___ \  _ \  _\ _  \  _\ __ \ __\   /  \___/\__/\__/ \_\ \___/\__/\_\_\          Bedrock Linux 0.7.19 Poki

Самое время ознакомиться с таблицей совместимости Linux дистрибутивов. Основные популярные дистрибутивы имеют хорошую степень поддержки, кроме возможно OpenSUSE. Для Linux Mint не поддерживается выгрузка и автоматическое установка. Не надо также забывать про таблицу совместимости компонент между собой. Бинарники, например, переносятся хорошо из одного дистрибутива в другой, а шрифты плохо.

Если все проверки прошли успешно, скрипт вносит необходимые изменения в ОС, после чего нужно перезагрузить компьютер, чтобы изменения вступили в силу. С этого момента пользователь находится в окружении Bedrock Linux. Теперь можно установить дополнительную ОС в контейнер, называемый stratum нечто наподобие chroot окружения, в котором проделаны специальные дыры для коммуникации с другими strata.
Однако прежде, чем начинать желательно ознакомиться с руководством по эксплуатации, вызвав brl tutorial basics. Простейшие команды Bedrock, назначение каждой очевидно.

# brl update# brl version# brl ctatus

Просмотр списка доступных дистрибутивов и установка.

# brl fetch --list# brl fetch alpine# brl fetch void


Как взаимодействуют дистрибутивы в составе Bedrock?


В определенных ситуациях можно выполнять команды из разных strata так, как будто они часть одной привычной Linux OS. Например команды из void и alpine можно использовать в одном конвейере. Первая команда устанавливает пакет jq на alpine, вторая jo на void. Конвейер читает из второй и передает на первую, все происходит прозрачно для пользователя.

$ sudo apk add jq$ sudo xbps-install -y jo$ jo "distro=bedrock" | jq ".distro"

Первоначальная ОС Debian Linux, над которой произвели действие --hijack теперь также является всего лишь stratum. О её существовании можно догадаться, выполнив некоторые из этих команд.

$ brl which lsdebian$ brl which /debian

Более определенно, вывод этих команд будет совпадать с содержимым файла /etc/os-release, который виден из текущего процесса shell. Это логично, так как каждый stratum видит лишь свой локальный файл, иначе параллельно установленные Debian и Ubuntu споткнулись бы о содержимое файла /etc/apt/sources.list.

Однако, если бы все файлы были локальными разные дистрибутивы не смогли бы общаться между собой. Для того, чтобы это стало возможно необходимы глобальные файлы. Такие файлы действительно существуют.

$ brl which /bedrock/etc/bedrock.confglobal$ brl which /runglobal$ brl which /tmpglobal

Для тех случаев, когда процессам одного дистрибутива необходимо достучаться до локальных файлов другого, реализованы cross пути. Например чтобы из одной strata прочитать файл os-release другой нужно обращаться к ресурсам файловой системы используя путь /bedrock/strata/. Сам stratum bedrock служит лишь для cross чтения и записи файлов. Внутри crossfs файловая система FUSE, в которой запрашиваемые файлы перезаписываются на лету для обеспечения совместимости между различными strata.

$ brl which /bedrock/strata/bedrock/etc/os-release bedrock$ cat /bedrock/strata/bedrock/etc/os-releaseNAME="Bedrock Linux"ID=bedrockID_LIKE=bedrocklinuxVERSION="0.7.19 (Poki)"VERSION_ID="0.7.19"PRETTY_NAME="Bedrock Linux 0.7.19 Poki"HOME_URL="http://personeltest.ru/aways/bedrocklinux.org"$ brl which /bedrock/strata/my-alpine/etc/os-release my-alpine

Если необходимо выполнить внутреннюю команду определенной strata, следует воспользоваться соответствующим префиксом.

$ strat void sh -c 'apk --help'

Обновление Bedrock


Bedrock обновляется незатейливо и просто Как и все дистрибутивы Linux, достаточно запустить brl update из под пользователя root. Это команда обновит лишь stratum Bedrock, остальные strata обновляются своими штатными средствами: например yum update, или dnf update для Redhat и CentOS.

Удаление strata


Тоже ничего сложного сначала дистрибутив выключается, затем следует удаление.

$ sudo brl disable alpine$ sudo brl remove alpine$ sudo remove -d void

Последняя команда совмещает, операции disable и remove.

Для чего действительно нужен Bedrock Linux?


В этот момент многие читатели скорее всего задаются вопросом: для чего нужно скрещивать ежа с ужом и создавать гибридные ОС, ведь не всегда рабочая станция Linux сама по себе бывает достаточно стабильной, особенно с закрытыми драйверами графической карты, или в сессии Wayland. Попробуем перечислить некоторые сценарии использования Bedrock Linux в практике.
  • Вы предпочитаете стабильные дистрибутивы Linux, такие как RedHat и Debian, однако вам также необходима поддержка нового железа: CPU, или недавно приобретенный принтер. Чтобы получить эту поддержку необходимо установить более свежую версия ядра и пакетов cups, hplips. Такая задача может быть решена единожды, но стабильная система с нестабильными пакетами уже не то,
  • Вам нравится дистрибутив, но не его система инициализации. Скажем, systemd вы предпочитаете openrc, или runit, однако хотели бы при этом использовать Ubuntu.
  • У вас есть задача вести разработку, или сопровождать программное обеспечение для Linux, однако ваш дистрибутив отличается от целевого. Например sh скрипты написанные для bash не будут корректно выполнены в Debian, так как в нем /bin/sh не является ссылкой на /bin/bash. Для таких сценариев в Bedrock Linux достаточно добавить stratum для Debian Linux.
  • Вы пытаетесь изменить ваши представления об использовании Linux OS. Впрочем это уже не имеет отношение к практике.


Источник: habr.com
К списку статей
Опубликовано: 22.02.2021 16:14:10
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Блог компании ruvds.com

Настройка linux

Системное администрирование

Linux

Debian

Ubuntu

Linux-дистрибутивы

Дистрибутивы

Ядро linux

Категории

Последние комментарии

© 2006-2021, personeltest.ru