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

Автор Тема: chroot2pfs  (Прочитано 7589 раз)

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

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1750
  • Репутация: +21/-0
    • Беседка магос
chroot2pfs
« : 08 Ноябрь 2018, 11:33:40 »
https://github.com/pfs-utils/pfs-utils-cli/blob/v4/project-files/usr/bin/chroot2pfs
https://github.com/pfs-utils/pfs-utils-cli/blob/v4/project-files/usr/bin/aufs-n
Есть идея. Предлагаю обмозговать.
Вот так приблизительно может выполняться.
Код
chroot2pfs -f -o nano.xzm --command urpmi nano              пакет в модуль в росе   # работает
chroot2pfs -f -o nano --command urpmi nano       пакет в каталог
chroot2pfs -f -o nano.pfs --command pacman -S nano      пакет в модуль в PRA     # работает
chroot2pfs -o module.xzm --command urpmi nano && ln -s  /usr/bin/nano /bin/nano # не проверено
chroot2pfs -o users.xzm --command  adduser www_data                                                # не проверено
chroo2pfs -o module.xzm --script ./install_my_soft.sh                                                        # работает
chroot2pfs -o nano.xzm --command urpmi nano && rm -rf /var/lib/rpm                           # не проверено
сhroot2pfs -o nano.xzm -m "^[1-4].*"--command urpmi nano                                            # работает
сhroot2pfs -o nano.xzm ---command XFdrake  (создает конфиги иксов)                    # работает

То есть создаем chroot из модулей, выполняем команды, пакуем изменения.
Пока только идея ни буквы кода :)

Добавил обработку параметров --script и --mask.
Код
./chroot2pfs -o nano.xzm -m "^[1-4].*"--command urpmi nano
подключит в чрут только те из модулей, названия которых  начинаются на 1, 2, 3 или 4, выполнит в чруте urpmi nano и соберет модуль из изменений с именем nano.xzm
Создаем файл ./nano.sh, с таким содержимым
#!/bin/bash
urpmi nano

./chroot2pfs -o nano.xzm --script ./nano.sh
подключит в чрут все модули что подключены в основной системе (так как маски нет), перенесет в чрут файл ./nano.sh (в /var/lib/chroot2pfs/nano/), сделает его исполняемым, выполнит скрипт в чруте и соберет модуль nano.xzm

При наличии systemd используется виртуализация с systemd-nspawn, чтоб принудительно включить chroot используем ключ -c chroot
Ключ --mkscript создаем в текущем каталоге скрипт-шаблон для использование со --script

без -o спросит имя, впишете без расширения будет папка
« Последнее редактирование: 28 Ноябрь 2018, 14:21:34 от sfs »
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 26890
  • Репутация: +182/-0
    • PuppyRus-A
Re: chroot2pfs
« Ответ #1 : 08 Ноябрь 2018, 12:15:10 »
chroot2pfs
У меня есть pacman2pfs и chroot.sh - если я правильно понял - предлагается этот же функционал, но в более удобном виде
chroot2pfs -o users.xzm --command 'adduser www_data'
Не понял - если users.xzm - не корень дистра - как так можно....
Или users.xzm aufs-ится в работающий корень и изменения попадут в users.xzm ?

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1750
  • Репутация: +21/-0
    • Беседка магос
Re: chroot2pfs
« Ответ #2 : 08 Ноябрь 2018, 12:28:35 »
е понял - если users.xzm - не корень дистра - как так можно....
Может именно так и не выйдет просто идеи набрасывл.
Вообще задумка в некотором смысле замена epm2pfs, о котором уже не вспоминаем.
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 26890
  • Репутация: +182/-0
    • PuppyRus-A
Re: chroot2pfs
« Ответ #3 : 08 Ноябрь 2018, 12:32:50 »
users.xzm aufs-ится в работающий корень и изменения попадут в users.xzm
Такое было бы интересно, но вряд ли реализуемо
И польза от этого будет только а арче (где в базе ПМ нет индексных файлов)
В прочих дистрах - усли сунуть такой модуль в середину ауфс - сломается база ПМ

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1750
  • Репутация: +21/-0
    • Беседка магос
Re: chroot2pfs
« Ответ #4 : 08 Ноябрь 2018, 12:42:35 »
Мы в большинстве случаев в пользовательских модулях базу попросту удаляем. Здесь ключик под это действие не прикрутить, у каждого ПМ свои базы, но как-то так можно я думаю.
chroot2pfs -o nano.xzm --command 'urpmi nano && rm -rf /var/lib/rpm && rm -rf /var/lib/urpmi'
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1750
  • Репутация: +21/-0
    • Беседка магос
Re: chroot2pfs
« Ответ #5 : 09 Ноябрь 2018, 19:54:30 »
Сделал прототип. Лежит в v4. В ПРА совсем не проверял еще, в магос работает.
chroot2pfs -o nano.xzm --command urpmi nano   - (собирает модуль c nano  в магос)
У вас будет наверное так:
chroot2pfs -o nano.pfs --command pacman -S  nano
Но что сработает не гарантирую, надо проверять.
Еще одна фишка. Перенес из нашего urpm2pfs
chroot2pfs nano.pfs - пересоберет поновой модуль из репы по сохраненным внутри модуля параметрам -o nano.pfs --command pacman -S  nano
Задолбался вспоминать как модули были собраны чтоб пересобрать с обновлениями и запилил такую штуку. У нас даже с локальными rpm работает,  но тут сложнее с этим.
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 2139
  • Репутация: +70/-0
Re: chroot2pfs
« Ответ #6 : 09 Ноябрь 2018, 20:14:32 »
chroot2pfs -o nano.pfs --command pacman -S  nano
Правильно ли я понимаю, что можно будет разморозить репу в фругале, а потом пересобрать все модули с chroot2pfs. Если так, то приветствую обоими руками. Фругал меня устраивает полностью, но и новое ПО хочется, время от времени. :)

P.s. Готов даже тестировать.
« Последнее редактирование: 09 Ноябрь 2018, 20:16:48 от krasnyh »

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1750
  • Репутация: +21/-0
    • Беседка магос
Re: chroot2pfs
« Ответ #7 : 09 Ноябрь 2018, 20:41:04 »
Тестить конечно надо, но если особо опыта нет лучше дождитесь когда мы с Sfs хотябы заведем это в ПРА.
Про заморозки/разморозки я не особо в теме. Утилита приблизительный аналог pacman2pfs (не помню точно как называется у вас), но со своими фишечками. Пересоьираемые модули одна из них.
Вот собрали вы модуль, он у вас работает через какое то количество обновлений системы он работать перестает, либы сменились или еще чего. Вы просто берете и запускаете chroot2pfs модуль.pfs и все.
Ничего фантастического тут нет просто в модуле хранятся параметры с коьорыми вы запускали chroot2pfs при сборке.
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 26890
  • Репутация: +182/-0
    • PuppyRus-A
Re: chroot2pfs
« Ответ #8 : 10 Ноябрь 2018, 10:21:32 »
chroot2pfs -o nano.pfs --command pacman -S  nano
Не работает. initvar уже есть в pfs - зачем продублировано?
Если я правильно разобрал код :
1. модуль распаковывается
2. монтируется в свой aufs
3. chroot в него
Или проглядел где туда же корень или еще что-то монтируется или не понятно, откуда в этом чруте возьмется ПМ

В ПРА в каждом непортированном модуле хранится список пакетов. Поэтому пересобрать просто : pacman2pfs `pfspkg старый.pfs`
Если и у Вас так же - не понимаю зачем чрут. Просто собрать новый модуль по списку пакетов старого

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1750
  • Репутация: +21/-0
    • Беседка магос
Re: chroot2pfs
« Ответ #9 : 10 Ноябрь 2018, 10:52:43 »
Собирается новая ауфс из точек монтирования сквошей системных модулей. Сейчас из всех, после будет маска. Создаются /proc, /dev, /tmp и тд. в новой ауфс. Теперь чрутимся туда и выполняем то , что после --command ( не обязательно установка пакетов, что угодно). После размонтируем все и mkpfs  для changes от новой ауфс. Далее  delaufs. Все.
В дальнейшем кроме --command будет еще --script чтоб много комманд выполнить.
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 26890
  • Репутация: +182/-0
    • PuppyRus-A
Re: chroot2pfs
« Ответ #10 : 10 Ноябрь 2018, 11:12:58 »
Собирается новая ауфс из точек монтирования сквошей системных модулей.
Если бы в итоге можно было обновить все модули - какой-то смысл есть. Но нельзя, т.к. change - один на все
Если базовые содержут старые пакеты, а обновляемый модуль получится свежее - он может не работать...
Не догоняю практического смысла. Зачем эти усложнеия
не понимаю зачем чрут. Просто собрать новый модуль по списку пакетов старого

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1750
  • Репутация: +21/-0
    • Беседка магос
Re: chroot2pfs
« Ответ #11 : 10 Ноябрь 2018, 11:19:58 »
Чрут, чтоб переложить управление зависимостями на штатный ПМ. И не привязывайтесь именно к обновлениям, в   pfs-utils нет утилиты для сборки модуля из пакетов типа urpm2xzm, pacman2pfs так вот это она :)
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 26890
  • Репутация: +182/-0
    • PuppyRus-A
Re: chroot2pfs
« Ответ #12 : 10 Ноябрь 2018, 11:27:29 »
Т.е. система загружена с кучей небазовых модулей
Если собрать модуль из пакетов в такой - на другом комплекте модулей может не работать
А так мы собираем в чруте из ТОЛЬКО базовых модулей
Тогда идея понятна и интересна

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 26890
  • Репутация: +182/-0
    • PuppyRus-A
Re: chroot2pfs
« Ответ #13 : 10 Ноябрь 2018, 11:33:25 »
С pfs v3 должно работать?

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 1750
  • Репутация: +21/-0
    • Беседка магос
Re: chroot2pfs
« Ответ #14 : 10 Ноябрь 2018, 11:36:31 »
мы собираем модули в чруте по маске, правда пока это не делал.   * или ??-* или [0-3]* или еще как. Надо только решить по  умолчаеию как. *  наверное.
http://magos-linux.ru - форум
https://gitter.im/magos-linux-ru/chat - беседка (чат)