LINUX.ORG.RU
ФорумTalks

Bedrock Linux

 ,


0

1

Bedrock Linux – это «метадистрибутив», что в понимании авторов означает «программа для управления другими дистрибутивами».

Вы ставите любой дистрибутив по вкусу (из списка поддерживаемых) тем способом, который вам нравится. После этого запускаете установщик Bedrock Linux. Bedrock Linux перехватывает управление над системой, внедряясь в качестве дефолтного инита, изменяя и добавляя точки монтирования и т.п. После перезагрузки вы оказываетесь в системе, которая работает «внутри» Bedrock Linux. Вы можете устанавливать другие операционные системы семейства Linux «рядом» с основной системой и свободно смешивать софт из них. (Общий /bin, список файлов *.desktop, bash-completion, man pages и другие интеграционные фичи).

Библиотеки при этом не общие, таким образом дистрибутивы не нарушают бинарную совместимость друг друга.

Это всё красивая теория. Что на практике:

Я пожертвовал установленным на флешке Арчем, чтобы поэкспериментировать с Bedrock. Этот Арч, как и все мои Арчи, представляет собой клона основной системы, которая работает около 10 лет без переустановок. Так что я заранее был готов, что при накатывании сверху Bedrock всё развалится. Как пишут авторы, они тестируют работу системы только поверх свежеустановленного дистрибутива.

Для начала:

# ./bedrock-linux-0.7.17-x86_64.sh --hijack Arch
No file detected at /sbin/init.  Unable to hijack init system.

Смотрим в код. Установочный скрипт даже не пытается обнаружить, какой инит на самом деле использован:

    if ! [ -r "/sbin/init" ]; then
        abort "No file detected at /sbin/init.  Unable to hijack init system."
    fi

Мне лень писать ln -s ... вручную, поэтому просто ставлю пакет, который притащит нужный симлинк:

# pacman -S systemd-sysvcompat

Вот такой у меня повидавший жизнь и кучу апдейтов экземпляр Арча, в котором не стоит systemd-sysvcompat. Ладно, пофиксил, едем дальше.

Запускаю установку, на этот раз Bedrock ставится нормально. Говорит, что внедрился в операционную систему, и что надо перезагрузиться.

Сначала смотрю, что он сделал:

  • Создал директорию /bedrock со своими конфигами и бинарниками.
  • Заменил симлинк /sbin/init на свой скрипт запуска.

Других изменений не заметно.

Конфиг в /boot/grub/grub.cfg не поправил и даже не сказал, что я должен это проверить. А в конфиге вписан совсем не тот init:

menuentry "Archlinux Ester (mainline)" {
    linux /boot/vmlinuz-linux root=$root_dev ro init=/usr/lib/systemd/systemd
    initrd /boot/initramfs-linux.img
}

Правлю инит. Перезагружаюсь.

Получаю сообщение «No suitable video mode found. Booting in blind mode.» и… система не грузится.

Ну, это мой косяк. Сообщение было и раньше, и пока systemd не переключит видеорежим, экран действительно оставался чёрным.

Догадываюсь, что Bedrock пытается на чёрном экране показать мне своё boot menu. Нажимаю enter. Запускается systemd. Ура, у нас есть картинка.

Снова лезу в /boot/grub/grub.cfg. Добавляю строку insmod all_video. Перезагружаюсь.

На этот раз всё нормально, Bedrock рисует загрузочное меню, и оно отображается на экране. Предлагает грузиться через systemd или через runit-init, который у меня, оказывается, тоже установлен. Я и не помню, что его сюда ставил. Правда, в runit-init грузиться смысла нет, половина программ в Арче просто не поймут отсутствие systemd.

Загружаюсь. Сети у приложений нет. Обнаруживаю, что у меня хаос в ip route и в /etc/resolve.conf. NetworkManager видит Wifi, но, видимо, какой-то подземный стук вмешался в работу. Вручную правлю маршруты и резолверы имён. Сеть появляется.

==> Вы находитесь здесь.

Теперь надо разобраться, что мешает автоматике настраивать сеть правильно. Пока на этом из приключений всё. И дальше можно ставить рядом приложения из Debian, Void, Alpine, да хоть Gentoo компилировать.

Stay tuned!

★★

Последнее исправление: wandrien (всего исправлений: 2)

«программа для управления другими дистрибутивами».

Управление по управлению всеми управлениями.

chenbr0
()
Ответ на: комментарий от Korchevatel

Скучно жить. ЛОР скатился до обсуждения великих тайн apt-а, прописанных в мане на его конфиг. RTFM вышел из моды, сидят неучи..

Душа требует приключений.

wandrien ★★
() автор топика
Ответ на: комментарий от Korchevatel

Давно я такой дичи не видал.

© Bedrock Linux 2012-2020

Чувствую что-то знакомое, тогда не впечатлило и сейчас.

xwicked ★★☆
()
Последнее исправление: xwicked (всего исправлений: 2)

дочитал до ==> понял, что ничего не понял.

sudoapter
()
Ответ на: комментарий от chenbr0

Как хорошо! Ведь после этого надо подправить конфиги, исправить ошибки и можно жить! До перезагрузки...

ChekPuk ★★★
()
Ответ на: комментарий от wandrien

Ну, теперь тебе, видимо, весело. Значит, всё хорошо.

Miguel ★★★★★
()
Ответ на: комментарий от Miguel

В арче есть арчепроблемы, в генте гентопроблемы, а в дебиане говномамонтопроблемы.

В бедроке можно арче-генто-говномамонто-проблемы поиметь.

Круто же, чо.

takino ★★★★★
()

не читал, но осуждаю

crypt ★★★★★
()

Так и не понял, почему /etc/resolv.conf симлинкается на файл от systemd-resolved. Сам systemd-resolved выключен.

Проще оказалось его включить.

wandrien ★★
() автор топика
Ответ на: комментарий от wandrien

Так и не понял, почему /etc/resolv.conf симлинкается на файл от systemd-resolved.

Новая фишка такая, всё хочу тему создать, чё скажут знатоки: https://fedoraproject.org/wiki/Changes/systemd-resolved

В федора-33 будет так, в убунту давно, но немного по другому.

papin-aziat ★★★★★
()
Ответ на: комментарий от papin-aziat

У него автодетект есть, как бы.

На хосте, с которого скопирована система, всё нормально:

$ ls -l /etc/resolv.conf
lrwxrwxrwx 1 root root 35 окт  5 23:35 /etc/resolv.conf -> /var/run/NetworkManager/resolv.conf

После запуска из-под Bedrock, симлинк становится /run/systemd/resolve/stub-resolv.conf.

Забил. Через systemd тоже работает, какая разница. Всё равно он по умолчанию свой резолвер тащит в систему.

wandrien ★★
() автор топика
Ответ на: комментарий от anti_win

никсОСь/гуикс

Ненужно. Я не собираюсь перекомпилировать 30 гигов пакетов только потому, что в сборочном скрипте glibc кто-то поправил запятую.

когда есть контейнеры

По сути это контейнеры наоборот. В обычном контейнере указываете, что пробрасывать, а здесь – по большей части, что НЕ пробрасывать. (Локальный /usr, /var, большая часть /etc и т.п. Общие /tmp, /run, все пользовательские данные и т.п.)

wandrien ★★
() автор топика
Последнее исправление: wandrien (всего исправлений: 1)

Зачеем? потери квм+агент околонулевые.
а хочется ещё большей секьюрности - можно установить и опенвз.

darkenshvein ★★★★★
()
Последнее исправление: darkenshvein (всего исправлений: 1)
Ответ на: комментарий от chenbr0

Управление по управлению всеми управлениями.

где-то далеко в Мордоре жадно задвигал носом леннарт, обнюхивая воздух вокруг. Он почуял конкурента.

darkenshvein ★★★★★
()
Ответ на: комментарий от wandrien

Я не собираюсь перекомпилировать 30 гигов пакетов только потому, что в сборочном скрипте glibc кто-то поправил запятую.

Ни разу не собирал glibc в NixOS. Из того, что регулярно не приезжает из кеша, и требует сборки (не считая самописного) — драйвера для nvidia.

kmeaw ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.