Сайт | Скачать | Видео | Wiki

Автор Тема: Initrd UIRD  (Прочитано 242519 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: Initrd UIRD
« Ответ #645 : 27 Апрель 2019, 05:49:57 »
Чет давно новостей не писал :)
https://forum.magos-linux.ru/t/testim-uird/58

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: Initrd UIRD
« Ответ #646 : 01 Февраль 2020, 09:07:19 »
Тестируем новую систему сохранения в модуль. Если интересно присоединяйтесь.
Инструкция:
https://forum.magos-linux.ru/t/instrukcziya-dlya-toxzm/122?u=betcher
Обсуждение:
https://forum.magos-linux.ru/t/konczept-rezhima-sohraneniya-v-modul/118/142?u=betcher
Пока в отдельной ветке uird:
https://github.com/neobht/uird/tree/newmode
Уирд собирается в lfa1801, проверил. Нужен только DEVX модуль.

З.Ы. Дальше пока не тестил, потому что не смог достать UIRD из виртуалбокса :). Общие папки не работают, флешка не подключилась, ни один из двух браузеров не смог закинуть файл на YD. Обиделся и бросил :(

Оффлайн DdShurick

  • Это Риччи
  • Активный участник
  • Ветеран
  • ****
  • Сообщений: 8635
  • Репутация: +187/-2
  • Старый чайник
Re: Initrd UIRD
« Ответ #647 : 01 Февраль 2020, 09:21:57 »
mksavexzm смотрел?
Код
#!/bin/sh
# DdShurick GPL-v2 18.03.16
# DdShurick changed for Richy minitrd 15.07.19
if [ "$(id -u)" != 0 ]; then
loginroot $0
exit
fi
#Задаём переменные
[ $(grep "DISTRO_FILE_PREFIX" /etc/initvars) ] || echo "DISTRO_FILE_PREFIX='$(losetup -a|awk '/-base./ {print $3}'|sed 's|.*/base/||;s|-base.*||;')'" >> /etc/initvars
. /etc/initvars
SAVEPATH=/mnt/${PDEV}/${PDIR}/base
#SAVEPATH=$(busybox losetup -a|awk '/base/ {print $3}'|sed 's/base.*//'|sort -u)

#[ "$(grep $PDEV /proc/mounts)" ] || mount /dev/$PDEV /mnt/$PDEV
[ -d ${SAVEPATH}changes ] && SYSMNT=mnt/${PDEV}/${PDIR}
#Последовательно копируем слои
mkdir -p /tmp/savesfs-root
SAVE=$(awk '/save/ {print $2}' /proc/mounts) #/upd/
[ "$SAVE" ] && cp -af $SAVE/* /tmp/savesfs-root/
CHANGES=$(awk '/changes/ {print $2}' /proc/mounts)
cp -af $(ls -d $CHANGES/[!dimstv]*) /tmp/savesfs-root/
#Удаляем каталог сохранения
[ "$SYSMNT" = "mnt/${PDEV}${PDIR}" ] && rm -r /$SYSMNT/changes
echo false > /tmp/savesfs-root/etc/.XLOADED
#Удаляем "затенённые" (отмеченные как удалённые) файлы и каталоги.
find /tmp/savesfs-root -mindepth 2 -name .wh.* | while read WH
do
F=$(echo $WH | sed 's/\/tmp\/savesfs-root//;s/.wh.//g')
if [ -e "/initrd/pup_rw$F" ]; then
rm $WH #если удалённый файл заново создан, удаляем .wh.*
else
[ -e "/tmp/savesfs-root$F" ] && rm -r /tmp/savesfs-root$F #если ранее сохранённый файл удалён, удаляем его.
fi # если .wh.* относится к нижним слоям - ничего не делаем
done
#Бекапим файл сохранения
[ -f $SAVEPATH/${DISTRO_FILE_PREFIX}-save.xzm ] && mv $SAVEPATH/${DISTRO_FILE_PREFIX}-save.xzm $SAVEPATH/${DISTRO_FILE_PREFIX}-save.xzm.old
#Создаём новый файл сохранения
mksquashfs /tmp/savesfs-root/ $SAVEPATH/${DISTRO_FILE_PREFIX}-save.xzm -comp xz && rm -r /tmp/savesfs-root
Моноблок Lenovo IdeaCentre c200 (Intel Atom D525, Intel GMA 3150, 2 Gb RAM) Richy64
Nettop Acer Aspire Revo R3610 (Atom N330, nVidia GeForce 9400, 3 Gb RAM) Richy64

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: Initrd UIRD
« Ответ #648 : 01 Февраль 2020, 09:28:59 »
mksavexzm смотрел?
Нет. Дома посмотрю, с телефона не раскрывается.

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5319
  • Репутация: +139/-1
Re: Initrd UIRD
« Ответ #649 : 01 Февраль 2020, 10:00:54 »
Цитата
XZM0=mac-dc0ea1fbbb19.xzm (имя модуля по имени конфига)
MODE0=copy (режим подключения, еще варианты mount,none)
REBUILD0=yes (пересобирать или нет, аналог static/dynamic, варианты yes/no)
ADDFILTER0=’’ (список через пробел чего надо включить, пустой список означает включить все)
DROPFILTER0=’’ (список через пробел чего нужно исключить из выбранного ADDFILTER)
SQFSOPT0=’’ (параметры для mksquashfs - сжатие, размер блока и т.д.)
MAXCOPYSIZE0=’’ (максимальный размер модуля в мегабайтах при привышеннии которого модуль переводится в MODE0=mount, REBUILD0=no и создается новая секция)

Ноль в конце имен параметров это идентификатор первого модуля, можно сохранять в несколько модулей с разными настройками, тогда у второго будет идентификатор 1 у третьего 2 и т.д. Например один модуль может иметь имя привязанное с mac и туда сохраняете только /etc, а второй модуль используется для всех машин один и туда сохраняете все остальное.

На практических примерах бы иллюстрировать нужность подобного функционала.
« Последнее редактирование: 01 Февраль 2020, 10:20:13 от krasnyh »

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: Initrd UIRD
« Ответ #650 : 01 Февраль 2020, 10:11:53 »
На практических примерах бы иллюстрировать нужность подобного функционала.
До конца посмотрите, там примеры.
Типа такого (дефолтные параметры удалил дабы не загромождать):
XZM0=module.xzm
MODE0=mount               
REBUILD0=yes             
           
XZM1=wh.xzm
MODE1=copy               
REBUILD1=yes
ADDFILTER1='.wh.'

В первой секции модуль монтируется при старте и пересобирается при выключении. Он включает все файлы и каталоги кроме теней aufs.
Модуль во второй секции распаковывается при старте и пересобирается при выключении. Он содержит только тени.
Такой режим также позволяет совмещать монтируемые модули и сохранение теней.

В инструкции еще несколько примеров.
« Последнее редактирование: 01 Февраль 2020, 10:14:50 от betcher »

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: Initrd UIRD
« Ответ #651 : 01 Февраль 2020, 10:18:02 »
F=$(echo $WH | sed 's/\/tmp\/savesfs-root//;s/.wh.//g')
   if [ -e "/initrd/pup_rw$F" ]; then
    rm $WH #если удалённый файл заново создан, удаляем .wh.*
   else
    [ -e "/tmp/savesfs-root$F" ] && rm -r /tmp/savesfs-root$F #если ранее сохранённый файл удалён, удаляем его.
   fi # если .wh.* относится к нижним слоям - ничего не делаем
done
Вы видимо и есть тот человек который посоветовал Ингваро как удалять зависшие тени. Долго жить будете, сегодня только вспоминали :). Почитайте обсуждение ближе к концу если интересно.
У меня с тенями работает совсем иначе.  Как вариант пример приведенный выше.
« Последнее редактирование: 01 Февраль 2020, 10:22:31 от betcher »

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5319
  • Репутация: +139/-1
Re: Initrd UIRD
« Ответ #652 : 01 Февраль 2020, 10:32:29 »
Есть, например, профиль браузера в модуле 083-firefox-profile_any*. И если он будет пересобираться автоматом при выходе из системы, то это плюс.
Сейчас это вручную приходится делать. Помнится я это дело костылил с pfsrebuild, но там папки и файлы создавало с правами root. )


Цитата
XZM0=''
MODE0=copy               
REBUILD0=yes             

XZMend=88-magos.xzm
MODEend=copy               
REBUILDend=no             

Перва секция имеет пустое значение в XZM0, значит на каждой машине там будет свое имя модуля, то есть свой модуль для каждой машины. А вторая секция распаковывает непересобираемый модуль, и он всегда распаковывается последним (поверх всех) независимо от того сколько еще модулей (нумерованных секций) будет создано.
А зачем может понадобится распаковывать 88-magos.xzm  при старте системы?

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: Initrd UIRD
« Ответ #653 : 01 Февраль 2020, 10:36:03 »
Что отличает toxzm  от Вашего варианта и старых вариантов магос. Основные моменты только.
- не зависит от системы. Нужен только UIRD и systemd
- код собирающий модуль выполняется в чруте, когда базовый ауфс полностью размонтирован и /changes никуда не смонтированная папка.
- полностью размонтироуются все модули и все носители при выключении систмы после сборки модуля.
- не требует блокирования фс с модулем, чтоб ее не размонтировал системд до того как соберется модуль
- нет ограничения по времени на сборку модулей (от systemd опять же)
- можно сохраняться в несколько модулей с разными фильтрами в один /home в другой /root и т.д.
- модули с сохранениями можно как распаковать в систему так и монтировать
- имя модуля может быть жестко задано, а может быть привязано к железу (как machines в магос)
- разные настройки для каждого модуля (размер, сжатие, фильтры и т.д.)
« Последнее редактирование: 01 Февраль 2020, 10:48:18 от betcher »

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: Initrd UIRD
« Ответ #654 : 01 Февраль 2020, 10:38:33 »
А зачем может понадобится распаковывать 88-magos.xzm  при старте системы?
Это реальный кейс. Ингваро использует 88-magos.xzm в своих сборках на базе ubuntu и mageia если обновить систему и обновления запаковать в сохраненку то они окажутся выше 88-magos.xzm и патченные файлы из него перестанут работать. Это просто я предложил вараинт как это обойти с toxzm.

Оффлайн ingvaro

  • Постоялец
  • ***
  • Сообщений: 104
  • Репутация: +2/-0
Re: Initrd UIRD
« Ответ #655 : 01 Февраль 2020, 10:43:38 »
Вы видимо и есть тот человек который посоветовал Ингваро как удалять зависшие тени.

Строки одной нет. Вот

WHDELL() {
find $SRC -name ‘.wh.*’ | while read WHF
do
F=$(echo $WHF | sed s/.wh.//g)
FS=$( find “$F” -print 2>/dev/null )
if [ -n “$FS” ] ; then
rm -rf $WHF
fi
done
}

Но эта версия для uird
Не работал  у автора проги поиск файлов

if [ -e “$FS” ] ; then

Причем в системе файлы находятся и все работает
И тут выручил find

PS
Для полного удаления теней прогу надо запускать два раза
Удаляются сначала тени и потом тени теней и дальше aufs окончательно удаляет тень
« Последнее редактирование: 01 Февраль 2020, 10:46:49 от ingvaro »

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: Initrd UIRD
« Ответ #656 : 01 Февраль 2020, 10:46:03 »
Есть, например, профиль браузера в модуле 083-firefox-profile_any*. И если он будет пересобираться автоматом при выходе из системы, то это плюс.
Если сможете выделить нужные файлы фильтрами ADDFILTER, DROPFILTER то конечно соберет. Но вероятно правильнее будет не переписывать системный модуль а делать поверх с теми же файлами, который и будет пересобираться.
« Последнее редактирование: 01 Февраль 2020, 10:49:04 от betcher »

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5319
  • Репутация: +139/-1
Re: Initrd UIRD
« Ответ #657 : 01 Февраль 2020, 11:18:30 »
Изначально это системный модуль, да. Но в моем случае, это всего лишь мой настроенный профиль браузера, оформленный в виде системного модуля. Я его вручную время от времени перезаписываю.

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5319
  • Репутация: +139/-1
Re: Initrd UIRD
« Ответ #658 : 01 Февраль 2020, 23:15:58 »
З.Ы. Дальше пока не тестил, потому что не смог достать UIRD из виртуалбокса :). Общие папки не работают, флешка не подключилась, ни один из двух браузеров не смог закинуть файл на YD. Обиделся и бросил :(
1. Можно включить сервер в гостевой и на хосте и тогда можно скинуть файлы через mc (сам так иногда делаю) Меню - Интернет - PureFTPd-FTP-сервер
2. Но в основном запускаю в Qemu соответствующей командой и разделы HDD нормально видны и примонтированы для доступа из LiveCD:
Цитата
qemu-system-x86_64 -smp 4,maxcpus=4,cores=4,threads=1,sockets=1 -enable-kvm -soundhw ac97 -m 1.5G -rtc base=localtime -drive format=raw,media=cdrom,readonly,file=/mnt/sda3/iso/lf01-1911-x86_64.iso -boot d -drive format=raw,file=/dev/sda


Не надо оставлять попыток что-то свое запускать на наших сборках и выкладывать результат и инструкцию здесь. Можно сказать, а зачем это надо - ведь есть своя сборка (Magos) и свой форум. Но, я считаю, что в этом случае многие идеи, которые высказывались здесь со стороны разработчиков Magos, давно бы нашли свое практическое применение и ушли в массы.

Да, наш форум слегка 'болотистый' и 'энерджайзером' здесь выступает один sfs. Если у него загорелось, то идея получит развитие, нет - уйдет на пыльную полку забвения. )

p.s. Как-то sfs предлагал открыть на нашем форуме целый раздел для Magos. На мой взгляд здравая идея, зря отказались.
« Последнее редактирование: 01 Февраль 2020, 23:20:44 от krasnyh »

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
    • MagOS linux
Re: Initrd UIRD
« Ответ #659 : 02 Февраль 2020, 07:15:32 »
1. Можно включить сервер в гостевой и на хосте и тогда можно скинуть файлы через mc (сам так иногда делаю) Меню - Интернет - PureFTPd-FTP-сервер
Да я б нашел как достать, можно в конце концов vdi смонтировать. Просто куда не сунусь везде затык :) А за готовую строку для qemu спасибо, пригодится.
« Последнее редактирование: 02 Февраль 2020, 08:03:41 от betcher »