LINUX.ORG.RU

Создание загрузочных образов boobstrap v1.0

 


10

4

Хочу представить вашему вниманию фреймворк под названием boobstrap, написаный на POSIX shell, для создания загрузочных образов с дистрибутивами GNU/Linux. Фреймворк позволяет пройти весь пусть в три простых шага: от развёртывания системы в chroot, создания initramfs-образа включающего в себя систему из chroot, и в конечном счёте загрузочного ISO-образа. boobstrap включает в себя три утилиты mkbootstrap, mkinitramfs и mkbootisofs соответсвенно.

mkbootstrap устанавливает систему в отдельную директорию, имеется нативная поддержка CRUX, а в случае Arch Linux / Manjaro и дистрибутивов на основе Debian должны быть использованы сторонние утилиты pacstrap, basestrap и debootstrap соответственно.

mkinitramfs создаёт initramfs-образ, вы можете использовать установленную систему в директории как «оверлей», сжатый при помощи SquashFS, либо загрузившись в систему работать прямиком в tmpfs. Так например, команда mkinitramfs `mktemp -d` --overlay "arch-chroot/" --overlay "/home" --squashfs-xz --output initrd создаст initrd файл, включив в него два оверлея с «arch-chroot/» системой и вашим «/home», сжатых при помощи SquashFS, который далее вы можете загружать через PXE в tmpfs, либо создать загрузочный ISO образ с этим initrd.

mkbootisofs создаёт BIOS / UEFI загрузочный ISO-образ из указанной директории. В директорию достаточно положить /boot/vmlinuz и /boot/initrd.

boobstrap не использует busybox, а для создания рабочего окружения initramfs копируется минимальный набор программ с использованием ldd, необходимых для загрузки и переключения в систему. Список программ для копирования, как и всё остальное, можно настроить через файл конфигурации /etc/boobstrap/boobstrap.conf. Так же, вы можете установить любой минималистичный дистрибутив в отдельный chroot/, из которого далее создать уже полноценное initramfs окружение. В качестве такого минималистичного, но при этом полноценного окружения предлагается использовать шаблон «crux_gnulinux-embedded», который после xz занимает компромиссные 37мб. busybox же, кроме своего размера, 3-5мб против 30-50мб полноценного GNU/Linux окружения, никаких преимуществ более не предлагает, таким образом использование busybox в проекте не видится целесообразным.

Как быстро проверить работоспобность и начать работу? Установите и запустите.

# git clone https://github.com/sp00f1ng/boobstrap.git
# cd boobstrap
# make install
# boobstrap/tests/crux_gnulinux-download-and-build
# qemu-system-x86_64 -enable-kvm -m 1G -cdrom tmp.*/install.iso

Так же вам необходимо доустановить зависимости, а именно: cpio, grub, grub-efi, dosfstools, xorriso. Использование squashfs-tools не обязательно, вы можете работать в tmpfs при соответствующем объёме оперативной памяти. В случае, если в системе чего-то недостаёт, boobstrap об этом сообщит при запуске.

Для упрощения создания конфигураций boobstrap предлагает использовать «шаблоны» и «системы», суть которых заключается в том, чтобы использовать «шаблоны» (bootstrap-templates/) для быстрой установки систем из файла, а непосредственно «системы» (bootstrap-systems/) использовать для настройки конечных конфигураций.

Так например, запуск скрипта boobstrap/bootstrap-templates/crux_gnulinux-embedded.bbuild установит минимальную конфигурацию системы CRUX GNU/Linux и сохранит её в файле crux_gnulinux-embedded.rootfs, далее вы запускаете boobstrap/bootstrap-systems/default/crux_gnulinux.bbuild который загрузит первичную конфигурацию из упомянутого файла, выполнит всю необходимую настройку и подготовит загрузочный ISO. Это удобно, когда например, множество систем используют однотипную конфигурацию: чтобы каждый раз не описывать одинаковый набор пакетов, вы используете один шаблон, на основе которого уже и создаёте загрузочные образы систем с конечной конфигурацией.

Где всё это использовать?

Вы настраиваете систему в файле один раз и запуском оного выполняете её сборку и/или обновление. Система работает в tmpfs, что делает её одноразовой, по-сути. В случае выхода системы из строя, вы одним нажатием кнопки Reset возвращаетесь в исходное состояние. Вы можете спокойно выполнить rm -rf /.

Вы можете настраивать конфигурации всех ваших систем локально, создавать образы, тестировать их в виртуальной машине или отдельном «железе», далее загружать их на удалённый сервер и запуском всего двух команд kexec -l /vmlinuz --initrd=/initrd && kexec -e обновлять всю систему целиком, перезагружая её в tmpfs.

Аналогичным образом вы можете перевести все системы, например на VDS, на работу в tmpfs, а диск /dev/vda зашифровать и использовать только под данные, без необходимости держать операционную систему на ней. Единственной «точкой утечки информации» в таком случае станет только «холодный дамп» памяти вашей виртуальной машины, а в случае компрометации системы (например, подбором пароля ssh или уязвимости в exim), вы можете загрузить новый ISO через «панель управления» вашего провайдера, чтобы вновь вернуть VDS в строй, не забыв при этом, отредактировать конфигурацию системы закрыв все уязвимости. Это быстрее, чем переустановка, последующая настройка и/или восстановление из бэкапа, ведь по-сути, загружаемый ISO с вашей системой это и есть ваш бэкап. «Семь бед — один Reset.»

В конце концов, вы можете создать любой дистрибутив под свои задачи, записать его на USB-накопитель и работать в нём, обновляя по мере надобности и снова перезаписывая его на USB-накопитель. Все данные хранить в «облаках». Больше не нужно переживать за сохранность системы и делать её бэкап, когда система, повторюсь, по сути стала «одноразовой».

Ваши пожелания, предложения и замечания приветствуются.

В репозитории по ссылке далее подробный README-файл (на английском) с описанием каждой утилиты и примеры использования, так же существует подробная документация на русском и история развития, доступные по ссылке: Комплекс загрузочных скриптов boobstrap.

>>> Получить исходный код

★★★★★

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

Больше примеров использования!

Запустите «embedded» конфигурацию boobstrap/bootstrap-templates/crux_gnulinux-embedded.bbuild для минимальной сборки CRUX и получите на выходе файл с корневой ФС crux_gnulinux-embedded.rootfs.

Запустите сборку «initrd» из теперь уже имеющегося «embedded» boobstrap/bootstrap-templates/crux_gnulinux-initrd.bbuild и получите на выходе crux_gnulinux-initrd.rootfs.

crux_gnulinux-initrd.rootfs — это полностью работоспособный initrd готовый к загрузке вместе с ядром, если 164мб это много, не вопрос, давайте пожмём:

# xz --check=crc32 --keep --threads=0 --best --verbose crux_gnulinux-initrd.rootfs
crux_gnulinux-initrd.rootfs (1/1)
  100 %        32.2 MiB / 163.2 MiB = 0.197   1.2 MiB/s       2:14             

32МБ для полноценного «гнутого» окружения, со всеми утилитами, уже не так больно будет загружать через PXE, согласны? Разумеется, это не busybox с его минималистичностью, но в отличии от busybox вам не нужно ничего собирать самостоятельно, в вашем распоряжении обычный GNU/Linux в initramfs. Помимо прочего, в имеющийся initrd включён openssh, так что даже на стадии загрузки системы если что-то пойдёт не так, вы можете решить проблему удалённо. Публичный ssh-ключ будет скопирован из вашего $HOME, смотрите скрипт.

# qemu-system-x86_64 -enable-kvm -m 512M -kernel /boot/vmlinuz -initrd crux_gnulinux-initrd.rootfs.xz
# ssh root@qemu-ip

Пересоберите initrd!

# mkdir initrd/
# mkbootstrap import initrd/ < crux_gnulinux-initrd.rootfs

Напишите свой /etc/rc.local чтобы после загрузки initramfs, например, система скачивалась через bittorrent используя torsocks после чего уже выполняла switch_root в неё, — всё зависит только от вашей фантазии.

Соберите initrd обратно.

# mkbootstrap export initrd/ > crux_gnulinux-initrd.rootfs

И вперёд, загружайтесь со своим initrd.

Другая ОС? Да не вопрос! Установите хоть через виртуальную машину в отдельный файл (образ) любую ОС, затем подмонтируйте его и сохраните состояние для будущего использования.

# qemu-img create archlinux.img 4G
# qemu-system-x86_64 -cdrom archlinux-*-x86_64.iso -hda archlinux.img
# mke2fs -t ext4 /dev/sda
# mount /dev/sda /mnt
# pacstrap /mnt base linux
# umount /mnt
# poweroff
# mount archlinux.img /mnt
# mkbootstrap export mnt/ > archlinux_gnulinux-base.rootfs
# umount /mnt

Теперь в archlinux_gnulinux-base.rootfs свежеустановленный Арч!

Пишите свои шаблоны с использованием данного образа, разворачивайте его, настройте и упакуйте обратно. busybox не нужен, — используйте целиком весь Arch Linux как initramfs! :D

Просто хочу сказать, что в три команды стало можно делать вообще всё. Как угодно крутить-вертеть системами. На любых уровнях. И главное, работать в них, хоть в tmpfs, хоть в overlayfs со squashfs, загружаться хоть через PXE, хоть с USB, откуда угодно и куда угодно, или просто (пере)загружаться в свою систему из уже запущённой используя kexec, обновлять систему и восстанавливать её работу в случае сбоев.

Надеюсь данный фреймворк вам окажется полезен. :)

Spoofing ★★★★★
() автор топика

У меня на патченном гентушном initrd так сервак уже лет 10 как грузится(во время летит!) - корень(да еще и на uclibc-ng вместо glibc) в squashfs в составе initrd.

Приятно видеть что кто-то осилил не только написать подобное(в этом ничего сверхестественного нет, если знаешь как работает Linux), но и запилить документацию(на этом этапе я сломался, поэтому мои скрипты и не опубликованы - ибо кому они кроме меня всрались без документации?)

P.S. За подобное название в наше время толерастии везде где не надо - зачёт :-)

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

кратко: да, умеет.

развёрнуто:

сделать kernel: скачайте сорцы, make defconfig && scripts/config -e OVERLAY_FS && make olddefconfig && make, на выходе arch/x86/boot/bzImage будет вашим kernel. p.s. скоро внесу изменения чтобы был чистый tmpfs, без overlay_fs

разверните любую систему в отдельной директории (чрут, как линуксоиды это называют). например скачайте просто генту.

# wget https://bouncer.gentoo.org/fetch/root/all/releases/amd64/autobuilds/20200618T170443Z/stage3-amd64-20200618T170443Z.tar.xz
# mkdir gentoo/
# tar xf stage3-* -C gentoo/

и создайте initrd с гентой включив её как оверлей

# mkdir initrd/
# mkinitramfs initrd --overlay gentoo/ --output initrd.img

теперь можете загружаться.

qemu-system-x86_64 -kernel /usr/src/linux-*/arch/x86/boot/bzImage -initrd initrd.img

можете пойти дальше и создать iso.

# mkdir iso/
# mkdir iso/boot/
# cp /usr/src/linux-*/arch/x86/boot/bzImage iso/boot/vmlinuz
# cp initrd.img iso/boot/initrd
# mkbootisofs iso/ > gentoo.iso

всё готово.

# qemu-system-x86_64 -cdrom gentoo.iso

http://dl.voglea.com/gentoo.png

Spoofing ★★★★★
() автор топика

Звучит неплохо. А собрать DKMS модуль типа ROCm драйвера я смогу в такую минималистичную систему?

ArkaDOSik ★★
()

Интересно, зачет! Про название уже сказали, все sjw твои :)

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

Да, вы можете установить что угодно в свой дистрибутив линукса, а затем указать директорию с вашим линуксом как оверлей, чтобы создать initrd с вашим линуксом.

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

Вот такой штуки не хватало в случаях, когда нужен линукс на USB флешках. Как по мне squashfs - лучший способ минимизировать запись (так ее нет совсем), но я не осилил в свое время.

Если потребуется куда-нибудь поставить систему без ssd, обязательно попробую. Случаи были и я обошелся btrfs, но для USB флешек с их качеством это полумеры.

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

Создание загрузочных образов (.Y.)trap v1.0

anonymous
()

Вообще мечта. Тоже последние пару месяцев перешел полностью на Crux, точнее вернулся, после долгих скитаний ))) Думаю, это более правильное направление, чем делать из онтопика оффтопик.

poshat ★★★
()

boobs trap?

anonymous
()

прочитал название подумал что это web-framework. Неужели нельзя придумать название?

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

P.S. За подобное название в наше время толерастии везде где не надо - зачёт :-)

boobs

Да уж, думал я один возбудился на сиськи… Название конечно неприличное! С таким названием даже скачивать зашкварно.

anonymous
()

О чём автор думал когда создавал этот проект?

ados ★★★★★
()

запости в debian

anonymous
()
Ответ на: комментарий от enep

Название как раз шикарное.

Цель непонятная, всяких этих конструкторов live-cd и так полно. Впрочем, почему бы и нет, кому-то может и понадобится.

K50
()

Знатоки, к вам вопрос: а нафига ваще этот initramfs? Ведь можно в ядро уже вкомпилить ext4, и усё, нет нужды, получается, в этом аппендиксе? Не пора ли от него «уходить»?

menangen ★★★★★
()

Спасибо. Boobs это всегда хорошо, да…

FatPinguin
()
Ответ на: комментарий от Jaberwock

Да ничего нового там не написано, даже нет адекватного ответа. По мне так, от initramfs зачастую можно избавиться, особенно во всяких облаках типа AWS, GCP

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

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

А нового для этого ничего и не надо

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

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

ncrmnt ★★★★★
()

узнал автора по названию темы

eR ★★★★★
()

boobstrap

И бубсы и трапы... Это неуважение к ⚧🏳‍🌈.

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

Так это не его вина что Twitter назвал свой говнокод термином не имеющим никакого к нему отношения.

a1batross ★★★★★
()

Спуфинг молодец!

anonymous
()

Весьма забавное название)

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

а что, вам таки penistrap подавай? о вкусах, конечно, не спорят…

mazdai ★★★
()

Небольшой апдейт, теперь сохраняется вся история измений в системе.

Когда вы создали initrd с использованием опции --overlay, каждый оверлей работает в режиме read-only, а все изменения в системе, которые вносят программы или вы, сохраняются отдельным пунктом в tmpfs. Так вот теперь есть прямой доступ к этим изменениям, чтобы их сохранить.

http://dl.voglea.com/changes.png

Лежать пока они будут в директории /mnt/overlays/rootfs-changes.

Грубо-говоря мягко-выражаясь, создали вы в корне файл touch /onelove.txt, и он тут-же появился в истории изменений в каталоге /mnt/overlays/rootfs-changes/onelove.txt.

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

Apple со своим Time Machine курит в стороне. =)

Spoofing ★★★★★
() автор топика

А можно мне пояснить, а то я тупенький?! После установки образа на флешку потом в него можно будет штатными пакетными манагерами донаталкивать нужные софтины, или опять шаманить с нуля целый образ?

anonymous
()
Ответ на: комментарий от menangen

Это может быть удобно, если у тебя много потоков CPU и быстрая память, чтобы перекомпилировать ядро при каждом обновлении микрокода/драйверов/другого kernel-land ПО – минус в том, что несколько больше времени придется потратить, сперва скачивая с диска весь монолит в сравнении с ядром и initramfs порознь при загрузке. Я довольно давно не ковырял код линукса, понятия не имею, если это повлияет на стабильность при падении одного из драйверов (графики, к примеру).

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

Если потребуется куда-нибудь поставить систему без ssd, обязательно попробую.

Мне понадобится, у меня проприетарная железяка с каким-то недодебианом внутри, штоле, с отсутствием возможности воткнуть туда винт, но с заявленной возможностью воткнуть туда usb-флешку с актуальным Debian, так что в потенциале пригодицо! Да и вообще, доживу до свободных деньков, может и поковыряю для себя - создать какого-нить монстра франкенштейна!

Спасибо автору! Пеши есчо, годно, нужно!

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

коротко: нет

спуфи-оправдания: ну... для того же и пишутся скрипты bootstrap-templates и bootstrap-systems чтобы запустил одной командой и оно тебе всё собрало и ISO подготовило.

я на самом деле с трудом представляю себе как такое грамотно реализовать. нет, конечно давайте сделаю загрузчик прямо с FAT32 раздела, чтобы не dd'шить ISO'шник, урезая тем самым флешку, а вот чтобы скопировал файлы на флешку, обычным cp, или мышкой перетащил, да? запустил один скрипт и он сделал тебе флешку загрузочной с данным дистрибутивом. ок. это не проблема сделать.

а дальше куда что складывать? ну давайте сделаю чтобы вы пакеты просто файлами закинули на флешку, а initrd при загрузке дистрибутива по флешке пройдётся и все установит. так сойдёт?

просто сейчас мы имеем тупа vmlinuz и initrd в образе, и что-то доустановить во внутрь initrd проблематично, потому что его сперва надо будет распаковать, расковырять, а потом в обратном порядке всё. в итоге проще запустить сборку скриптом, чем... нувыпонели.

обрисуйте механизм как вы себе это представляете и что-нибудь придумаем.

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

Зачем оно под винду? Ну ventoy понятно для чего, там всё просто - виндовый клиент просто кликай в гуёвый инсталятор, потом в гуёвую софтину и на тебе - готовая «флешка». А подобного рода софт вантузята не осилят, а кто способен осилить, тот осилит в линухи бутнутся. И к тому же, если тебе так уж надо, чому бы не сделать порт, думаю автор не обидится!

anonymous
()
Ответ на: комментарий от Spoofing

Я тоже плохо представляю, но вариантов там несколько с разной степенью сложности и упоротости реализации, знаю лишь, что подобное городилось в живом образе тех же бунт, если его накатывали штатной на то время тулзой, которая была как в бунтах ЕМНИП, так и в линухоминтах, оно вроде usb-creator называлось, но это не точно. Там можно было задавать при создании образа область памяти на хранения изменений, если я правильно понял то был какой-то слепок поверх основной системы с изменениями, работало оно на выдох и местами косячило от изменений погоды на марсе, но суть работала, можно было обновить как ядро, так и юзерософт, так и доставить всякого, не пересоздавая образ.

anonymous
()
Ответ на: комментарий от Spoofing

а дальше куда что складывать? ну давайте сделаю чтобы вы пакеты просто файлами закинули на флешку, а initrd при загрузке дистрибутива по флешке пройдётся и все установит. так сойдёт?

Не, я не об этом, я про то, чтобы загруженная с лив-образа система могла штатным ПМ установить пакеты и при следующей загрузке эти изменения учитывались.

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

anonymous
()
Ответ на: комментарий от Spoofing

Ну, типа и так уже годно, но если бы было и такая фича, было бы вообще огонь!

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

и при следующей загрузке эти изменения учитывались

вот прямо сейчас это в процессе.

вот прямо сейчас можешь любой чрут упаковать как оверлей, например с гентой.

# mkdir temp
# mkinitramfs temp/ --overlay gentoo/ --squashfs-xz --output initrd.img

загрузиться, и посмотри что лежит в /mnt/overlays/rootfs-changes — это все изменения которые сделаны в файловой системе, в их числе все пакеты которые ты доустановишь, осталось сохранение и последующее восстановление при загрузке. см. комментарий выше писал, буквально пару часов назад как это сделал.

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

и при следующей загрузке эти изменения учитывались

вот прямо сейчас это в процессе.

Отлично, по поводу генты не в ближайшее время, а вот с Debian попробую, когда-нибудь, как время будет вагон, но в закладки сохранил и буду посматривать, что напиливаешь, ещё раз СПАСИБО за сделанное!

anonymous
()
Ответ на: комментарий от ValdikSS

mkosi — она же вообще ничего не умеет делать?

как мне там создать ISO? UEFI, BIOS? не? как мне там хотя бы initrd создать?

So, let's have a look on the specific images it can generate:

Raw GPT disk image, with ext4 as root
Raw GPT disk image, with btrfs as root
Raw GPT disk image, with a read-only squashfs as root
A plain directory on disk containing the OS tree directly (this is useful for creating generic container images)
A btrfs subvolume on disk, similar to the plain directory
A tarball of a plain directory

куда потом это засунуть? как с этого загрузиться? ну я тоже могу создать файл как контейнер с фс ext4 и установить туда чрут, но какой с этого будет толк?

первое же отличие и преимущество, boobstrap создаёт initrd используя окружение хост-системы. а может и всю систему из директории целиком упаковать как initramfs-окружение. и можно грузиться. initrd можно:

1. положить initrd рядом с ядром в /boot
2. отдать initrd через PXE для загрузки
3. создать загрузочный ISO с initrd — boobstrap это сделает.

boobstrap позволяет создавать initrd, в который можно упихнуть хоть всю систему целиком, и отдать в загрузку через PXE, это порнография, но главное _это можно_.

https://github.com/systemd/mkosi/blob/master/mkosi#L1224-L1257

окей, нашёл bootable-код. она умеет только создавать загрузочные образы «жёстких дисков», условно говоря, то есть, всё то, что ты бы сделал руками, размечая /dev/sda, создавая разделы, устанавливая систему на /dev/sda2 и устанавливая загрузчики включая UEFI на /dev/sda1.

mkosi это типа скрипт, который автоматизирует тебе установку ОС в raw-образ «жёсткого диска» который ты потом скормишь виртуалке. это максимум её возможностей. всё что она делает, ты можешь сделать сам установив ОС в виртуальную машину.

это не загрузочные ISO, это не initrd с системой внутри, она создаёт загрузочный «жёсткий диск» и только. а про деплой между хостами, будь то PXE, ISO (на USB флешке) и речи быть не может.

уноси. =)

Spoofing ★★★★★
() автор топика

Вроде бы автор и пытался доходчиво объяснить, как пользоваться его поделием, но он как-то выборочно объясняет что для чего нужно.

имеется нативная поддержка CRUX

Понимание закончилось здесь.

создаст initrd файл, включив в него два оверлея

Что такое оверлей нигде не объясняется.

Как быстро проверить работоспобность и начать работу? Установите и запустите.

А что делают указанные команды, объяснять не обязательно? Что мы устанавливаем и запускаем?

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

mkosi умеет создавать как образы диска (и физические, и для виртуальных машин), так и образы контейнеров (которые и в chroot можно запустить, при желании). Разумеется, initramfs она тоже умеет создавать.

Кроме того, mkosi поддерживает Secure Boot и dm-verity, а также может собирать образы для архитектур, отличных от архитектуры хоста, запуская программы в qemu-user при необходимости.

ISO не умеет создавать, да.

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

ну что тут объяснять.

mkbootstrap. bootstrap знаете что такое?

mkinitramfs. initramfs знаете?

mkbootisofs. тут признаю, высосал из пальца чтобы количество буковок было одинаковое у всех трёх утилит.

в их названии их назначение.

> имеется нативная поддержка CRUX

Понимание закончилось здесь.

mkbootstrap умеет устанавливать CRUX в чрут, но не умеет другие дистрибутивы. для других дистрибутивов должны быть использованы их родные утилиты, debootstrap, pacstrap и другие если есть.

> создаст initrd файл, включив в него два оверлея

Что такое оверлей нигде не объясняется.

виноват, я слишком погряз в собственной терминологии. вот вы хотите сделать initrd. вы можете в сам initrd «зашить» целый дистрибутив. делается это одним параметром --overlay директория/, указывая директорию с установленным дистрибутивом (он же чрут как мы его называем).

а оверлеем это называется от того, что это слой, которых может быть много. например. --overlay chroot/ --overlay /home --overlay /root, указав несколько подряд директорий, все они будут работать как «слои» друг поверх друга.

в один «слой» вы можете засунуть ванильный дистрибутив без всего, в другой «слой» иксы, в «третий» слой браузер, и так далее.

слои это обычные директории которые вы укажете, которые тем же mkinitramfs могут преобразоваться в squashfs, указав соответствующий параметр --squashfs-xz.

> Как быстро проверить работоспобность и начать работу? Установите и запустите.

А что делают указанные команды, объяснять не обязательно? Что мы устанавливаем и запускаем?

не, там и так всё понятно. три строчки на шелл-скриптинге. просто посмотрите файл через cat.

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

образы диска, контейнеры в виде директорий с чрутами, это всё конечно замечательно (нет).

умеет initramfs? каюсь, виноват, не увидел в файлах репозитория примеров с созданием initramfs. увидел только всякие федоры, убунты, дебьяны. что различные архитектуры умеет — да, увидел, это круто. и наверняка это всё заслуга debootstrap? которой указываешь, пакеты для какой архитектуры выкачивать из реп. поправьте если ошибаюсь.

----

отредактировано: ах ну да, конечно, прям так и написано

A fancy wrapper around dnf --installroot, debootstrap, pacstrap and zypper

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

осталось выяснить где там initramfs.

----

а об утилите сужу в целом по бложику Поцтеринга, где он описал как её использовать.

наша беседа будет информативнее, если вы приведёте собственные примеры использования этой утилиты. чтобы было с чем сравнивать. ибо всё, что я увидел в коде и прочитал в статье — это директории, которые в лучшем случае могут быть загрузочными RAW-образами для виртуалок, а-ля диски /dev/sda.

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

Посмотрите на Slax — он именно это и делает (да, ныне на Debian).

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

initramfs

dracut.

ну понятно короч. враппер вокруг враппера да враппером погоняет. =)

признаю, был не прав.

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