Сборка UIRD в магее

спек:

%define gitrev af85318
%define gitdate 20190208

%define _missing_build_ids_terminate_build 0

# Git repo: https://github.com/neobht/uird.git

# How to prepare the source archive from the git tree:
# git clone --recursive https://github.com/neobht/uird.git && cd uird
# hash=$(git log -1 --format='%h') ; date=$(git log -1 --format='%cd' --date=short | tr -d -) &&  tar czf  ../uird-${date}-git${hash}.tar.gz --exclude=.git  ../uird

Summary:    Unified Init Ram Disk system
Name:       uird
Version:    2.1.1
Release:    %mkrel -c 1 %{gitdate}git%{gitrev}
License:    GPLv2+
Group:      System/Base
Url:        http://neobht.github.io/uird
Source0:    %{name}-%{gitdate}-git%{gitrev}.tar.gz
Source1:    mkuird
Source2:    MgaRemix
AutoReq:    no

BuildRequires:    git-core
BuildRequires:    dash
BuildRequires:    bash
BuildRequires:    pkgconfig(systemd)
BuildRequires:    bash-completion
BuildRequires:    pkgconfig
BuildRequires:    pkgconfig(libkmod)
Requires:    systemd >= 219
Requires(pre):    filesystem
Requires(pre):    coreutils
Requires:    udev
Requires:    util-linux-ng
Requires:    kmod
Requires:    e2fsprogs
Requires:    cpio
Requires:    findutils
Requires:    binutils
Requires:    grep
Requires:    mktemp
Requires:    bash
Requires:    dash
Requires:    kbd
Requires:    tar
Requires:    gzip
Requires:    bzip2
Requires:    xz
Requires:    file
Requires:       qemu-img
Requires:       aria2
Requires:       httpfs
Requires:       rsync

%description
UIRD - dracut based unified init ram disk system.
Dracut contains tools to create a bootable initramfs for Linux kernels.

%prep
%setup -qn %{name}

%build
./make_busybox.sh
./make_dracut.sh

%install
mkdir -p %{buildroot}%{_datadir}/uird/busybox/  %{buildroot}%{_bindir}/
cp -fr ./dracut    %{buildroot}%{_datadir}/uird/
cp -fr ./configs   %{buildroot}%{_datadir}/uird/
cp -fr ./initrd    %{buildroot}%{_datadir}/uird/
cp -fr ./i18n %{buildroot}%{_datadir}/uird/
cp -fr ./modules.d %{buildroot}%{_datadir}/uird/
find ./  -maxdepth 1 -type f -regex "./[a-z,A-Z,0-9].*" -exec cp {}  %{buildroot}%{_datadir}/uird/  \;
cp ./busybox/busybox %{buildroot}%{_datadir}/uird/busybox/

install -m 755 %{SOURCE1} %{buildroot}%{_bindir}/
install -m 644 %{SOURCE2} %{buildroot}%{_datadir}/uird/configs/uird_configs/
rm -rf %{buildroot}%{_prefix}/lib
rm -rf %{buildroot}%{_prefix}/src

%files
%{_datadir}/uird/*
%{_bindir}/mkuird

%changelog


mkuird (Source1):

#!/bin/bash
CUR_PWD=$(pwd)
cd /usr/share/uird
./mkuird $@
mv ./uird* ${CUR_PWD}/
cd $CUR_PWD

Конфиг для MgaRemix (Source2):

uird.config=MgaRemix.ini
uird.ramsize=70%
uird.ro=*.xzm;*.rom;*.rom.enc;*.sqfs
uird.rw=*.rwm;*.rwm.enc
uird.cp=*.xzm.cp,*/rootcopy
uird.load=/loopbacks/,/modules/,rootcopy
uird.noload=''
uird.from=/MgaRemix
uird.find_params=-maxdepth_3
uird.mode=clean 
uird.changes=/MgaRemix-changes
uird.syscp=/livekitlib::/usr/bin;/uird.scan::/usr/bin
uird.preinit
uird.shutdown

Только строчку :

uird.cp=*.xzm.cp,*/rootcopy

Я бы все же укоротил

**uird.cp=*.xzm.cp**

Т к на fat32 rootcopy будет работать некорректно
Теперь rootcopy можно задействовать в модульном выриаете

Это не принципиально. Можно и убрать.
P.S. Чтобы строка не форматировалась форумом начинайте ее с четырех пробелов.

Что то как то сложновато.

Так редактируйте, кто мешает.

Хорошая новость !
При сохранении изменений в модуль у меня на Магее 7 все работало кроме ситуации, когда обновлялись пакеты systemd и glibc
Штатное выключение (запись сис-изменений, отмонтирование модулей и выключение системы)
прерывалось попыткой системы отмонтировать модули.
Ей это не удавалось и запись модуля продолжалось.
Если изменения были записаны в swap, то модуля вообще не создавалось.
Т к swap отключался системой до старта записи сис изменений в модуль.
Но сегодня пришли с обновлениями пакеты systemd и glibc и выключение штатное.
Т е запись сис-изменений, отмонтирование модулей и выключение системы
Скорее всего это заслуга обновленного UIRD, ну а может это Магея betta3
Но это как то маловероятно.

Не думаю, что uird. Ничего что могло повлиять вроде не делали.

Писалка изменений у меня /usr/lib/magos/rc.halt/81-savetomodule-post
Это тот, который работает от UIRD.
В UIRD вроде были введены опции выключения системы.
Может это все же и UIRD ?
Я пытался бороться с этим, но проблема победила. А тут что то заработало.
Попробую на сборке для Магеи 6, если обновления для systemd и glibc придут.
Там точно systemd и glibc штатно не выключались.

Появилось новое ядро в Магее - https://forum.mageia.org.ru/viewtopic.php?pid=30157#p30157
Ядро 5.1.0-desktop-0.rc6.2.mga7 не хочет работать с UIRD.
Как видно из логов, то основное сообщение :
Operation not supported
Последнее ядро, где все работает - 5.0.9-desktop-1.mga7
Похоже что то с правами доступа.

Кроме ядра что менялось?
Собирали под рутом?
Дракут пересобрать пробовали?
На какой фс /var/tmp находится, и достаточно ли там свободного места?

Входил в систему как root и как live и в root-терминале запускал.
Пробовал пересобирать dracut запустив /usr/share/uird/make_dracut.sh
Сам /usr/share/uird/dracut брал как от МагОС так и из Магеи
фс /var/tmp - aufs
Наверно надо на LiveDVD от Магеи попробовать ?

На ядре 5.0.9-desktop-1.mga7 все собирается ок !

При запуске системы на ядре 5.0.9-desktop-1.mga7 устанавливаю ядро 5.1.0-desktop-0.rc6.2.mga7 и в системе можно с генерировать нормальный uird.MagOS.cpio.xz
Далее выключаюсь с записью в модуль.
После запуска системы на новом ядре - MagOS на пакетной базе Магеи_x86-64 (Страница 9) — Модульные дистрибутивы на базе Mageia — Mageia Russian Community Forum
Вроде как какие то права на запись появились новые.

Попробуйте монтировать в /var/tmp tmpfs или ext2/3/4 раздел.

А как это сделать ?
Что то не нашел в параметрах как /var/tmp подключить как tmpfs или ext2/3/4 раздел.

Есть только в MagOS.ini :

Можно отключить использование tmpfs для /tmp или /var/tmp при работе с профилем
#TMPFS=no
#VARTMPFS=no

Но это не то.

PS :wink: :
И вообще система, при наличии ядра 5.1.0-desktop-0.rc6.2.mga7, ведет странно.
Писал ответ и что то все зависло.
Это я зашел с ядра 5.0.9-desktop-1.mga7 при установленном ядре 5.1.0-desktop-0.rc6.2.mga7

Пришло с обновлениями 5.1.0-desktop-0.rc7.1.mga7 и с ним то же самое
Виновато в баге в uird само ядро 5.1.0-desktop-0.rc7.1.mga7 и вроде оно еще нестабильное.
Если верить - https://www.kernel.org/
Непонятно почему в Магее оно записано в стабильных репах

Последнее ядро, где uird в Магее работает - 5.0.9-desktop-1.mga7

Опробовал uird на ядре 5.1.1-desktop-1.mga7 и все по прежнему.
На ядре 5.0.9 uird нормально делает загрузчик для ядра 5.1.1
Система нормально грузится на ядре 5.1.1
Но uird не конфигурирует загрузчик на ядре 5.1.1. Причем загрузчик собирается, но к примеру :

cp: setting attributes for '/var/tmp/dracut.gMXd0D/initramfs/usr/bin/bash': Operation not supported

Почему то не передаются attributes

Папка сборки загрузчика задается в /usr/share/uird/dracut/dracut.sh параметром :
tmpdir=/var/tmp

Пробовал везде. Но не помогло
Похоже что дело в самом ядре и что то связано вероятно с безопасностью.
А можно ли сейчас запустить, для тестирования, uird на родном dracut ?

Вероятнее всего проблема не уирд, а дракута с ядром. Если проблема проявляется не только у нас, то может и пофиксили уже. Попробуйте обновить дракут до последнего коммита и пресобрать.
А сборочная уирда на какой фс?

Вот именно ! На ядре 5.0 собирается но на ядрах 5.1 нет

Сборочная в /usr/share/uird это,как я понимаю|, aufs
Но пробовал собирать на флэшке (btrfs), на разделе диска (EXT4)
Может что не так сделал.

Пересобирал. Пробовал перевести uird на дракут от Магеи.
Загрузчик не обрался но проблема дракута с ядром осталась.
В ядре 5.1.1-desktop-1.mga7 появляется
/sys/kernel/security/tomoyo - TOMOYO Linux — Википедия

Обеспечивает защиту от неизвестных уязвимостей, так называемых [Zero-Day Exploit]

Так что вроде безоастность. Тк пишет

Operation not supported
``
PS :`
Уже появилаось ядро **5.1.2**  и все так же
В Магее **tomoyo** скорее всего еще не настроен
Одним из его функций блокировать подозрительные программы

На ядре 5.1.3-desktop-4.mga7 загрузчик uird сконфигурировался ок !

Правильно понимаю, что все нормально и чинить ни чего ненужно?

Ядро 5.1.3-desktop-5.mga7
Да ! На свежей сборке и последнем uird все заработало, но все же сделал правки :slight_smile:

В file:///usr/share/uird/dracut/dracut.sh :

  1. стр 754
    [[ $tmpdir ]] || tmpdir=/var

Это переместил папку сборки в tmpdir=/var (было /var/tmp)
2) Т к dracut находится у меня в /usr/share/uird/dracut
То в /usr/share/uird/dracut/dracut.sh заменил пути

/usr/lib/dracut на /usr/share/uird/dracut

Вообще то пути правильнее задать в команде ./configure
Но не знаю какие опции задать.
Хотя на сбойных ядрах это не помогло, но правки вполне логичные