Bedrock Linux: грандиозный (не)дистрибутив


Привет, Голос!

Давенько я уже не писал про свежие релизы дистрибутивов Linux... Но... Подождите!

Эта статья будет не совсем о дистрибутиве. В какой-то степени это дистрибутив, в какой-то степени это набор утилит, но по-настоящему корректным будет назвать Bedrock Linux мета-дистрибутивом.

Кроме Bedrock мы затронем контейнеры, виртуальные машины и whatnot. Итак, поехали!

Что за мета-дистрибутив, спросите вы? Представьте, что вы хотите запустить приложение, которое по каким-то причинам отсутствует в репозиториях вашего дистрибутива. Или вам нужна более свежая версия, и вам лень собирать его из исходников. Что же делать?

Позвольте вначале рассказать вам о...

Виртуальные машины

Иногда, если вы попали в ситуацию, которую я описал выше, вы можете прибегнуть к виртуальным машинам. Плюс в том, что ОС эмулируется полностью, - а значит практически всё будет эмулироваться. Это обеспечит работу необходимой вам системы, и всех приложений в ней. Однако, как это часто бывает, вместе с возможностями, открываемыми для нас виртуальными машинами, идут также и негативные стороны этой истории. А это оверхэд, т.е. излишняя нагрузка на вашу систему, диск и прочие программно-аппаратные части. Эти проблемы адресованы в современных процессорах при помощи множества разных оптимизаций, но сколько ни оптимизируй, всё равно 100% случаев предусмотреть невозможно, и даже если ваша виртуальная ОС будет работать со скоростью 100% от реальной, вот уж от дискового оверхэда вы точно никуда не денитесь (вам надо иметь на диске как основную (хост) ОС, так и виртуализируемую ОС, - итого нужное место на диске, грубо говоря, х2).

Итак, виртуальные машины - классно для запуска "чужеродных" приложений - но требуют много ресурсов и создают оверхэд. Кроме того, изначальная установка, настройка, и запуск виртуальной машины (особенно в случае если это происходит не в серверной среде и не при помощи соответствующих ей гипервизоров), займет прилично времени (в типичном случае, установка виртуальной машины с убунту займет примерно столько же, или чуть больше, чем установка "убунты" на физическое железо).

Докер и контейнеры

Современные контейнерные технологии позволяют запускать процессы от "других" или "не родных" ОС поверх того ядра, что у вас уже есть, но находясь при этом в другом "пространстве системы". Это неплохо экономит системные ресурсы - вам уже не нужно полностью эмулировать 100% всего железа, как делают виртуальные машины. По сути, можно рассматривать докер в некоторой степени как супер-прокачаенный chroot (nix) или jails (freebsd). Запускаются контейнеры тоже быстрее. Однако здесь есть и негативные стороны. Конечно, оверхэд по диску обычно меньше, чем в случае с ВМ (вам не нужно качать и использовать ядро системы, например), и вы получаете более быстрый запуск контейнеров. Однако есть некоторые свои проблемы, например, с изоляцией процессов (обычно сам демон докера запускается и работает от суперпользователя, что само по себе в некоторой степени опасно).

Что же делать?

Предположим, вы по прежнему хотите пользоваться софтом из разных дистрибутивов, но вам не нравятся проблемы с подходами "ВМ" и "Контейнеры", из-за оверхэда, проблем с безопасностью, требованиям к настройке и знаниям или по каким-то другим причинам.

Не переживайте - на сцену выходит Bedrock Linux. Дистрибутив, который совсем не дистрибутив!

Bedrock Linux

Окей, вам стало интересно. В первую очередь вы хотите заполучить ISO Bedrock Linux, так как я вас заинтриговал, не так ли? Не торопитесь. У Bedrock нет своего ISO... Так как это не совсем дистрибутив в традиционном понимании.

Простыми словами, Bedrock Linux - это набор специальных утилит, которые позволяют "захватить" (да, именно так: hijack) вашу основную систему и превратить её в Bedrock. Зачем это нужно?

Всё для того же. После того как вы используете скрипты установки Bedrock для захвата системы на вашем ПК, ноутбуке или сервере, вы получите в собственное пользование уникальную штуку. Bedrock позволяет устанавливать "окружения". Ваше текущее окружение (например, я устанавливал Bedrock поверх ArchLinux на ноутбуке и поверх Debian на сервере) становится основным. Так же вы получаете набор утилит, позволяющий создавать, изменять и удалять другие окружения.

Только посмотрите на эту красоту:

sudo brl fetch arch debian
sudo pacman -S mupdf && sudo apt install texlive
pdflatex preexisting-file.tex && mupdf preexisting-file.pdf

brl fetch - это команда из набора инструментов Bedrock, загружающая для вас новые "окружения" (в данном случае, арч и дебиан). При этом хост-машина может быть одной из этих ОС, или вообще какой-то другой, не важно.

Так, подожди, Ден, - скажет внимательный пользователь. Тут какая-то ерунда! Ведь ты во второй команде устанавливаешь приложение mupdf при помощи менеджера пакетов Pacman (ArchLinux), а следующей командой устанавливаешь texlive при помощи менеджера пакетов apt (Ubuntu/Debian). А затем запускаешь эти приложения... Это какая-то дичь!

Конечно, в обычном линуксе такие команды не имели бы смысла (исключения: странные, необычные установки Linux, или использование нескольких пакетных менеджеров, или использование алиасов), ведь в одной ОС традиционно "живёт и здравствует" только один менеджер пакетов. Кроме этого, даже когда есть возможность установить чужеродный менеджер пакетов (напр: Pacman внутрь Fedora или apt внутрь Arch) разработичики дистрибутива часто не рекомендуют так делать, т.к. это может привести к конфликтам в системе и к проблемам с пакетами (программами).

Однако, при установке Bedrock все эти проблемы не имеют смысла, т.к. утилиты бэдрока заботятся о том, чтобы каждое приложение было установлено в корректное окружение и запускалось именно там. Здорово, правда?

Теперь, с этим знанием, вам достаточно установить любой (в идеале, поддерживаемый Bedrock) дистрибутив Linux, а затем "захватить" ваш основной дистрибутив при помощи утилит Bedrock, - и мощь всех дистрибутивов окажется в вашей власти, одновременно.

При этом, оверхэд, создаваемый Bedrock, значительно меньше, чем оверхэд, создаваемый Докером (который в свою очередь обычно меньше, чем оверхэд, создаваемый виртуальными машинами). Если, конечно, вы не планируете устанавливать про 10 копий VLC: одну в Ubuntu, другую в Arch, третью в Debian и так далее). Хотя, вы можете это сделать в Bedrock, если вам это нужно:

# arch, debian, and ubuntu are installed
# install vlc from arch
sudo pacman -S vlc
# install vlc from debian
sudo strat debian apt install vlc
# install vlc from ubuntu
sudo strat ubuntu apt install vlc
# run default vlc
vlc /path/to/video
# run arch's vlc
strat arch vlc /path/to/video
# run debian's vlc
strat debian vlc /path/to/video
# run ubuntu's vlc
strat ubuntu vlc /path/to/video

Зачем такой функционал, спросите вы? Ну, например, чтобы установить нескололько разных версий VLC, тестировать их между собой, и т. д.

Как установить

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

Для начала, откройте файл со ссылками на последние релизы вот тут:
https://raw.githubusercontent.com/bedrocklinux/bedrocklinux-userland/0.7/releases

Выберите подходящую для вас архитектуру из раздела # Current release # - в большинстве случаев это будет "x86_64". Скорее всего вас устроит вот эта ссылка:
https://github.com/bedrocklinux/bedrocklinux-userland/releases/download/0.7.23/bedrock-linux-0.7.23-x86_64.sh - переходить по ней не надо (это скрипт установки), но надо скачать. Поэтому делаем:

wget https://github.com/bedrocklinux/bedrocklinux-userland/releases/download/0.7.23/bedrock-linux-0.7.23-x86_64.sh

Что скачает для нас установщик (хайджекер) бэдрока версии 0.7.23. Прекрасно, давайте же захватим текущую систему. ВНИМАНИЕ: не переходите к этому шагу, если не уверены, что делаете. Сделайте бэкапы всех важных данных с вашей текущей машины. Вы были предупреждены.

sudo sh ./bedrock-linux-*.sh --hijack
 ```Скрипт попросит вас подтвердить действие, введя соответствующий текст (без кавычек, но с восклицательным знаком). После ввода запрошенного текста, ваша система будет успешно захвачена дистрибутивом Bedrock и всё, что останется для завершения этого процесса, - перезагрузка вашего устройства.

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

brl tutorial basics


Или, к примеру, вы можете установить archlinux и alpine, а так же мою версию телеграма с широкими месседж-бабблами из репозиториев ArchLinux'а и одновременно утилиту gopass из Alpine:```rl fetch arch alpine
sudo pacmacman -Syyu yay && yay -S telegram-desktop-wide && sudo apk add gopass

граничения и сложности Bedrock

Конечно, бэдрок не всесилен. Во-первых, если вы хотите воспользоваться каким-то редким дистрбутивом через функционал бэдрока (то есть ваш желаемый дистрибутив - это не Alpine, Arch, Artix, CentOS, Debian, Devuan, Exherbo, Fedora, Gentoo, Raspbian, Ubuntu или Void), то вам придётся заняться добавлением данного дистрибутива и тестированием его самостоятельно (возможно, разработчик бэдрока вам поможет).
Во-вторых, вам придётся освоить бэдрок, его команды, нюансы работы с ним, - это добавляет одновременно как множество новых возможностей для вас, но, так же, как в любой более сложной системе, добавляет и потенциально возможных проблем.
В-третьих, бэдрок полагается на ваш разум и рассудок, и не занимается самостоятельно вопросами изоляции процессов друг от друга. Иначе говоря, вы просто получаете до 12+- дистрибутивов в одном (список совместимых дистрибутивов доступен вот здесь).

Лично я считаю, что бэдрок - отличный инструмент и дистрибутив, особенно для тестирования различных приложений и ускоренного освоения разных Linux-based операционных систем. Так ли это для вас? Что в целом вы думаете о бэдроке? Какой дистрибутив вам хотелось бы видеть в поддерживаемых? Напишите об в комментариях! :)

Спасибо что дочитали до конца и надеюсь материал был вам полезен.

Links

Удачи и до новых встреч,
@sxiii aka Den Ivanov from OoOslo City


Comments 0