Barium:UIRD — различия между версиями
Betcher (обсуждение | вклад) (→UIRD - Unified Init Ram Disk system) |
Betcher (обсуждение | вклад) |
||
(не показано 14 промежуточных версий 2 участников) | |||
Строка 2: | Строка 2: | ||
Код, описание, доки: ''https://github.com/neobht/uird'' | Код, описание, доки: ''https://github.com/neobht/uird'' | ||
+ | |||
Форум: https://forum.magos-linux.ru/c/uird/5 | Форум: https://forum.magos-linux.ru/c/uird/5 | ||
Строка 12: | Строка 13: | ||
* Возможность подключения практически любых источников, которые можно смонтировать в linux | * Возможность подключения практически любых источников, которые можно смонтировать в linux | ||
* Поддержка различных сетевых протоколов для загрузки по сети | * Поддержка различных сетевых протоколов для загрузки по сети | ||
+ | |||
'''UIRD - сердце Бария.''' | '''UIRD - сердце Бария.''' | ||
− | Именно UIRD обеспечивает основные отличия | + | Именно UIRD обеспечивает основные отличия Бария от других дистрибутивов Росы собранных на аналогичной платформе. |
− | Глоссарий: | + | '''Глоссарий:''' |
− | ''Источник'' - все что можно смонтировать в линукс в том числе по сети, в каталоге куда монтируется источник будет осуществляться поиск модулей (слоев) | + | ''Источник'' - все что можно смонтировать в линукс, в том числе по сети, в каталоге, куда монтируется источник, будет осуществляться поиск модулей (слоев) |
− | ''Слой'' - все что можно смонтировать в линукс, img, iso,также слоем может быть папка, но чаще всего это модуль. | + | ''Слой'' - все что можно смонтировать в линукс, img, iso,также слоем может быть папка, но чаще всего это модуль. |
− | ''Модуль'' - squashfs архив, отличается от обычных архивов тем, что может быть смонтирован RO как блочное устройство. | + | ''Модуль'' - squashfs архив, отличается от обычных архивов тем, что может быть смонтирован RO как блочное устройство. |
− | ''Бандл'' - bundle - промежуточная точка монтирования модуля. Модуль не может быть сразу смонтирован в aufs или overlayfs, эти файловые системы собираются из каталогов. | + | ''Бандл'' - bundle - промежуточная точка монтирования модуля. Модуль не может быть сразу смонтирован в aufs или overlayfs, эти файловые системы собираются из каталогов. Модули монтируются в папки в /.memory/bundles/имя_модуля, а слоеная фс собирается из этих бандлов. |
− | Модули монтируются в папки в /.memory/bundles/имя_модуля, а слоеная фс собирается из этих бандлов. | + | ''sysroot, rootfs'' - в случае UIRD это корневая фс линукс собранная в UIRD из слоев объединенных aufs или overlayfs. Именно с этой ФС продолжится загрузка на этапе после UIRD.<u>Создание rootfs - основная задача UIRD.</u> |
− | ''sysroot, rootfs'' - в случае UIRD это корневая фс линукс собранная в UIRD из слоев объединенных aufs или overlayfs. Именно с этой ФС продолжится загрузка на этапе после UIRD. | + | ''Чистый режим'' - режим загрузки, при котором изменения сделанные в системе не сохраняются после перезагрузки (как livecd) |
− | <u>Создание rootfs - основная задача UIRD.</u> | + | |
− | ''Чистый режим'' - режим загрузки при котором изменения сделанные в системе не сохраняются после перезагрузки (как livecd) | + | |
=== Последовательность загрузки с описанием основных параметров === | === Последовательность загрузки с описанием основных параметров === | ||
Строка 56: | Строка 56: | ||
* запуск uird-init | * запуск uird-init | ||
− | * разбор конфига и параметров cmdline (конфиг либо дефолтный либо устанавливается параметром '''uird.base.cfg=Rosa-ovl''', выбор только из встроенных при сборке конфигов) | + | * разбор конфига и параметров cmdline (конфиг либо дефолтный, либо устанавливается параметром '''uird.base.cfg=Rosa-ovl''', выбор только из встроенных при сборке конфигов) |
− | * поиск и подключение источников определенных в uird.from=/ROSA-SYSTEM::MNT_OPTS=ro+noexec,/ROSA-DATA | + | * поиск и подключение источников определенных в '''uird.from=/ROSA-SYSTEM::MNT_OPTS=ro+noexec,/ROSA-DATA''' |
конкретно эта строка будет обработана так: | конкретно эта строка будет обработана так: | ||
- поиск в корне доступных носителей /ROSA-SYSTEM | - поиск в корне доступных носителей /ROSA-SYSTEM | ||
Строка 64: | Строка 64: | ||
- папка /ROSA-SYSTEM биндится в /.memory/layer-base/0 - это и есть первый источник | - папка /ROSA-SYSTEM биндится в /.memory/layer-base/0 - это и есть первый источник | ||
- поиск в /.memory/data/from/*/ и в корне доступных носителей - /ROSA-DATA | - поиск в /.memory/data/from/*/ и в корне доступных носителей - /ROSA-DATA | ||
− | - когда найдена, если нужно монтировать создается /.memory/data/from/1, если папка в /.memory/data/from/0 то используется оттуда | + | - когда найдена, если нужно монтировать создается /.memory/data/from/1, если папка в /.memory/data/from/0, то используется оттуда |
- папка /ROSA-SYSTEM биндится в /.memory/layer-base/1 - это второй источник | - папка /ROSA-SYSTEM биндится в /.memory/layer-base/1 - это второй источник | ||
Строка 76: | Строка 76: | ||
uird.cp=*.cp | uird.cp=*.cp | ||
− | параметрам передаются списки фильтров по которым отсеиваются не подходящие файлы и каталоги. Конкретно эти фильтры можно описать так: | + | параметрам передаются списки фильтров, по которым отсеиваются не подходящие файлы и каталоги. Конкретно эти фильтры можно описать так: |
Найти файлы и папки в полном имени которых встречается "/base/" или "/modules" | Найти файлы и папки в полном имени которых встречается "/base/" или "/modules" | ||
При этом в именах не должно встречаться '/saves' или '/homes' (чтобы случайно не подключить модули лежащие например в домашней папке) | При этом в именах не должно встречаться '/saves' или '/homes' (чтобы случайно не подключить модули лежащие например в домашней папке) | ||
− | Также имя должно удовлетворять любому из фильтров описанных в uird.ro=*.xzm,*/patches, uird.rw= | + | Также имя должно удовлетворять любому из фильтров описанных в ''uird.ro=*.xzm,*/patches, uird.rw="", uird.cp=*.cp''. |
для всего найденного создаются бандлы. | для всего найденного создаются бандлы. | ||
− | * поиск и инициализация источника который будет верхним слоем слоеной фс. То есть где будут изменения сделанные в системе. Управляется параметрами: | + | * поиск и инициализация источника, который будет верхним слоем слоеной фс. То есть где будут изменения сделанные в системе. Управляется параметрами: |
uird.mode, uird.changes. Это может быть папка в одном из источников, раздел, папка на разделе, файл образ форматированный ext/2/3/4, btrfs с расширением .img | uird.mode, uird.changes. Это может быть папка в одном из источников, раздел, папка на разделе, файл образ форматированный ext/2/3/4, btrfs с расширением .img | ||
в том числе по сети. | в том числе по сети. | ||
Строка 97: | Строка 97: | ||
clean здесь означает "Чистый режим", то есть верхним слоем aufs будет папка в tmpfs и изменения при перезагрузке сохраняться не будут, значение же параметра uird.changes будет использовано | clean здесь означает "Чистый режим", то есть верхним слоем aufs будет папка в tmpfs и изменения при перезагрузке сохраняться не будут, значение же параметра uird.changes будет использовано | ||
− | только когда мы изменим значение uird.mode на toxzm | + | только когда мы изменим значение uird.mode на toxzm через cmdline ядра. |
− | * сборка слоеной фс - /sysroot из бандлов подходящих под фильтр uird.ro=*.xzm,*/patches (в нашем случае это модули и каталоги c именем patches) и каталога для записи изменений в верхнем слое. | + | * сборка слоеной фс - /sysroot, из бандлов подходящих под фильтр uird.ro=*.xzm,*/patches (в нашем случае это модули и каталоги c именем patches) и каталога для записи изменений в верхнем слое. |
* копирование в /sysroot бандлов подходящих под фильтр uird.cp=*.cp ( по умолчанию в Барии таких нет) | * копирование в /sysroot бандлов подходящих под фильтр uird.cp=*.cp ( по умолчанию в Барии таких нет) | ||
Строка 106: | Строка 106: | ||
* завершение uird-init корневой ФС становится /sysroot, загрузка передается /sbin/init целевой системы. | * завершение uird-init корневой ФС становится /sysroot, загрузка передается /sbin/init целевой системы. | ||
+ | |||
+ | |||
+ | === Описание дополнительных параметров === | ||
+ | |||
+ | '''Из конфигурационного файла Rosa-ovl:''' | ||
+ | |||
+ | uird.rootfs=zram::SIZE=85% - настройки для создания каталога /.memory, это важно потому, что здесь же располагается /.memory/changes, где будут накапливаться изменения в чистом режиме. Конкретно эта запись означает: Использовать для /.memory блочное устройство со сжатием в ОЗУ - zram, размер 85% от размера ОЗУ. | ||
+ | |||
+ | uird.find_params=-maxdepth_3 - дополнительные параметры для find при поиске модулей. Здесь глубина поиска ограничена тремя вложенными каталогами. | ||
+ | uird.syscp=/livekitlib::/usr/lib/rosa-rw/scripts - копирование файлов из uird в систему, здесь забираем библиотеку функций для uird-init, может использоваться в скриптах. | ||
+ | uird.shutdown - включение создания /run/initramfs - необходимо для uird.mode=toxzm, в остальных случаях позволяет корректно размонтировать то что не сможет systemd при выключении системы | ||
+ | uird.preinit - включение обработки системного ini. Если uird.config= задан, а uird.preinit нет, конфиг будет найден, но не обработан (в MagOS так, обрабатывается скриптами MagOS) | ||
+ | uird.union=overlay - использовать overlayfs ( по умолчанию aufs) | ||
+ | |||
+ | '''Просто полезные параметры''' | ||
+ | |||
+ | uird.home=/что/подключать - монтирование папки или образа в /home целевой системы | ||
+ | uird.mounts=что::MNT=куда - монтирование чего угодно куда угодно, может заменить uird.home=, только больше писать. Смонтированное здесь участвует в поиске источников. | ||
+ | uird.swap=auto - найти и подключить своп раздел, кроме auto есть другие варианты, например можно подключить pagefile.sys от windows | ||
+ | uird.copy2ram - скопировать модули в RAM и подключить оттуда, может быть полезным с очень медленным или нестабильным источником модулей. Например сетевым. | ||
+ | uird.freemedia - используется совместно с uird.copy2ram, размонтирует все локальные диски после копирования модулей в ОЗУ. То есть можно загрузить с флешки и вытащить флешку. | ||
+ | qs, qse - консоль в начале и в конце uird-init (полезно для диагностики, но можно использовать для операций с файлами, в UIRD есть mc, а все диски автоматически монтируются в /mnt/*) | ||
+ | |||
+ | === Важные моменты === | ||
+ | |||
+ | '''Указание источника для его поиска,''' одинаково работает для uird.from, uird.mounts, uird.home, uird.changes | ||
+ | |||
+ | uird.from=/FOLDER_NAME - поиск папки /FOLDER_NAME в корне всех разделов, всех доступных дисков и уже подключенных источников. | ||
+ | uird.from=/FOLDER_NAME/file.img - поиск образа file.img в папке /FOLDER_NAME в корне всех разделов, если файл не найден, но найдена папка /FOLDER_NAME, UIRD предложит создать образ, нужно выбрать FS и размер. | ||
+ | uird.from=/dev/sda1/FOLDER_NAME - папка FOLDER_NAME в корне диска /dev/sda1 | ||
+ | uird.from=LABEL@/FOLDER_NAME - папка FOLDER_NAME в корне раздела с меткой LABEL, вместо метки можно вписать uuid или даже часть uuid, лишь бы часть была достаточно уникальная | ||
+ | uird.from=nfs://server/FOLDER_NAME - папка в корне nfs ресурса, аналогично и с другими доступными сетевыми протоколами | ||
+ | |||
+ | '''Списки параметров и подпараметры''' | ||
+ | |||
+ | Списки разделаются запятыми, подпараметры отделяются двойным двоеточием. Например: | ||
+ | |||
+ | uird.from=/ROSA-SYSTEM::MNT_OPTS=ro+noexec,/ROSA-DATA | ||
+ | |||
+ | uird.from получил список из двух параметров, у первого есть подпараметр MNT_OPTS=ro+noexec | ||
+ | |||
+ | '''Подпараметры для источников''' | ||
+ | |||
+ | MNT=/mnt/myfolder - дополнительная точка монтирования | ||
+ | MNT_OPTS= параметры монтирования, разделенные плюсом | ||
+ | FORCE=yes - не прерывать загрузку, если источник не найден | ||
+ | FSCK=yes - проверить FS источника на ошибки перед использованием | ||
+ | INIT=yes - инициализация источника. Используется совместно с MNT=, после монтирования источника в дополнительную точку монтирования, осуществляется поиск аналогичных каталогов в бандлах и их содержимое копируется в эту точку монтирования. К примеру, если у вас uird.mounts=/myhomes::MNT=/home::INIT=yes, то после монтирования содержимое папок /home со всех бандлов будет скопировано в /home целевой системы, в противном случае папка будет пуста. | ||
+ | TIMEOUT=3 количество попыток подключения источника | ||
+ | |||
+ | '''Параметры в конфигурационных файлах uird и в cmdline ядра''' | ||
+ | |||
+ | Параметры, которые будут использованы UIRD, формируются на основе параметров записанных в конфигурационный файл UIRD и параметров переданных ядру. Какое значение будет в итоге иметь конкретный параметр зависит от того как вы записали его в cmdline ядра. | ||
+ | |||
+ | uird.from=/ROSA-DATA - заменит значение из конфига | ||
+ | uird.from+=/ROSA-DATA - добавит /ROSA-DATA к списку источников, которые уже есть в конфиге | ||
+ | |||
+ | |||
+ | === Сборка uird === | ||
+ | |||
+ | Для сборки UIRD в Росе или под Барием можно использовать пакет из репозитория: | ||
+ | |||
+ | dnf install mkuird | ||
+ | mkuird Имя_конфига | ||
+ | |||
+ | Имя_конфига здесь имя конфигурационного файла uird из: | ||
+ | |||
+ | /usr/share/uird/configs/uird_configs | ||
+ | |||
+ | Конфигов для бария там нет нужно будет доставать из готового UIRD или из сборочных скриптов бария на abf.io. | ||
+ | |||
+ | === Сборка uird из исходников === | ||
+ | |||
+ | git clone --recursive https://github.com/neobht/uird.git | ||
+ | cd uird | ||
+ | ./make_busybox.sh | ||
+ | ./make_dracut.sh | ||
+ | |||
+ | Зависимости необходимые для сборки UIRD приблизительно соответствуют зависимостям пакета dracut, можно установить его чтобы не устанавливать пакеты по одному. | ||
+ | Отсутствие бинарных файлов предоставляющих дополнительный функционал не помешает сборке uird, смотрите лог сборки. Это например aria2, qemu-img и проч. | ||
+ | |||
+ | ./mkuird Имя_конфига | ||
+ | |||
+ | Если в результате UIRD не будет собран, смотрите лог дракута ./dracut-uird.log | ||
+ | |||
+ | '''Полезные ключи mkuird:''' | ||
+ | |||
+ | Исключения: | ||
+ | |||
+ | -e список,исключений,через,запятую | ||
+ | |||
+ | Тут могут быть модули ядра, модули дракута, исполняемые команды ; или группы модулей, исполняемых файлов и модулей дракута. Смотрите mkuird.cfg. Например: | ||
+ | |||
+ | ./mkuird MagOS -e plymouth,qemu-img,KM_virt | ||
+ | |||
+ | Ядро: | ||
+ | |||
+ | -k версия_ядра (так как называется папка с модулями ядра в /lib/modules) | ||
+ | |||
+ | UIRD будет собран под указанное ядро, вместо текущего. | ||
+ | |||
+ | [[Категория:Barium]] |
Текущая версия на 11:12, 26 августа 2022
Содержание
UIRD - Unified Init Ram Disk system
Код, описание, доки: https://github.com/neobht/uird
Форум: https://forum.magos-linux.ru/c/uird/5
Это разновидность initrd, его задача собрать из слоёв aufs/overlayfs корневую файловую систему и передать загрузку /sbin/init (systemd) с этой корневой файловой системой. В основе реализации UIRD лежит набор скриптов инициализации dracut (модули base, kernel-modules), сценарий инициализации uird-init и библиотека функций к нему livekitlib (доработанный аналог liblinuxlive проекта Slax).
Основные отличия от реализаций initrd для модульных систем схожих проектов.
- Отсутствие привязки к конкретному дистрибутиву
- Отсутствие привязки к конкретным каталогам для поиска источников
- Возможность подключения практически любых источников, которые можно смонтировать в linux
- Поддержка различных сетевых протоколов для загрузки по сети
UIRD - сердце Бария.
Именно UIRD обеспечивает основные отличия Бария от других дистрибутивов Росы собранных на аналогичной платформе.
Глоссарий:
Источник - все что можно смонтировать в линукс, в том числе по сети, в каталоге, куда монтируется источник, будет осуществляться поиск модулей (слоев) Слой - все что можно смонтировать в линукс, img, iso,также слоем может быть папка, но чаще всего это модуль. Модуль - squashfs архив, отличается от обычных архивов тем, что может быть смонтирован RO как блочное устройство. Бандл - bundle - промежуточная точка монтирования модуля. Модуль не может быть сразу смонтирован в aufs или overlayfs, эти файловые системы собираются из каталогов. Модули монтируются в папки в /.memory/bundles/имя_модуля, а слоеная фс собирается из этих бандлов. sysroot, rootfs - в случае UIRD это корневая фс линукс собранная в UIRD из слоев объединенных aufs или overlayfs. Именно с этой ФС продолжится загрузка на этапе после UIRD.Создание rootfs - основная задача UIRD. Чистый режим - режим загрузки, при котором изменения сделанные в системе не сохраняются после перезагрузки (как livecd)
Последовательность загрузки с описанием основных параметров
Общее количество параметров UIRD достаточно велико, но большая часть из них относится к дополнительному функционалу. Например конфигурационный файл для загрузки ОС Барий, точнее один из конфигов, выглядит так:
uird.config=ROSA.ini uird.rootfs=zram::SIZE=85% uird.ro=*.xzm,*/patches uird.rw= uird.cp=*.cp uird.load=/base/,/modules/ uird.noload=/saves,/homes uird.from=/ROSA-SYSTEM::MNT_OPTS=ro+noexec,/ROSA-DATA uird.find_params=-maxdepth_3 uird.mode=clean uird.changes=/ROSA-DATA/saves/toxzm.cfg uird.syscp=/livekitlib::/usr/lib/rosa-rw/scripts uird.shutdown uird.preinit uird.union=overlay
И даже здесь не все параметры необходимы. Треть можно убрать и система все равно загрузится.
Основной сценарий работы UIRD - /uird-init, в нем последовательно выполняются функции из файла /livekitlib, чтобы в итоге получить rootfs и передать загрузку целевой системе. Если оставить только основные моменты процесс выглядит так:
- предварительные действия dracut
- запуск uird-init
- разбор конфига и параметров cmdline (конфиг либо дефолтный, либо устанавливается параметром uird.base.cfg=Rosa-ovl, выбор только из встроенных при сборке конфигов)
- поиск и подключение источников определенных в uird.from=/ROSA-SYSTEM::MNT_OPTS=ro+noexec,/ROSA-DATA
конкретно эта строка будет обработана так:
- поиск в корне доступных носителей /ROSA-SYSTEM - если найдено, носитель монтируется в /.memory/data/from/0 с параметрами ro,noexec - папка /ROSA-SYSTEM биндится в /.memory/layer-base/0 - это и есть первый источник - поиск в /.memory/data/from/*/ и в корне доступных носителей - /ROSA-DATA - когда найдена, если нужно монтировать создается /.memory/data/from/1, если папка в /.memory/data/from/0, то используется оттуда - папка /ROSA-SYSTEM биндится в /.memory/layer-base/1 - это второй источник
- поиск модулей и создание бандлов, за это отвечают параметры:
uird.load=/base/,/modules/ uird.noload=/saves,/homes
и
uird.ro=*.xzm,*/patches uird.rw= uird.cp=*.cp
параметрам передаются списки фильтров, по которым отсеиваются не подходящие файлы и каталоги. Конкретно эти фильтры можно описать так:
Найти файлы и папки в полном имени которых встречается "/base/" или "/modules" При этом в именах не должно встречаться '/saves' или '/homes' (чтобы случайно не подключить модули лежащие например в домашней папке) Также имя должно удовлетворять любому из фильтров описанных в uird.ro=*.xzm,*/patches, uird.rw="", uird.cp=*.cp.
для всего найденного создаются бандлы.
- поиск и инициализация источника, который будет верхним слоем слоеной фс. То есть где будут изменения сделанные в системе. Управляется параметрами:
uird.mode, uird.changes. Это может быть папка в одном из источников, раздел, папка на разделе, файл образ форматированный ext/2/3/4, btrfs с расширением .img в том числе по сети. Для включения сохранений таким способом параметры должны быть приведены к такому виду:
uird.mode=changes uird.changes=/куда/писать
В нашем конфиге:
uird.mode=clean uird.changes=/ROSA-DATA/saves/toxzm.cfg
clean здесь означает "Чистый режим", то есть верхним слоем aufs будет папка в tmpfs и изменения при перезагрузке сохраняться не будут, значение же параметра uird.changes будет использовано только когда мы изменим значение uird.mode на toxzm через cmdline ядра.
- сборка слоеной фс - /sysroot, из бандлов подходящих под фильтр uird.ro=*.xzm,*/patches (в нашем случае это модули и каталоги c именем patches) и каталога для записи изменений в верхнем слое.
- копирование в /sysroot бандлов подходящих под фильтр uird.cp=*.cp ( по умолчанию в Барии таких нет)
- поиск в источниках и обработка системного конфигурационного файла описанного параметром uird.config=ROSA.ini
- завершение uird-init корневой ФС становится /sysroot, загрузка передается /sbin/init целевой системы.
Описание дополнительных параметров
Из конфигурационного файла Rosa-ovl:
uird.rootfs=zram::SIZE=85% - настройки для создания каталога /.memory, это важно потому, что здесь же располагается /.memory/changes, где будут накапливаться изменения в чистом режиме. Конкретно эта запись означает: Использовать для /.memory блочное устройство со сжатием в ОЗУ - zram, размер 85% от размера ОЗУ.
uird.find_params=-maxdepth_3 - дополнительные параметры для find при поиске модулей. Здесь глубина поиска ограничена тремя вложенными каталогами. uird.syscp=/livekitlib::/usr/lib/rosa-rw/scripts - копирование файлов из uird в систему, здесь забираем библиотеку функций для uird-init, может использоваться в скриптах. uird.shutdown - включение создания /run/initramfs - необходимо для uird.mode=toxzm, в остальных случаях позволяет корректно размонтировать то что не сможет systemd при выключении системы uird.preinit - включение обработки системного ini. Если uird.config= задан, а uird.preinit нет, конфиг будет найден, но не обработан (в MagOS так, обрабатывается скриптами MagOS) uird.union=overlay - использовать overlayfs ( по умолчанию aufs)
Просто полезные параметры
uird.home=/что/подключать - монтирование папки или образа в /home целевой системы uird.mounts=что::MNT=куда - монтирование чего угодно куда угодно, может заменить uird.home=, только больше писать. Смонтированное здесь участвует в поиске источников. uird.swap=auto - найти и подключить своп раздел, кроме auto есть другие варианты, например можно подключить pagefile.sys от windows uird.copy2ram - скопировать модули в RAM и подключить оттуда, может быть полезным с очень медленным или нестабильным источником модулей. Например сетевым. uird.freemedia - используется совместно с uird.copy2ram, размонтирует все локальные диски после копирования модулей в ОЗУ. То есть можно загрузить с флешки и вытащить флешку. qs, qse - консоль в начале и в конце uird-init (полезно для диагностики, но можно использовать для операций с файлами, в UIRD есть mc, а все диски автоматически монтируются в /mnt/*)
Важные моменты
Указание источника для его поиска, одинаково работает для uird.from, uird.mounts, uird.home, uird.changes
uird.from=/FOLDER_NAME - поиск папки /FOLDER_NAME в корне всех разделов, всех доступных дисков и уже подключенных источников. uird.from=/FOLDER_NAME/file.img - поиск образа file.img в папке /FOLDER_NAME в корне всех разделов, если файл не найден, но найдена папка /FOLDER_NAME, UIRD предложит создать образ, нужно выбрать FS и размер. uird.from=/dev/sda1/FOLDER_NAME - папка FOLDER_NAME в корне диска /dev/sda1 uird.from=LABEL@/FOLDER_NAME - папка FOLDER_NAME в корне раздела с меткой LABEL, вместо метки можно вписать uuid или даже часть uuid, лишь бы часть была достаточно уникальная uird.from=nfs://server/FOLDER_NAME - папка в корне nfs ресурса, аналогично и с другими доступными сетевыми протоколами
Списки параметров и подпараметры
Списки разделаются запятыми, подпараметры отделяются двойным двоеточием. Например:
uird.from=/ROSA-SYSTEM::MNT_OPTS=ro+noexec,/ROSA-DATA
uird.from получил список из двух параметров, у первого есть подпараметр MNT_OPTS=ro+noexec
Подпараметры для источников
MNT=/mnt/myfolder - дополнительная точка монтирования MNT_OPTS= параметры монтирования, разделенные плюсом FORCE=yes - не прерывать загрузку, если источник не найден FSCK=yes - проверить FS источника на ошибки перед использованием INIT=yes - инициализация источника. Используется совместно с MNT=, после монтирования источника в дополнительную точку монтирования, осуществляется поиск аналогичных каталогов в бандлах и их содержимое копируется в эту точку монтирования. К примеру, если у вас uird.mounts=/myhomes::MNT=/home::INIT=yes, то после монтирования содержимое папок /home со всех бандлов будет скопировано в /home целевой системы, в противном случае папка будет пуста. TIMEOUT=3 количество попыток подключения источника
Параметры в конфигурационных файлах uird и в cmdline ядра
Параметры, которые будут использованы UIRD, формируются на основе параметров записанных в конфигурационный файл UIRD и параметров переданных ядру. Какое значение будет в итоге иметь конкретный параметр зависит от того как вы записали его в cmdline ядра.
uird.from=/ROSA-DATA - заменит значение из конфига uird.from+=/ROSA-DATA - добавит /ROSA-DATA к списку источников, которые уже есть в конфиге
Сборка uird
Для сборки UIRD в Росе или под Барием можно использовать пакет из репозитория:
dnf install mkuird mkuird Имя_конфига
Имя_конфига здесь имя конфигурационного файла uird из:
/usr/share/uird/configs/uird_configs
Конфигов для бария там нет нужно будет доставать из готового UIRD или из сборочных скриптов бария на abf.io.
Сборка uird из исходников
git clone --recursive https://github.com/neobht/uird.git cd uird ./make_busybox.sh ./make_dracut.sh
Зависимости необходимые для сборки UIRD приблизительно соответствуют зависимостям пакета dracut, можно установить его чтобы не устанавливать пакеты по одному. Отсутствие бинарных файлов предоставляющих дополнительный функционал не помешает сборке uird, смотрите лог сборки. Это например aria2, qemu-img и проч.
./mkuird Имя_конфига
Если в результате UIRD не будет собран, смотрите лог дракута ./dracut-uird.log
Полезные ключи mkuird:
Исключения:
-e список,исключений,через,запятую
Тут могут быть модули ядра, модули дракута, исполняемые команды ; или группы модулей, исполняемых файлов и модулей дракута. Смотрите mkuird.cfg. Например:
./mkuird MagOS -e plymouth,qemu-img,KM_virt
Ядро:
-k версия_ядра (так как называется папка с модулями ядра в /lib/modules)
UIRD будет собран под указанное ядро, вместо текущего.