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

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

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

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Re: chroot2pfs
« Ответ #15 : 10 Ноябрь 2018, 21:16:12 »
Добавил обработку параметров --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

Вроде как и пересборка работает и с --command и co --script.

В PRA не проверял пока, но убрал кое что из-за чего могло не работать. Смотрите.

З.Ы. Надо наверное еще прикрутить копирование произвольных файлов из системы в чрут, -f для mkpfs, может ключ,чтоб модуль сразу pfsload. Есть еще идеи?
З.З.Ы Повтрю, что использовать можно не только для установки пакетов, можно вообще что угодно запускать. Например пробовал так
./chroot2pfs --command XFdrake
XFdrake - это мандривовский конфигуратор для иксов, если иксы не подняты (в чруте ж мы)  запускается в консольном режиме. Все сработало, конфиги создал и все они попали в модуль.
 



« Последнее редактирование: 10 Ноябрь 2018, 21:26:53 от betcher »

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Re: chroot2pfs
« Ответ #16 : 11 Ноябрь 2018, 20:08:58 »
Пробовал в пра. Если коротко то не сработало. Модуль создается, но в нем нет установленного пакета, есть только сам пакет в кэше pacman и служебные файлы от chroot2pfs. Мне кажется это какие то тонкости пакмана. Например при pacman -S palemoon в системе скачивается и устанавливается один пакет -  palemoon, а если эту же команду передать chroot2pfs, то требуется уже два пакета,  palemoon скачивается, а gtk2 нет, какая то ошибка. Попробуйте Вам с пакманом проще разобраться.
chroot2pfs -o palemoon.pfs --command pacman -S palemoon
« Последнее редактирование: 11 Ноябрь 2018, 20:24:26 от betcher »

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Re: chroot2pfs
« Ответ #17 : 11 Ноябрь 2018, 20:34:25 »
Пока не понятно где ошибка. Вот  и прошу помочь.  В магос пока косяков не вылезло, хотя ничего сложного и не пробовал устанавливать.

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5319
  • Репутация: +139/-1
Re: chroot2pfs
« Ответ #18 : 11 Ноябрь 2018, 21:08:29 »
Попробовал поставить mousepad, т.к. это маленький пакет с одной зависимостью.
sudo chroot2pfs -o mousepad.pfs --command pacman -S mousepad
Код
/mnt/.mousepad.pfs % find .
.
./var
./var/cache
./var/cache/pacman
./var/cache/pacman/pkg
./var/cache/pacman/pkg/mousepad-0.4.0-3-x86_64.pkg.tar.xz
./var/lib
./var/lib/chroot2pfs
./var/lib/chroot2pfs/mousepad
./var/lib/chroot2pfs/mousepad/cmdline
./var/lib/chroot2pfs/mousepad/date
./var/lib/pacman
./var/log
./var/log/pacman.log
Получается, что pacman качает пакет в /var/cache/pacman/pkg, но не распаковывает его в корень. И зависимость тоже не скачивает. Удивительно.

Если же через pacman -S
Код
sudo pacman -S mousepad
проверка конфликтов...

Пакеты (2) gtksourceview3-3.24.7-1  mousepad-0.4.0-3

Будет загружено:  0,95 MiB
Будет установлено:  8,58 MiB

:: Приступить к установке? [Y/n]
« Последнее редактирование: 11 Ноябрь 2018, 21:14:01 от krasnyh »

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5319
  • Репутация: +139/-1
Re: chroot2pfs
« Ответ #19 : 11 Ноябрь 2018, 21:39:16 »
 Вроде разобрался. Pacman не может получить доступ к зависимости и прерывается.
Цитата
Пакеты (2) gtksourceview3-3.24.7-1  mousepad-0.4.0-3

Будет загружено:  1,15 MiB
Будет установлено:  8,58 MiB

:: Приступить к установке? [Y/n]
:: Получение пакетов...
ошибка: не удалось получить файл 'gtksourceview3-3.24.7-1-x86_64.pkg.tar.xz' из archive.archlinux.org : The requested URL returned error: 404
предупреждение: не удалось получить некоторые файлы
 mousepad-0.4.0-3-x86_64      207,9 KiB  1106K/s 00:00 [############################]  17%
ошибка: не удалось завершить транзакцию (непредвиденная ошибка)
Обнаружены ошибки, пакеты не обновлены.
/mnt/bundles2/changes1
Parallel mksquashfs: Using 4 processors
Creating 4.0 filesystem on mousepad.pfs, block size 524288.
[=============================================================================|] 4/4 100%

Exportable Squashfs 4.0 filesystem, xz compressed, data block size 524288
   compressed data, compressed metadata, compressed fragments, compressed xattrs
   duplicates are removed
Filesystem size 214.43 Kbytes (0.21 Mbytes)
   88.32% of uncompressed filesystem size (242.80 Kbytes)
Inode table size 206 bytes (0.20 Kbytes)
   45.78% of uncompressed inode table size (450 bytes)
Directory table size 246 bytes (0.24 Kbytes)
   77.85% of uncompressed directory table size (316 bytes)
Number of duplicate files found 0
Number of inodes 14
Number of files 4
Number of fragments 1
Number of symbolic links  0
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 10
Number of ids (unique uids + gids) 1
Number of uids 1
   root (0)
Number of gids 1
   root (0)
/mnt/sda3/Soft/1811/mousepad.pfs
Из под chroot не может достучаться до archive.archlinux.org. А через sudo pacman2pfs mousepad замечательно ставится.

UPD.
gtksourceview3-3.24.7-1 и mousepad-0.4.0-3 берутся пакманом с одного адреса archive.archlinux.org/repos/2018/05/29/extra/os/x86_64/
 Только mousepad попадает в /var/cache....., а gtksourceview3 почему то нет.

UPD2.
Может что-то упущенно? Как в арче организован chroot:
wiki.archlinux.org/index.php/Chroot#Using_chroot

P.s. В /usr/local/bin лежит скрипт sfs - chroot.sh:
Код
#!/bin/sh 
#150618 sfs
[ ! "$1" ] && echo "Use $0 chroot-dir" && exit
[ -f "$1/etc/pacman.conf" ] && sed -i 's/CheckSpace/#CheckSpace/g' "$1/etc/pacman.conf"
chroot="$1"
[ "$1" ] || exit
mkdir -p "$chroot"/proc
mkdir -p "$chroot"/sys
mkdir -p "$chroot"/dev
 mount -t proc none "$chroot"/proc
 mount -t sysfs none "$chroot"/sys
 mount -o bind /dev "$chroot"/dev
 mount -o bind /dev/pts "$chroot"/dev/pts # important for pacman (for signature check)
# Now everything is prepared to chroot into your newly installed Arch environment
 chroot "$chroot" bash

umount "$chroot"/proc
umount "$chroot"/dev/pts
umount "$chroot"/dev
umount "$chroot"/sys
#umount "$chroot"/pr
[ -f "$1/etc/pacman.conf" ] && sed -i 's/#CheckSpace/CheckSpace/g' "$1/etc/pacman.conf"
« Последнее редактирование: 12 Ноябрь 2018, 01:34:01 от krasnyh »

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Re: chroot2pfs
« Ответ #20 : 12 Ноябрь 2018, 04:44:00 »
Модули подключаются в чрут в том порядке как отдает aufs-n, то есть не как в системе, а наоборот. Может в этом быть проблема для пра? Просто в  базовых модулях магос нет пересекающихся файлов и модули можно подключить в любом порядке, по этому этот момент пока упустил.
Думаю добавить в aufs-n ключики  --reverse и --hidetop.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: chroot2pfs
« Ответ #21 : 12 Ноябрь 2018, 09:34:04 »
Думаю надо делать скрипт дистронезависимым:
-a=pfs1.pfs;file2fs;папка - т.е. собираем слои в порядке перечисления
-cmd команда из подключенного модуля. Наиболее востребовано будет -cmd=bash
-scr внешний скрипт
Таким образом влезаем в консоль любого дистар и модифицируем что надо с возможностью сохранения
В пра очень актуальна сборка новых модулей с подключенными только базовыми
Под специфику ПРА и Магос - лучше сделать отдельные скрипты с использованием chroot2pfs

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Re: chroot2pfs
« Ответ #22 : 12 Ноябрь 2018, 10:02:36 »
Он и задуман дистронезавимимым.  -- command bash  думаю и сейчас сработает как вы хотите.  --script нужен для пересобираемых модулей. Указанный скрипт будет сохранен внутри модуля.
Могут ли странности с pacman быть связаны с тем, что модули пра подключены в чруте в обратном порядке?

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Re: chroot2pfs
« Ответ #23 : 12 Ноябрь 2018, 10:05:09 »
сейчас для подклюяаемых модулей есть маска, упрощенно так aufs-n  | grep $маска
Можно добавить и список, но он может быть весьма длинным. Удобно ли?
« Последнее редактирование: 12 Ноябрь 2018, 10:11:48 от betcher »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: chroot2pfs
« Ответ #24 : 12 Ноябрь 2018, 10:19:16 »
-a=pfs1.pfs;file2fs;папка - т.е. собираем слои в порядке перечисления
Надо ли усложнять со слоями...
Так идеально. Каждый сам слои определит. Не надо тут автоматики. Это уже в дистрозависимые скрипты...

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: chroot2pfs
« Ответ #25 : 12 Ноябрь 2018, 10:30:39 »
Из сегодняшнего гита (добавил ссылку в шапку) - работает
Не понятно, как управлять подключаемыми модулями...
И при повторном запуске заклинило ауфс

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Re: chroot2pfs
« Ответ #26 : 12 Ноябрь 2018, 11:14:24 »
Не соглашусь по выбору модулей. Маска во многих случаях проще, у вас, кстати, модулей подключается больше чем в магос даже. Опухнешь перечислять. А по маске -m /base   все базовые, -m .xzm, только xzm, -m ^[0-4]* все названия которых начинаются с 1,2,3,4  и т.д.
Можно просто оба варианта оставить.

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: chroot2pfs
« Ответ #27 : 12 Ноябрь 2018, 11:22:14 »
-m ^[0-4]*
Для пра вполне : -m ^0[0-7]*
Только если будет искать в /base - уже дистрозависимо
Для пра03 и 1801 - вообще достаточно только 001
Слои будут по цифрам? 0 ниже 1?

Оффлайн betcher

  • Модератор
  • Ветеран
  • ****
  • Сообщений: 3019
  • Репутация: +35/-0
  • Автор темы
    • MagOS linux
Re: chroot2pfs
« Ответ #28 : 12 Ноябрь 2018, 13:50:01 »
Тогда так:
- по умолчанию список как в aufs-n
- m --mask по маске
--modlist список;через;двоеточие
--flist /список/из/файла
норм?

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33965
  • Репутация: +231/-0
    • PuppyRus-A
Re: chroot2pfs
« Ответ #29 : 12 Ноябрь 2018, 13:54:21 »
Отлично. Как слоями упрвлять?
Маска - по алфавиту, списки по списку?