Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Скрипт, который с помощью overlayfs монтирует каталоги  (Прочитано 766973 раз)

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

Оффлайн Synoptic

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Сап, Ubuntu.
Нашел интересный топик.

https://forum.ubuntu.ru/index.php?topic=313590.0

Цитата: AlekseyUbuntu
Основная проблема безопасности- установка программ из непроверенных источников. Например, я ставлю небольшую утилиту с Github- а, для которой разумеется нет ограничивающих политик ни у AppArmor, ни у SELinux. В такой ситуации лучше поставить эту утилиту в отдельную ФС, чтобы она не смогла ничего покоцать в основной системе.
Насколько я понял есть возможность с помощью chroot создать еще один корень системы, доступ из которого в основную систему будет невозможен. Мне хочется:
1. Создать не "кастрированный" вариант ФС, а исходно полностью идентичный основному корню (чтобы были все программы и свистелки). Потом конечно, в каждую систему я буду ставить что- то своё, и они начнут отличаться друг от друга.
2. Иметь легкую возможность переключать GUI между двумя этими корнями туда и обратно (а не входить в новое окружение из командной строки с помощью chroot).
Такое возможно?

И не менее интересный ответ на него от пользователя andytux.

https://forum.ubuntu.ru/index.php?topic=302991.msg2373445#msg2373445

Цитата: andytux
В двух словах. Со смертью Унити стал думать чем заменить. Установил mini.iso 18.04, установил из ее репозитария иксы.
Далее написал скрипт, который в зависимости от выбранной сессии, с помощью overlayfs монтировал каталоги, в которых собственно и происходилм все изменения, не затрагивая основную систему и не влияя друг на друга.
Установленная таким образом сессия LXDE работала не хуже, установленной обычным образом.
Сессия Гном 2.30 запустилась. Но работала явно хуже, чем в родной 10.04.

Интересует скрипт, монтирующий overlayfs поверх корня, где происходят все изменения.
« Последнее редактирование: 31 Июля 2023, 11:41:15 от Synoptic »

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 7775
    • Просмотр профиля
Сначала, холодный душ.
Покрыть весь корень оверлеем у меня не получилось. Что собстенно сказано в приводимой цитате. Монтируются некоторые каталоги.
Скрипт есть, используется. Но, состояние весьма далекое от совершенства. Последние обновления привели к некоторой "деградации", никак не дойдут руки поправить.

Собственно, я ничего не изобрел. Так делает любая "живая система в режиме persistent", для этого ядру нужно передать пару параметров.
Может будет полезна эта тема. Хотя-бы для информации, откуда начать искать.
Ты ничего не сказал о своей системе. Какую из оверлейных файловых систем собираешься использовать? До 20.04 использовалась aufs. Я использовал overlayfs.
В 22.04 похоже произошли заметные изменения в "живой системе", все руки не доходят покопать. Например, если в каталоге casper несколько файлов squashfs, то все они смонтируются "бутербродом", примерно как в Porteus. В каждом слое могут быть свои программы.
Собственно, снап в некотором смысле делает тоже самое, только в отдельном месте.
« Последнее редактирование: 31 Июля 2023, 18:17:50 от andytux »

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7211
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Из таких песочниц можно выбраться как правило.

Оффлайн Synoptic

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Сначала, холодный душ.
Покрыть весь корень оверлеем у меня не получилось. Что собстенно сказано в приводимой цитате. Монтируются некоторые каталоги.
Скрипт есть, используется. Но, состояние весьма далекое от совершенства. Последние обновления привели к некоторой "деградации", никак не дойдут руки поправить.
Если это не Ваш коммерческий проект не затруднит ли Вас выложить этот скрипт? Я не силён в BASH но очень хочется повертеть в руках.
Собственно, я ничего не изобрел. Так делает любая "живая система в режиме persistent", для этого ядру нужно передать пару параметров.
Вот бы научить установленную ОС работать в "режиме persistent", ничего подобного я не нагуглил, задавал вопросы в теме по Debian, но дальше предложения держать ISO на HDD и с него загружаться в "режиме persistent" не продвинулся.


Может будет полезна эта тема. Хотя-бы для информации, откуда начать искать.
Спасибо, постаравюсь вникнуть. У меня болезненный процесс перехода с винды на линукс и разностные диски которые я с лёгкостью поднимал в винде, в т.ч. загружая систему с них, в линуксе реализованы через overlayfs насколько я правильно понял гугол. Я создал необходимые каталоги для оверлея UPPER, WORK и LOWER, установил приложение в UPPER, после через chroot подменил корень каталогом UPPER, но установленные таким образом приложения отказываются запускаться.

Ты ничего не сказал о своей системе. Какую из оверлейных файловых систем собираешься использовать? До 20.04 использовалась aufs. Я использовал overlayfs.
В 22.04 похоже произошли заметные изменения в "живой системе", все руки не доходят покопать.
У меня голая Ubuntu 20.04 а также Debian 11.6 исходя из того что я ничего руками не устанавливал то я пытался реализовать задуманное через overlayfs

Например, если в каталоге casper несколько файлов squashfs, то все они смонтируются "бутербродом", примерно как в Porteus.
В каждом слое могут быть свои программы.
Я могу переименовывать/перемещать файлы squashfs чтобы контролировать которые из них будут смонтированы а которые нет? Вот этот "бутерброд" как раз то что надо. Чтобы в каждом слое был отдельный стек приложений. Отчасти мне удалось реализовать это средствами стороннего разработчика, но бутерброда не получилось. Оно складывает изменения в отдельный раздел\диск. На этом я пока забуксовал, очень хочется бутерброд из файлов с изменениями как у Вас.

Из таких песочниц можно выбраться как правило.
Тут больше не про безопасность а про отказоустойчивость.
« Последнее редактирование: 01 Августа 2023, 18:01:24 от Synoptic »

Оффлайн RoDoN

  • Участник
  • *
  • Сообщений: 245
    • Просмотр профиля
работать в "режиме persistent"
отказоустойчивость
Посмотри эту тему, а вообще о работе с подключением программ в виде отдельных сквош-модулей и "неубиваемая" система - это лучше заглянуть на forum.puppyrus.org.
Lenovo G500 (i5-3340M, 12 Гб, Intel + Radeon HD 8570)
18.04 -> 20.04 -> 22.04 x64 XFCE

Оффлайн serg7777

  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
2. Иметь легкую возможность переключать GUI между двумя этими корнями туда и обратно (а не входить в новое окружение из командной строки с помощью chroot).
Такое возможно?
У вас нет подозрения что открытые на момент переключения файловые дескрипторы будут по прежнему указывать и работать с оригинальными файлами?

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 7775
    • Просмотр профиля
"...пользы для, завлекать его не зля, делать тонкие намеки невсурьез и издаля."

Цитировать
нет подозрения что открытые на момент переключения файловые дескрипторы...
Есть подозрение... Подозрение, что для этого оверлейные файловые системы и придумали.

Цитировать
У меня голая Ubuntu 20.04
Кстати, ты в прошлой своей теме обжегся с модулем "tpm". В 20.04 он и начал хулиганить.

Цитировать
Вот бы научить установленную ОС работать в "режиме persistent"
Запустить "как живую", можно. Я тебе уже давал ссылку, там чуть ниже.
Здесь. На первый взгляд совсем не о том, но весьма близко. Особенно обрати внимание на "Вариант 2".
Возможно там ответ, почему не получилось: "задавал вопросы в теме по Debian, но дальше предложения держать ISO на HDD..."(я бегло посмотрел).
Еще одна причина, почему может не включиться persistent.

Цитировать
Я могу переименовывать/перемещать файлы squashfs чтобы контролировать которые из них будут смонтированы а которые нет?
Да. Но в общем, этот вопрос требует изучения.

Цитировать
установил приложение в UPPER, после через chroot...
Слишком сложно. Один только chroot, практически синоним, что работать не будет.
Вообще, я использую overlayfs и в более простом варианте. Собственно, с этого все начиналось.
Программы, которые мне нужны в разных системах, находятся у меня "вне системы", на другом разделе. Например, Опера, в которой сейчас пишу.
На этом разделе каталог, аналог иерархии "local", там и находятся все программы. Этот раздел монтируется в систему как обычный раздел.
Этот каталог (uper) монтируется в системный каталог /usr/local (lower) с помощью overlayfs. Таким образом, мне доступно то, что было в /usr/local, и то, что есть в каталоге "вне системы". Если я делаю там изменения, то они оказываются "вне системы".


Пользователь добавил сообщение 02 Августа 2023, 19:21:18:
Начал с простого. Запустил с флешки "живую" Ubuntu 10.04 в режиме "persistent".

На скриншоте. В левой панели. Каталог на флешке с этой убунтой, файл casper-rw, использующийся в данном случае в качестве персистент-хранилища.
В правой панели. Смонтированный файл casper-rw. Видно, что система насохраняла в него. В данном случае его монтировала оверлейная файловая система aufs.
Скриншот, который я сделал в этой системе, тоже сохранен в casper-rw. Достаем его.

На скриншоте. Видно, с какими параметрами запускалась система. В частности парамерты: persistent, persistent-path.
И /proc/mounts.
/dev/sda1 - флешка.
/dev/loop - сама система из squash, смонтирована как нижний слой.
aufs / aufs - похоже это и есть верхний слой, хоть и ничего не намекает на файл casper-rw.


Пользователь добавил сообщение 03 Августа 2023, 08:42:56:
Та же Ubuntu 10.04. Но запущена с раздела жесткого диска, без режима "персистент".

На скриншоте. Оповещение, что при загрузке система обнаружила "вне системы" каталог и смонтировала его в /usr/local с помощью overlayfs. После этого был запущен mc, находящийся на этом оверлее. В самой этой системе нет mc.

На скриншоте. Опера запущена с этого-же оверлея. В левой панели mc. Раздел, где все находится смонтирован в каталог /cdrom. Через эту точку монтирования защел в этот каталог.
В правой панели mc. Защел в этот каталог через "оверлейную точку монтирования".
Содержимое cmdline:
0?ubuntu@ubuntu:~$ cat /proc/cmdline
BOOT_IMAGE=/opt/ub10/casper/vmlinuz4 ignore_uuid live-media-path=/opt/ub10/casper --version=02gn2pm1gc1 4 i915.modeset=1 boot=casper cdrom-detect/try-usb=true noprompt quiet --
Видно, что нет параметров, ответственных за "персистент".
Содержимое mounts:
0?ubuntu@ubuntu:~$ cat /proc/mounts
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
udev /dev devtmpfs rw,nosuid,relatime,size=2939328k,nr_inodes=734832,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,nosuid,noexec,relatime,size=592064k,mode=755 0 0
/dev/mmcblk1p3 /cdrom ext4 rw,noatime,data=ordered 0 0
aufs / aufs rw,noatime,si=54177eddf9662de7 0 0
none /sys/fs/cgroup tmpfs rw,relatime,size=4k,mode=755 0 0
none /sys/fs/fuse/connections fusectl rw,relatime 0 0
none /sys/kernel/debug debugfs rw,relatime 0 0
none /sys/kernel/security securityfs rw,relatime 0 0
none /sys/firmware/efi/efivars efivarfs rw,relatime 0 0
tmpfs /tmp tmpfs rw,nosuid,nodev,relatime 0 0
none /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0
none /run/shm tmpfs rw,nosuid,nodev,relatime 0 0
none /run/user tmpfs rw,nosuid,nodev,noexec,relatime,size=102400k,mode=755 0 0
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,nosuid,nodev,noexec,relatime 0 0
gvfs-fuse-daemon /home/ubuntu/.gvfs fuse.gvfs-fuse-daemon rw,nosuid,nodev,relatime,user_id=999,group_id=999 0 0
/dev/mmcblk1p1 /media/SO1201 vfat rw,nosuid,nodev,relatime,uid=999,gid=999,fmask=0022,dmask=0077,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,flush,errors=remount-ro 0 0
/dev/mmcblk1p2 /media/so1202 ext4 rw,nosuid,nodev,relatime,data=ordered 0 0
none /usr/local overlay rw,relatime,lowerdir=/usr/local,upperdir=/cdrom/opt/avlocal,workdir=/cdrom/opt/avlocalwork 0 0
/dev/mmcblk1p3 - здесь находится "живая система", здесь находится каталог, который монтируется оверлейной ФС.
aufs / aufs - монтирование корня системы, никакого отличия от предыдущего варианта. ?..
none /usr/local - тот самый оверлей.
Содержимое файла /usr/share/xsessions/avnsession.desktop(именно эту сессию запускал):
[Desktop Entry]
Type=Application
Name=avnSession
Comment=Args session from cmdline
#Exec=avnsession --util=avlx --msg_svc=log --version=3 --src=/opt/avlx --dest=/opt/avnup --
Exec=avnsession --cmdline --log --
TryExec=avnsession
DesktopNames=ubuntu:GNOME:LXDE:XFCE
X-GDM-SessionRegisters=true
X-Ubuntu-Gettext-Domain=gnome-session-42
Закомментированная строка "#Exec=..." - это как-раз запуск с "оверлейным монтированием каталогов".
--src - монтирует как lowerdir.
--dest - монтирует как upperdir.
В данном случае, запускает строкой, которая ниже.
--cmdline - говорит брать параметры из /proc/cmdline (берет параметр --version=02gn2pm1gc1, "gn2" - это как-раз для него).
Скрипт здесь.
« Последнее редактирование: 04 Августа 2023, 15:06:46 от andytux »

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 7775
    • Просмотр профиля
 Еще один вариант применения оверлея, который просто сам напрашивается.
Для любителей "отдельного хоме", монтировать его с помощью оверлея. Сам этот вариант не практиковал.

Традиционный вариант монтирования хоме-раздела.
На форуме немало тем...
Вдруг не смонтировался - система не загрузилась.
Вдруг обнаружилось, что что-то пропало. Оказалось, "отдельный хоме" не смонтировался, но система загрузилась и этого никто не заметил. Нечто было создано-сохранено в "системном хоме". Следующую загрузку, "отдельный хоме" смонтировался, но теперь недоступно то, что сохранено на "системном хоме". Чтобы добраться до этого, нужно не монтировать "отдельный хоме" или "извне".

Монтирование хоме оверлейной файловой системой.
В системе есть свой "системный хоме". Поэтому она загрузится всегда, даже если "оверлей хоме" не смонтируется.
Содержимое "системного хоме" доступно при смонтированном "оверлей хоме".

Оффлайн Synoptic

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
"...пользы для, завлекать его не зля, делать тонкие намеки невсурьез и издаля."

Цитировать
нет подозрения что открытые на момент переключения файловые дескрипторы...
Есть подозрение... Подозрение, что для этого оверлейные файловые системы и придумали.

Цитировать
У меня голая Ubuntu 20.04
Кстати, ты в прошлой своей теме обжегся с модулем "tpm". В 20.04 он и начал хулиганить.

Цитировать
Вот бы научить установленную ОС работать в "режиме persistent"
Запустить "как живую", можно. Я тебе уже давал ссылку, там чуть ниже.
Здесь. На первый взгляд совсем не о том, но весьма близко. Особенно обрати внимание на "Вариант 2".
Возможно там ответ, почему не получилось: "задавал вопросы в теме по Debian, но дальше предложения держать ISO на HDD..."(я бегло посмотрел).
Еще одна причина, почему может не включиться persistent.

Цитировать
Я могу переименовывать/перемещать файлы squashfs чтобы контролировать которые из них будут смонтированы а которые нет?
Да. Но в общем, этот вопрос требует изучения.

Цитировать
установил приложение в UPPER, после через chroot...
Слишком сложно. Один только chroot, практически синоним, что работать не будет.
Вообще, я использую overlayfs и в более простом варианте. Собственно, с этого все начиналось.
Программы, которые мне нужны в разных системах, находятся у меня "вне системы", на другом разделе. Например, Опера, в которой сейчас пишу.
На этом разделе каталог, аналог иерархии "local", там и находятся все программы. Этот раздел монтируется в систему как обычный раздел.
Этот каталог (uper) монтируется в системный каталог /usr/local (lower) с помощью overlayfs. Таким образом, мне доступно то, что было в /usr/local, и то, что есть в каталоге "вне системы". Если я делаю там изменения, то они оказываются "вне системы".


Пользователь добавил сообщение 02 Августа 2023, 19:21:18:
Начал с простого. Запустил с флешки "живую" Ubuntu 10.04 в режиме "persistent".

На скриншоте. В левой панели. Каталог на флешке с этой убунтой, файл casper-rw, использующийся в данном случае в качестве персистент-хранилища.
В правой панели. Смонтированный файл casper-rw. Видно, что система насохраняла в него. В данном случае его монтировала оверлейная файловая система aufs.
Скриншот, который я сделал в этой системе, тоже сохранен в casper-rw. Достаем его.

На скриншоте. Видно, с какими параметрами запускалась система. В частности парамерты: persistent, persistent-path.
И /proc/mounts.
/dev/sda1 - флешка.
/dev/loop - сама система из squash, смонтирована как нижний слой.
aufs / aufs - похоже это и есть верхний слой, хоть и ничего не намекает на файл casper-rw.


Пользователь добавил сообщение 03 Августа 2023, 08:42:56:
Та же Ubuntu 10.04. Но запущена с раздела жесткого диска, без режима "персистент".

На скриншоте. Оповещение, что при загрузке система обнаружила "вне системы" каталог и смонтировала его в /usr/local с помощью overlayfs. После этого был запущен mc, находящийся на этом оверлее. В самой этой системе нет mc.

На скриншоте. Опера запущена с этого-же оверлея. В левой панели mc. Раздел, где все находится смонтирован в каталог /cdrom. Через эту точку монтирования защел в этот каталог.
В правой панели mc. Защел в этот каталог через "оверлейную точку монтирования".
Содержимое cmdline:
0?ubuntu@ubuntu:~$ cat /proc/cmdline
BOOT_IMAGE=/opt/ub10/casper/vmlinuz4 ignore_uuid live-media-path=/opt/ub10/casper --version=02gn2pm1gc1 4 i915.modeset=1 boot=casper cdrom-detect/try-usb=true noprompt quiet --
Видно, что нет параметров, ответственных за "персистент".
Содержимое mounts:
0?ubuntu@ubuntu:~$ cat /proc/mounts
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
udev /dev devtmpfs rw,nosuid,relatime,size=2939328k,nr_inodes=734832,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,nosuid,noexec,relatime,size=592064k,mode=755 0 0
/dev/mmcblk1p3 /cdrom ext4 rw,noatime,data=ordered 0 0
aufs / aufs rw,noatime,si=54177eddf9662de7 0 0
none /sys/fs/cgroup tmpfs rw,relatime,size=4k,mode=755 0 0
none /sys/fs/fuse/connections fusectl rw,relatime 0 0
none /sys/kernel/debug debugfs rw,relatime 0 0
none /sys/kernel/security securityfs rw,relatime 0 0
none /sys/firmware/efi/efivars efivarfs rw,relatime 0 0
tmpfs /tmp tmpfs rw,nosuid,nodev,relatime 0 0
none /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0
none /run/shm tmpfs rw,nosuid,nodev,relatime 0 0
none /run/user tmpfs rw,nosuid,nodev,noexec,relatime,size=102400k,mode=755 0 0
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,nosuid,nodev,noexec,relatime 0 0
gvfs-fuse-daemon /home/ubuntu/.gvfs fuse.gvfs-fuse-daemon rw,nosuid,nodev,relatime,user_id=999,group_id=999 0 0
/dev/mmcblk1p1 /media/SO1201 vfat rw,nosuid,nodev,relatime,uid=999,gid=999,fmask=0022,dmask=0077,codepage=437,iocharset=iso8859-1,shortname=mixed,utf8,flush,errors=remount-ro 0 0
/dev/mmcblk1p2 /media/so1202 ext4 rw,nosuid,nodev,relatime,data=ordered 0 0
none /usr/local overlay rw,relatime,lowerdir=/usr/local,upperdir=/cdrom/opt/avlocal,workdir=/cdrom/opt/avlocalwork 0 0
/dev/mmcblk1p3 - здесь находится "живая система", здесь находится каталог, который монтируется оверлейной ФС.
aufs / aufs - монтирование корня системы, никакого отличия от предыдущего варианта. ?..
none /usr/local - тот самый оверлей.
Содержимое файла /usr/share/xsessions/avnsession.desktop(именно эту сессию запускал):
[Desktop Entry]
Type=Application
Name=avnSession
Comment=Args session from cmdline
#Exec=avnsession --util=avlx --msg_svc=log --version=3 --src=/opt/avlx --dest=/opt/avnup --
Exec=avnsession --cmdline --log --
TryExec=avnsession
DesktopNames=ubuntu:GNOME:LXDE:XFCE
X-GDM-SessionRegisters=true
X-Ubuntu-Gettext-Domain=gnome-session-42
Закомментированная строка "#Exec=..." - это как-раз запуск с "оверлейным монтированием каталогов".
--src - монтирует как lowerdir.
--dest - монтирует как upperdir.
В данном случае, запускает строкой, которая ниже.
--cmdline - говорит брать параметры из /proc/cmdline (берет параметр --version=02gn2pm1gc1, "gn2" - это как-раз для него).
Скрипт здесь.

Не затруднит ли Вас прислать гайд как юзать этот скрипт? Или максимально общо поясните куда класть файл avnsession ? Мои попытки подступиться и гуглить ни к чему не привели.

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 7775
    • Просмотр профиля
Цитировать
...куда класть файл avnsession ?
Любой каталог, в котором разрешено исполнение. Конкретно у меня в /usr/local/bin.

Кстати, в последнее время я вернулся к этом у вопросу. Есть некоторые изменения. Но движется медленно.

Оффлайн Synoptic

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
Любой каталог, в котором разрешено исполнение. Конкретно у меня в /usr/local/bin.



ЧЯДНТ?

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 7775
    • Просмотр профиля
Слишком торопишься.
 Запусти скрипт без параметров, он выведет краткую справку. Уже здесь можно заметить, что для гнома используется другое значение параметра "--util".
Загляни в сам скрипт. В самом начале, в блоке "## BEGIN var - END var ##", после строки "posible version", приведены возможные значения переменной "version".
Значение "avlx" для запуска сессии LXDE, да ещё и с моим конкретным профилем.
В десктоп-файле гнома 22.04 такая строка запуска:
avnsession --version=22gn4 --log --При запуске создал такой лог:
$ cat /tmp/avnotify.log
Wed Sep 13 12:52:25 +07 2023\n22gn4.sessionex.avnsession.dbg2:
[0] gnome-session [][sessionex]/cdrom/opt/avlow[/cdrom/opt/avnup]
В котором:
22gn4 - значение переменной "version", получено из параметра "--version=22gn4"
sessionex - значение переменной "ex", соответствует исполняемой функции
avnsession - название скрипта, который исполняется
dbg2 - идентификатор контрольной точки, по нему можешь в скрипте найти это место и посмотреть, как формируется "контрольная информация"
gnome-session - значение переменной "util", получено от обработки переменной "version"
/cdrom/opt/avlow - значение переменной "src", задает нижний слой монтирования, определена в начале скрипта
/cdrom/opt/avnup - значение переменной "dest", задает верхний слой монтирования, определена в начале скрипта
Но в моем случает последние две переменные не используются. В твоем случае, по значению переменной "key" видно, что используется функция "mountoverlayex", которая и должна монтировать оверлеи.
Пока что, это единственный работающий вариант запуска. Все остальные варианты требуют проверки.
Если параметр "--version" заканчивается ".dbg", то включится режим отладки, исполнения команды не будет, только "отладочная информация".
Например:
$ avnsession --version=22gn4.dbg --log --
22gn4.dbg.sessionex.avnsession.dbg1: [0] gnome-session [][]/cdrom/opt/avlow[/cdrom/opt/avnup]
22gn4.dbg.stex.avnotify.dbg1: 1000 linux[22gn4.dbg.sessionex: [/usr/local/bin/avnsession 254 --version=22gn4.dbg --log -- 4] gnome-session  /cdrom/opt/avlow /cdrom/opt/avnup] /bin/echo [][]

22gn4.dbg.stex: [/usr/local/bin/avnotify 254 --src=gnome-session --icon=linux --version=22gn4.dbg --std=22gn4.dbg.sessionex: [/usr/local/bin/avnsession 254 --version=22gn4.dbg --log -- 4] gnome-session  /cdrom/opt/avlow /cdrom/opt/avnup -- 6] /bin/echo    gnome-session
22gn4.dbg.sessionex: [/usr/local/bin/avnsession 254 --version=22gn4.dbg --log -- 4] gnome-session  /cdrom/opt/avlow /cdrom/opt/avnup
Первая строка с контрольной информацией - выводит "контрольная точка dbg1". Вторая строка - выводит "режим отладки".
Вообще, запуск gnome-session в работающей сессии плохо заканчивается.


Пользователь добавил сообщение 13 Сентября 2023, 14:25:25:
Продолжаем разговор.
Еще один лог:
Wed Sep 13 17:32:08 2023\n02gn2pm1gc1.sessionex.avnsession.dbg3:
/etc[2
Warning! /cdrom/opt/avlow/etc not mounted Unknown filesystem] gnome-session [ -o lowerdir=/etc][]/cdrom/opt/avlow[/cdrom/opt/avnup]
Wed Sep 13 17:32:08 2023\n02gn2pm1gc1.sessionex.avnsession.dbg2:
[02gn2pm1gc1.sessionex.avnsession.dbg3:
/etc[2
Warning! /cdrom/opt/avlow/etc not mounted Unknown filesystem] gnome-session [ -o lowerdir=/etc][]/cdrom/opt/avlow[/cdrom/opt/avnup]] gnome-session [][]/cdrom/opt/avlow[/cdrom/opt/avnup]
Это загрузка "живой Ubuntu 10.04". В основном работаю над этим вариантом.
"02gn2pm1gc1" - значение переменной "version", задается параметром ядра в конфиге груба. Для загрузки сессии отсюда берется "gn2", что означает "гном2 с оверлеем".
Как видно, выдает предупреждение, что не смог смонтировать. Функция еще нерабочая.
 Теперь немного о расположении компонентов.
Все находится на третьем разделе диска.
"/opt/ub10" - здесь находится "живая Ubuntu 10.04".
"/opt/avlow" - каталог, подкаталоги из которого монтируются как нижний слой оверлея.
"/opt/avnup" - каталог, подкаталоги из которого монтируются как верхний слой оверлея.
Подразумевается, что эти структуры должны существовать. Хотя, в качестве нижнего слоя может быть существующий каталог корня системы.
При загрузке "живой системы", каталог, с которого она была загружена, монтируется в каталог "/cdrom". Поэтому, в запущенной системе, полный путь к каталогам "источникам оверлеев" получается: /cdrom/opt/avlow, /cdrom/opt/avnup.
Установленная система находится на втором разделе диска. В fstab третий раздел монтируется в "/cdrom", для единообразия.
 Собственно, загрузка сессии и монтирование оверлея между собой никак не связаны.  Поэтому, в экспериментах можно только монтировать, не затрагивая сессию.
C таким вспомогательным инструментом пока и работаю.
« Последнее редактирование: 13 Сентября 2023, 14:33:05 от andytux »

Оффлайн Synoptic

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
По всей видимости я по прежнему упускаю какой-то важный параметр. Заглянул в скрипт перепробовал почти все переменные. Какую мне предоставить инфу о системе чтобы и у меня заработало?


Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 7775
    • Просмотр профиля
Обновил скрипт. Залил новую версию. Обновил описание.
Теперь мало-мальски что-то работает.

На скриншоте. В правом окне терминала видно, что система уже насоздавала файлов в /cdrom/opt/avnup/var/lib.
Обрати внимание, значение параметров "--src" и "--dest" поменял местами.

Оффлайн Synoptic

  • Автор темы
  • Новичок
  • *
  • Сообщений: 17
    • Просмотр профиля
У меня стоит голая Ubuntu 22.04.3 LTS в файл "/etc/grub.d/40_custom" я добавил строку:
avnsession --util=gnom* --version=22gn4 --src=/opt/avlx --dest=/opt/avnup --
затем sudo update-grub
Граб почему то грузит систему без возможности скормить команду ядру на этапе загрузки как было у меня на старой убунте при нажатии F6. Каталоги "/opt/avlow" "/opt/avlx" "/opt/avlx" и "/opt/avnup" созданы. Сам скрипт положил в "/usr/local/bin/avnsession и скопировал в корень.


 

Страница сгенерирована за 0.124 секунд. Запросов: 25.