UIRD - https://github.com/neobht/uird
Info-Overlay - https://russianblogs.com/article/87631492796/
Это разновидность initrd, его задача собрать из слоёв aufs/overlayfs корневую файловую систему и передать загрузку /sbin/init (systemd) с этой корневой файловой системой.
Но для Mageia и Lubuntu требуются правки.
Скачать исправленный конфигуратор uird для Магеи8 - https://drive.google.com/drive/folders/ … share_link
Для других дистрибутивов надо из /usr/share/uird удалить busybox и dracut.
Запустить в терминале make_busybox.sh и make_dracut.sh
При этом для Lubuntu надо править /usr/share/uird/mkuird.cfg
▼Spoiler
# mkuird config file
#########################################
#uncomment this string if work dir is not ./
#WORKDIR=/usr/lib/uird
#
#BINBUSYBOX=/usr/bin/busybox # busybox binary, default is ./busybox/busybox
#OUTD=/boot # like par -o
#EXCLUDE=BIN_extra,nbd,zram # like par -e
#NAME=myUIRD.cpio.xz # like par -n
#KERNEL=4.19.10-x86_64 # like par -k
#KMODPATH=/tmp/kernelmods # like par -m
#LOGD=/var/log/uird # like par -L
##########################################
KM_base="loop pata_acpi ata_generic ahci xhci-hcd xhci-pci xhci-plat-hcd ohci-pci usb-storage uhci-hcd lockd evdev af_packet
atkbd i8042 hid usbhid ehci-hcd ohci-hcd ehci-pci ehci-platform hid-generic sr_mod sd_mod scsi_mod jbd jbd2 sunrpc cbc
hid-apple mac-hid nouveau
=drivers/ide =drivers/ata =drivers/gpu =drivers/usb/storage =drivers/usb/host =drivers/mmc =drivers/net =drivers/video/fbdev"
KM_network="=drivers/net/ethernet =fs/nfs"
KM_dev="nbd zram mptspi mptfc mptsas nvme vmw_pvscsi"
KM_crypto="aes-generic aes-i586 aes-x86_64 dm-crypt cryptoloop"
KM_compAlg="z3fold lz4 zstd"
KM_virt="virtio virtio_blk virtio_pci virtio_scsi virtio_net"
FS_KM="aufs squashfs vfat msdos iso9660 isofs xfs fuse nfs cifs udf nls_cp866 nls_utf8 reiserfs overlay ext3 ntfs btrfs"
BIN_base="mksquashfs gettext loadkeys reboot poweroff file cryptsetup kmod"
BIN_network="aria2c sshfs curlftpfs httpfs"
BIN_filesystem="mhddfs mkfs.ext4 mkfs.btrfs qemu-nbd qemu-img fsck fsck.ext2 fsck.ext3 fsck.ext4 fsck.exfat fsck.vfat fsck.xfs fsck.btrfs btrfsck ntfsfix parted resize2fs"
BIN_extra="rsync"
DM_uird="uird uird-network uird-soft"
#DM_base="base ntfs kernel-modules crypt shutdown plymouth i18n"
# Для Ubuntu
DM_base="base ntfs kernel-modules crypt shutdown"
#INST_all="/usr/lib64/plymouth/label.so /usr/share/fonts/TTF/FreeSans.ttf /etc/pki/tls/cert.pem"
# Для Ubuntu
INST_all="/usr/share/fonts/TTF/FreeSans.ttf /etc/pki/tls/cert.pem"
#use for --addon only
ExtraDM="uird-dev"
Изменения в UIRD
В Магеиа-9 и Lubuntu uird уже не запустится или запустится с ошибками.
Причины :
1) В Магее-9 egrep устарел и отсутствует
▼Spoiler
~$ egrep
egrep: warning: egrep is obsolescent; using grep -E
Lubuntu то же egrep уже отсутствует.
▼Spoiler
Консоль: root
[root@localhost ~]# # egrep
Использование: grep [ПАРАМЕТР]… ШАБЛОНЫ [ФАЙЛ]…
Запустите «grep --help» для получения более подробного описания.
Заменил egrep на grep -E во всех скриптах
Конфиг для UIRD
Конфиг я сделал magosm. Лежит в /usr/share/uird/configs/uird_configs
За основу взят конфиг MagOS
Но в нем отсутствуют строки uird.from, uird.noload, uird.changes
Которые я стал задавать в меню для grub
В этом даже есть преимущество. Эти строки, перед запуском, можно откорректировать.
Получился один конфиг на оба дистра.
magosm :
▼Spoiler
uird.config=MagOS.ini
uird.ramsize=70%
uird.ro=*.xzm;*.rom;*.rom.enc;*.pfs;*.sqfs
uird.rw=*.rwm;*.rwm.enc
uird.cp=*.xzm.cp
uird.load=/base/,/modules/
uird.find_params=-maxdepth_3
uird.mode=clean
uird.syscp=/livekitlib::/usr/lib/magos/scripts
# Комментарии могут быть только в конце файла
#uird.home=/MagOS-Data/homes
#uird.cache=/MagOS-Data/cache
Другие изменения :
2) UIRD при выключении формирует модуль, где сохраняются сделанные изменения в системе
DROPFILTER формирует список файлов и папок, которые надо исключить
DROPFILTER может содержать строки с полным путем до папок, которые надо исключить :
▼Spoiler
/etc/X11/xorg.conf
/etc/X11/xorg.conf.d
/usr/share/mga/backgrounds
Или просто имена папок или файлов, которые надо найти в системе и исключить :
Тестирование показало что в Магее не всегда корректно находятся путь до папок или файлов, которые надо найти в системе и исключить.
Разделил DROPFILTER на два фильтра :
DROPFILTER
▼Spoiler
/etc/X11/xorg.conf
/etc/X11/xorg.conf.d
/usr/share/mga/backgrounds
SEARCHFILTER
3) И наконец что лучше AUFS или OverlayFS
AUFS более функциональна. Но тени из AUFS не работают в OverlayFS
OverlayFS более универсальна.Тени, из OverlayFS работают в AUFS
Ограничения OverlayFS :
▼Spoiler
- в OverlayFS пока нет возможности при монтировать в развернутую систему дополнительный модуль (горячее подключение).
Приходится, сделав новый модуль, перезагружать систему.
На мой взгляд надо обладать опытом работы с сервисами, что бы пользоваться горячим подключением.
Если опыта мало то лучше, даже в AUFS, не рисковать и перезагрузиться.
- в UIRD, при выключении, сделанные изменения в системе сохраняются в модуль
При этом /memory/changes должны суммироваться со старым модулем сохранения.
Если это делать в OverlayFS то теряются тени, что недопустимо.
В UIRD для сохранения файлов +тени есть режим mount+wd
Тут старый модуль сохранения копируется в /memory/changes
Претензий к этому режиму у меня нет. Удивительно, но задержек нет и все копируется быстро.
Но я попробовал применить для суммирования /memory/changes и старый модуль сохранения утилиту mhddfs
При этом mhddfs монтирует как файлы, так и тени файлов из memory/changes и старого модуля сохранения .
Скачать mhddfs - https://raw.githubusercontent.com/rpmsp … x86_64.rpm
Для Lubuntu пакет mhddfs присутствует в репозиториях
При этом, если mhddfs отсутствует в UIRD, то работает авторское копирование модулей.
▼Spoiler
if [ -f '/usr/sbin/mhddfs' ]; then
mhddfs "$SRC","${UNION}-bundle" $UNION
SRC="$UNION"
else
mount -o remount,rw ${SYSMNT} # need if uird.rootfs=zram
which rsync >/dev/null 2>&1 && \
rsync -aq --ignore-existing ${UNION}-bundle/* ${SRC}/ || \
cp -Rn ${UNION}-bundle/* ${SRC}/
fi