Jump to content

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

Новая страница: «Большая часть особых свойств, что отличают ОС Барий от других дистрибутивов \ росы, собранных на той же пакетной базе, заложены в Barium:UIRD. UIRD это init ram disk (initrd) собираемый с использованием dracut, но кардинально отличающийся сценарием \ загрузки ОС. Предназн...»
 
 
(не показано 6 промежуточных версий этого же участника)
Строка 1: Строка 1:
Большая часть особых свойств, что отличают ОС Барий от других дистрибутивов \ росы, собранных на той же пакетной базе, заложены в [[Barium:UIRD]].
=== Способы сохранения изменений в ОС Барий (Barium OS) ===


UIRD это init ram disk (initrd) собираемый с использованием dracut, но кардинально отличающийся сценарием \ загрузки ОС. Предназначен для загрузки модульных дистрибутивов. В настоящее время используется в MagOS, \ Барии, ublinux, MOS-flash доступен как дополнительный initrd в дистрибутивах \ puppyrus. А значит описанное далее в целом справедливо и для них.
Большая часть особых свойств, что отличают ОС Барий от других дистрибутивов РОСА, собранных на той же пакетной базе, заложены в [[UIRD]]


Именно UIRD отвечает за то как будут сохраняться ваши данные.
'''UIRD''' это init ram disk (initrd) собираемый с использованием dracut, но кардинально отличающийся сценарием загрузки ОС. Предназначен для загрузки модульных дистрибутивов. В настоящее время используется в MagOS, Барии, ublinux, MOS-flash доступен как дополнительный initrd в дистрибутивах puppyrus. А значит описанное далее в целом справедливо и для них.
                                Немного теории
Модульными дистрибутивами называются сборки где корневая ФС линукс собирается \ на этапе initrd из слоев. Каждый из слоев содержит свою часть файлов. В качестве слоя может быть все что возможно смонтировать в линукс: раздел, \ папка, iso, img. Но чаще всего это squashfs архивы это и есть модули. Все эти слои объединяются с пощью aufs/overlayfs в один каталог, который и \ будет корнем / для дальнейшей загрузки дистрибутива. Все эти слои монтируются read only, кроме последнего, верхнего слоя. Еще \ немного и будет понятного к чему вся эта предыстория. Итак. Система загружена, модули RO. А что будет если добавить в систему файл \ или изменить существующий? Все эти изменения фиксируются в последнем слое, который мы называем changes. При удалении существующего файла, в changes будет \ оставлена метка (тень или whiteout), и объединяющая модули ФС будет считать что этого файла нет. А что может быть смонтировано в верхний слой? Опять же все \ что можно смонтировать в Линукс с возможностью записи.


В UIRD способ работы с верхним слоем, то есть иначе говоря способ сохранения \ данных между перезагрузками, управляется параметром uird.mode. Доступно 4 \ варианта:
'''Именно UIRD отвечает за то как будут сохраняться ваши данные.'''
                                uird.mode=clean
Если смонтировать в верхний слой aufs каталог в tmpfs, то все изменения будут \ храниться в ОЗУ и после выключения исчезнут. Это называем - чистый режим, в \ большинстве конфигураций это состояние по умолчанию.
                                uird.mode=changes
Если смонтировать туда папку на диске или по сети (не принципиально), или \ файл-образ , то данные будут сохраняться после перезагрузки. Таких папок или \ файлов может быть несколько, с разным набором установленного софта и настройками. Эти папки \ или файлы-образы мы называем - профилями. Такой режим используется по умолчанию в MagOS. Кроме uird.mode=changes вам нужно указать где находится \ файл или папка для сохранений uird.chages=/куда/писать (способы указания путей смотрите в [[Barium:UIRD]])
                                uird.mode=clear
Гибридный режиме между clean и changes, слой подключается как для changes, но \ перед подключением зачищается. То есть для пользователя выглядит как clean, но не задействует ОЗУ для хранения изменений во время работы системы.
                                uird.mode=toxzm
Режим добавляющий к режиму clean возможность сохранения. Во время работы \ изменения пишутся в папку в ОЗУ, (для Бария это блочное устройство zram со \ сжатием). При выключении машины эти изменения пакуются в модули. Для включения режима \ кроме uird.mode=toxzm нужно передать путь к файлу с настройками режима uird.changes=/где/конфиг.cfg и uird.shutdown


===== Немного теории =====
Модульными дистрибутивами называются сборки где корневая ФС линукс собирается на этапе initrd из слоев. Каждый из слоев содержит свою часть файлов rootfs.  В качестве слоя может быть все что возможно смонтировать в линукс: раздел, папка, iso, img. Но чаще всего это '''squashfs''' архивы это и есть модули. Все эти слои объединяются с помощью '''aufs/overlayfs''' в один каталог, который и будет корнем "/" для дальнейшей загрузки дистрибутива. Все эти слои монтируются read only, кроме последнего, верхнего слоя. Еще немного и будет понятного к чему вся эта предыстория. Итак. Система загружена, модули RO. А что будет если добавить в систему файл или изменить существующий? Все эти изменения фиксируются в последнем слое, который мы называем '''changes'''. При удалении существующего файла, в '''changes''' будет оставлена метка (тень или whiteout), и объединяющая модули ФС будет считать что этого файла нет. А что может быть смонтировано в верхний слой? Опять же все, что можно смонтировать в Линукс с возможностью записи.


Режим имеет возможность очень тонкой настройки сохранений, можно указать для \
В UIRD способ работы с верхним слоем, то есть иначе говоря способ сохранения данных между перезагрузками, управляется параметром uird.mode. Доступно 4 варианта:


любого файла или папки нужно ли сохранять и в какой модуль.  
    uird.mode=clean


Для каждого модуля в конфигурационном файле который указываете в uird.changes \
Если смонтировать в верхний слой aufs каталог в tmpfs, то все изменения будут храниться в ОЗУ и после выключения исчезнут. Это называем - '''чистый режим''', в большинстве конфигураций это состояние по умолчанию.


для этого режима есть отдельная секция состоящая из нескольких параметров.  
    uird.mode=changes


Название параметра завершается индексом, именно по индексу определяется \
Если смонтировать туда папку на диске или по сети (не принципиально), или файл-образ , то данные будут сохраняться после перезагрузки. Таких папок или файлов может быть несколько, с разным набором установленного софта и настройками. Эти папки или файлы-образы мы называем - профилями. Такой режим используется по умолчанию в '''MagOS'''. Кроме '''uird.mode=changes''' вам нужно указать где находится файл или папка для сохранений uird.chages=/куда/писать (способы указания путей смотрите в [[UIRD]])


принадлежность параметра секции. Цифровые индексы должны идти по порядку,
    uird.mode=clear


в этом порядке модули подключаются при старте.  
Гибридный режим между clean и changes, слой подключается как для changes, но перед подключением зачищается. То есть для пользователя выглядит как clean, но не задействует ОЗУ для хранения изменений во время работы системы.


                                       
    uird.mode=toxzm


XZM - имя модуля, если оставить пустым то будет сгенерировано по характеристикам \
'''Именно этот режим использует Барий при  установке ОС на внешний носитель.'''


железа, то есть модуль будет иметь свое имя на каждой машине
Во время работы изменения пишутся в папку в ОЗУ, (для Бария это блочное устройство zram со сжатием). То есть как в режиме '''clean'''. При выключении машины эти изменения пакуются в модули, которые могут монтироваться или распаковываться в '''changes''' при следующем старте ОС.  Для включения режима кроме '''uird.mode=toxzm''' нужно передать путь к файлу с настройками режима '''uird.changes=/где/конфиг.cfg''' и '''uird.shutdown'''


MODE - режим подключения модуля при загрузке, варианты: copy, mount, mount+wh.  
Режим имеет возможность очень тонкой настройки сохранений, можно указать для любого файла или папки нужно ли сохранять и в какой модуль. Для каждого модуля в конфигурационном файле который указываете в uird.changes для этого режима есть отдельная секция состоящая из нескольких параметров.  


REBULID - нужно ли пересобрать модуль при выключении машины, варианты: yes, no, once
Название параметра завершается индексом, именно по индексу определяется принадлежность параметра секции. Цифровые индексы должны идти по порядку, в этом порядке модули подключаются при старте.


ADDFILTER - фильтры (grep) для получения списка файлов и каталогов, которые нужно \
* '''XZM'''  - имя модуля, если оставить пустым то будет сгенерировано по характеристикам железа, то есть модуль будет иметь свое имя на каждой машине


сохранить в модуль
* '''MODE''' - режим подключения модуля при загрузке, варианты: '''copy, mount, mount+wh'''.


DROPFILTER - фильтры для исключения файлов и каталогов из списка полученного после \
* '''REBULID''' - нужно ли пересобрать модуль при выключении машины, варианты: '''yes, no, once'''.


ADDFILTER  
* '''ADDFILTER''' - фильтры (grep) для получения списка файлов и каталогов, которые нужно сохранить в модуль


SQFSOPT - опции для mksquashfs, обычно это алгоритм сжатия и размер блока  
* '''DROPFILTER''' - фильтры для исключения файлов и каталогов из списка полученного после '''ADDFILTER'''
* '''SQFSOPT''' - опции для '''mksquashfs''', обычно это алгоритм сжатия и размер блока  
* '''MAXCOPYSIZE''' - Максимальный размер разрешенный для модуля, после чего параметр '''MODE''' модуля будет переведен в "mount", '''REBUILD''' в "no" и создана новая секция с '''MODE=copy''' и '''REBUILD=yes'''


MAXCOPYSIZE - Максимальный размер разрешенный для модуля, после чего параметр MODE модуля \


будет переведен в mount, REBUILD в no и создана новая секция с MODE=copy и \
==== Далее на примере конфигурационного файла из бария: ====


REBUILD=yes
 Для удобства списки можно заносить в переменные


                                       
    GARBAGE=/var/log /var/spool /var/tmp /var/cache
    PAM=/etc/pam.d /etc/pam_pkcs11 /etc/pki /xdg/autostart/


Далее на примере конфигурационного файла из бария:
Сохраняем домашние каталоги пользователей и рута в модуль '''homes.xzm'''                                    
    XZM0=homes.xzm
    MODE0=copy
    REBUILD0=no
    ADDFILTER0="/home /root"
    DROPFILTER0=
    SQFSOPT0='-comp lz4 -b 512k'
    MAXCOPYSIZE0=300


                                       
Системные изменения сохраняем в свой модуль для каждой машины. (если имя для модуля не указано, оно генерируется на основе железа)
    XZM1=
    MODE1=mount+wh
    REBUILD1=no
    ADDFILTER1=
    DROPFILTER1=$GARBAGE /home /root"
    SQFSOPT1=-comp lz4 -b 512k
    MAXCOPYSIZE1=


Для удобства списки можно заносить в переменные
===== Примеры с отключенной пересборкой                                 =====
    XZMpam='pam.xzm'
    MODEpam='copy'
    REBUILDpam='no'
    ADDFILTERpam=$PAM
    DROPFILTERpam=
    SQFSOPTpam='-comp xz -b 512k'
    MAXCOPYSIZEpam=


GARBAGE=/var/log /var/spool /var/tmp /var/cache
====== Контрольные суммы cts ======
    XZMcts='cts.xzm'
    MODEcts='copy'
    REBUILDcts='no'
    ADDFILTERcts=/etc/cts /etc/prelink.conf.d/cts.conf
    DROPFILTERcts=
    SQFSOPTcts='-comp xz -b 512k'
    MAXCOPYSIZEcts=


PAM=/etc/pam.d /etc/pam_pkcs11 /etc/pki /xdg/autostart/
=== uird.mounts и uird.home ===


                                       
От части к способам сохранений имеют отношения еще и эти два параметра, позволяющие объединить, например, сохранение части изменений в каталог, а другой части в модуль.
===== uird.mounts =====


Сохраняем домашние каталоги пользователей в модуль homes.xzm
Параметр используется в трех случаях.


                                       
* для того, чтобы разгрузить запись в uird.from при сложном вложенном монтировании. Например iso в сети по http, внутри которого файл со '''squashfs''', внутри которого файл с ext3 (стандартная конфигурация для современных исо)


XZM0=homes.xzm
* чтобы организовать автомонтирование раздела для пользователя
 
* чтобы сделать бинд (mount -o bind) каталога на носителе внутрь системы, а это как раз интересующий нас в контексте темы случай. Например запись:
MODE0=copy
 
REBUILD0=no
 
ADDFILTER0=/home
 
DROPFILTER0=
 
SQFSOPT0='-comp lz4 -b 512k'
 
MAXCOPYSIZE0=300
 
                                       
 
Системные изменения сохраняем в свой модуль для каждой машины.
 
(если имя для модуля не указано, оно генерируется на основе железа)
 
                                       
 
XZM1=
 
MODE1=mount  
 
REBUILD1=no
 
ADDFILTER1=
 
DROPFILTER1=$GARBAGE /home
 
SQFSOPT1=-comp lz4 -b 512k
 
MAXCOPYSIZE1=
 
                                       
 
Примеры с отключенной пересборкой
 
                                       
 
XZMpam='pam.xzm'
 
MODEpam='copy'
 
REBUILDpam='no'
 
ADDFILTERpam=$PAM
 
DROPFILTERpam=
 
SQFSOPTpam='-comp xz -b 512k'
 
MAXCOPYSIZEpam=
 
                                       
 
Контрольные суммы cts
 
                                       
 
XZMcts='cts.xzm'
 
MODEcts='copy'
 
REBUILDcts='no'
 
ADDFILTERcts=/etc/cts /etc/prelink.conf.d/cts.conf
 
DROPFILTERcts=


SQFSOPTcts='-comp xz -b 512k'
    uird.mounts=/my_WWW::MNT=/var/www::MNTOPTS=noexec+rw::FORCE=yes::INIT=yes


MAXCOPYSIZEcts=
Означает найти в корне доступных на момент загрузки разделов каталог /my_WWW. Найденный каталог будет смонтирован в /.memory/mounts/0 с параметрами '''noexec,rw,''' а /var/WWW будет биндом на эту папку. '''FORCE=yes''' означает не прерывать загрузку если каталог /my_WWW не будет найден, а '''INIT=yes''' означает в случае если каталог пуст скопировать туда все что есть в модулях в /var/www, то есть как бы инициализировать. Таким образом все, что в системе будет записано в /var/www реально попадет в каталог my_WWW в корне одного из разделов.
 
 
                            uird.mounts и uird.home
От части к способам сохранений имеют отношения еще и эти два параметра, \ позволяющие объединить, например, сохранение части изменений в каталог, а \ другой части в модуль.
                                  uird.mounts
Параметр используется в трех случаях.
 
* для того, чтобы разгрузить запись в uird.from при сложном вложенном \
 
монтировании. Например iso в сети по http, внутри которого файл со squashfs, \ внутри которого файл с ext3 (стандартная конфигурация для современных исо)
 
* чтобы организовать автомонтирование раздела для пользователя
* чтобы сделать бинд (mount -o bind) каталога на носителе внутрь системы, а это \


как раз интересующий нас в контексте темы случай. Например запись:
===== uird.home =====


uird.mounts=/my_WWW::MNT=/var/www::MNTOPTS=noexec+rw::FORCE=yes::INIT=yes
По сути подмножество uird.mounts для конкретного каталога /home


Означает найти в корне доступных на момент загрузки разделов каталог /my_WWW. \ Найденный каталог будет смонтирован в /.memory/mounts/0 с параметрами \ noexec,rw, а /var/WWW будет биндом на эту папку. FORCE=yes означает не прерывать загрузку если каталог /my_WWW не будет найден, \ а INIT=yes означает в случае если каталог пуст скопировать туда все что есть в \ модулях в /var/www, то есть как бы инициализировать.
    uird.home=/dev/sda1/homes
                                    uird.home
По сути подмножество uird-mounts для конкретного каталога /home


uird.home=/dev/sda1/homes
[[Категория:ОС_Роса_Барий]]

Текущая версия от 19:52, 27 марта 2025

Способы сохранения изменений в ОС Барий (Barium OS)

Большая часть особых свойств, что отличают ОС Барий от других дистрибутивов РОСА, собранных на той же пакетной базе, заложены в UIRD

UIRD это init ram disk (initrd) собираемый с использованием dracut, но кардинально отличающийся сценарием загрузки ОС. Предназначен для загрузки модульных дистрибутивов. В настоящее время используется в MagOS, Барии, ublinux, MOS-flash доступен как дополнительный initrd в дистрибутивах puppyrus. А значит описанное далее в целом справедливо и для них.

Именно UIRD отвечает за то как будут сохраняться ваши данные.

Немного теории

Модульными дистрибутивами называются сборки где корневая ФС линукс собирается на этапе initrd из слоев. Каждый из слоев содержит свою часть файлов rootfs. В качестве слоя может быть все что возможно смонтировать в линукс: раздел, папка, iso, img. Но чаще всего это squashfs архивы это и есть модули. Все эти слои объединяются с помощью aufs/overlayfs в один каталог, который и будет корнем "/" для дальнейшей загрузки дистрибутива. Все эти слои монтируются read only, кроме последнего, верхнего слоя. Еще немного и будет понятного к чему вся эта предыстория. Итак. Система загружена, модули RO. А что будет если добавить в систему файл или изменить существующий? Все эти изменения фиксируются в последнем слое, который мы называем changes. При удалении существующего файла, в changes будет оставлена метка (тень или whiteout), и объединяющая модули ФС будет считать что этого файла нет. А что может быть смонтировано в верхний слой? Опять же все, что можно смонтировать в Линукс с возможностью записи.

В UIRD способ работы с верхним слоем, то есть иначе говоря способ сохранения данных между перезагрузками, управляется параметром uird.mode. Доступно 4 варианта:

   uird.mode=clean

Если смонтировать в верхний слой aufs каталог в tmpfs, то все изменения будут храниться в ОЗУ и после выключения исчезнут. Это называем - чистый режим, в большинстве конфигураций это состояние по умолчанию.

   uird.mode=changes

Если смонтировать туда папку на диске или по сети (не принципиально), или файл-образ , то данные будут сохраняться после перезагрузки. Таких папок или файлов может быть несколько, с разным набором установленного софта и настройками. Эти папки или файлы-образы мы называем - профилями. Такой режим используется по умолчанию в MagOS. Кроме uird.mode=changes вам нужно указать где находится файл или папка для сохранений uird.chages=/куда/писать (способы указания путей смотрите в UIRD)

   uird.mode=clear

Гибридный режим между clean и changes, слой подключается как для changes, но перед подключением зачищается. То есть для пользователя выглядит как clean, но не задействует ОЗУ для хранения изменений во время работы системы.

   uird.mode=toxzm

Именно этот режим использует Барий при установке ОС на внешний носитель.

Во время работы изменения пишутся в папку в ОЗУ, (для Бария это блочное устройство zram со сжатием). То есть как в режиме clean. При выключении машины эти изменения пакуются в модули, которые могут монтироваться или распаковываться в changes при следующем старте ОС. Для включения режима кроме uird.mode=toxzm нужно передать путь к файлу с настройками режима uird.changes=/где/конфиг.cfg и uird.shutdown

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

Название параметра завершается индексом, именно по индексу определяется принадлежность параметра секции. Цифровые индексы должны идти по порядку, в этом порядке модули подключаются при старте.

  • XZM - имя модуля, если оставить пустым то будет сгенерировано по характеристикам железа, то есть модуль будет иметь свое имя на каждой машине
  • MODE - режим подключения модуля при загрузке, варианты: copy, mount, mount+wh.
  • REBULID - нужно ли пересобрать модуль при выключении машины, варианты: yes, no, once.
  • ADDFILTER - фильтры (grep) для получения списка файлов и каталогов, которые нужно сохранить в модуль
  • DROPFILTER - фильтры для исключения файлов и каталогов из списка полученного после ADDFILTER
  • SQFSOPT - опции для mksquashfs, обычно это алгоритм сжатия и размер блока
  • MAXCOPYSIZE - Максимальный размер разрешенный для модуля, после чего параметр MODE модуля будет переведен в "mount", REBUILD в "no" и создана новая секция с MODE=copy и REBUILD=yes


Далее на примере конфигурационного файла из бария:

 Для удобства списки можно заносить в переменные

   GARBAGE=/var/log /var/spool /var/tmp /var/cache 
   PAM=/etc/pam.d /etc/pam_pkcs11 /etc/pki /xdg/autostart/ 

Сохраняем домашние каталоги пользователей и рута в модуль homes.xzm                                    

   XZM0=homes.xzm 
   MODE0=copy 
   REBUILD0=no 
   ADDFILTER0="/home /root" 
   DROPFILTER0= 
   SQFSOPT0='-comp lz4 -b 512k' 
   MAXCOPYSIZE0=300 

Системные изменения сохраняем в свой модуль для каждой машины. (если имя для модуля не указано, оно генерируется на основе железа)

   XZM1= 
   MODE1=mount+wh 
   REBUILD1=no 
   ADDFILTER1= 
   DROPFILTER1=$GARBAGE /home /root" 
   SQFSOPT1=-comp lz4 -b 512k 
   MAXCOPYSIZE1= 
Примеры с отключенной пересборкой                                
   XZMpam='pam.xzm' 
   MODEpam='copy' 
   REBUILDpam='no' 
   ADDFILTERpam=$PAM 
   DROPFILTERpam= 
   SQFSOPTpam='-comp xz -b 512k' 
   MAXCOPYSIZEpam= 
Контрольные суммы cts
   XZMcts='cts.xzm' 
   MODEcts='copy' 
   REBUILDcts='no' 
   ADDFILTERcts=/etc/cts /etc/prelink.conf.d/cts.conf 
   DROPFILTERcts= 
   SQFSOPTcts='-comp xz -b 512k' 
   MAXCOPYSIZEcts= 

uird.mounts и uird.home

От части к способам сохранений имеют отношения еще и эти два параметра, позволяющие объединить, например, сохранение части изменений в каталог, а другой части в модуль.

uird.mounts

Параметр используется в трех случаях.

  • для того, чтобы разгрузить запись в uird.from при сложном вложенном монтировании. Например iso в сети по http, внутри которого файл со squashfs, внутри которого файл с ext3 (стандартная конфигурация для современных исо)
  • чтобы организовать автомонтирование раздела для пользователя
  • чтобы сделать бинд (mount -o bind) каталога на носителе внутрь системы, а это как раз интересующий нас в контексте темы случай. Например запись:
   uird.mounts=/my_WWW::MNT=/var/www::MNTOPTS=noexec+rw::FORCE=yes::INIT=yes

Означает найти в корне доступных на момент загрузки разделов каталог /my_WWW. Найденный каталог будет смонтирован в /.memory/mounts/0 с параметрами noexec,rw, а /var/WWW будет биндом на эту папку. FORCE=yes означает не прерывать загрузку если каталог /my_WWW не будет найден, а INIT=yes означает в случае если каталог пуст скопировать туда все что есть в модулях в /var/www, то есть как бы инициализировать. Таким образом все, что в системе будет записано в /var/www реально попадет в каталог my_WWW в корне одного из разделов.

uird.home

По сути подмножество uird.mounts для конкретного каталога /home

   uird.home=/dev/sda1/homes