Barium:модули — различия между версиями

Материал из Rosalab Wiki
Перейти к: навигация, поиск
(barium mkmod)
(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