Barium:модули — различия между версиями
Betcher (обсуждение | вклад) (→barium mkmod) |
Betcher (обсуждение | вклад) (→barium mkmod) |
||
Строка 6: | Строка 6: | ||
=== barium mkmod === | === barium mkmod === | ||
− | Основная задача утилиты сделать | + | Основная задача утилиты сделать модуль из папки с файлами, дополнительно можно склеивать папки и модули в один модуль в любых сочетаниях. |
Например: | Например: | ||
У вас есть два файла - программа и ее конфиг. В системе они должны быть размещены по путям: | У вас есть два файла - программа и ее конфиг. В системе они должны быть размещены по путям: |
Версия 08:57, 17 августа 2022
Что за модули такие
UIRD создает корневую файловую систему для дальнейшей загрузки ОС из слоев собранных объединяющей файловой системой aufs/overlayfs. В качестве слоев может использоваться все что возможно смонтировать в Линукс в режиме read only. Чаще всего это squashfs архивы это и есть модули Бария. Squashfs архив отличает то что данные из него можно читать блочно, то есть для того чтобы извлечь файл нет необходимости распаковывать весь архив, распаковываются только блоки в которых лежат части этого файла. По мимо уменьшения размера ОС это часто дает прирост в скорости чтения, особенно с медленных носителей, относительно чтения не сжатых данных с того же носителя. Это происходит потому, что прочитать 1 мегабайт и распаковать его в 3 мегабайта с "быстрым" процессором и "медленным" носителем, будет быстрее чем читать не сжатые 3 мегабайта. Каждый такой модуль содержит свою часть файловой системы. Модуль не равен rpm пакету по содержимому, он может содержать как один файл так и всю ОС, как это бывает в livecd.
Как сделать модуль
Squashfs архивы создаются утилитой mksquashfs из пакета squahfs-tools, и модули вполне можно сделать имея только mksquashfs, но для большего удобства подготовлено несколько утилит в составе barium-utils.
barium mkmod
Основная задача утилиты сделать модуль из папки с файлами, дополнительно можно склеивать папки и модули в один модуль в любых сочетаниях. Например: У вас есть два файла - программа и ее конфиг. В системе они должны быть размещены по путям:
/usr/bin/superproga /etc/superproga.d/superproga.conf
- Создаем папку с именем будущего модуля:
mkdir ./superproga
- Внутри папки создаем нужные каталоги. Обратите внимание на права и пользователя каталогов. Для системных папок обчно достаточно создавать их под рутом.
mkdir -p ./superproga/usr/bin mkdir -p ./superproga/etc/superproga.d
- копируем файлы в папки, допустим они у нас тоже были в текущем каталоге
cp ./superproga ./superproga/usr/bin/ cp ./superproga.conf ./superproga/etc/superproga.d/
- Пакуем
barium mkmod ./superproga
Итогом будет модуль superproga.xzm, при подключении которого файлы окажутся в системе в нужных подкаталогах. Модули не возможно редактировать, они монтируются только RO, по этому если вам нужно будет что-то изменить придется собирать модуль заново. Если же нужно добавить файл в модуль можно воспользоваться режимом "склейки" утилиты barium mkmod
mkdir -p ./superproga2/etc/skel/.config/ cp superproga.conf ./superproga2/etc/skel/.config/ barium mkmod ./superproga2 ./superproga.xzm -o superproga2.xzm