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


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: MKUSB и Ubuntu 24.04  (Прочитано 371324 раз)

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

Оффлайн Domitory

  • Автор темы
  • Активист
  • *
  • Сообщений: 769
    • Просмотр профиля
MKUSB и Ubuntu 24.04
« : 21 Июля 2024, 00:17:53 »
Добрались руки до изучения программы создания загрузочных флешек MKUSB. Привлекла в этой программе якобы имеющаяся возможность создания флешки LiveUSB с возможностью сохранения изменений в системе таких как установка софта, настроек и файлов. Делал всё по инструкции описанной тут http://forum.matuntu.info/index.php?topic=777.0 но в результате получил обычную загрузочную флешку, а думал что получится аналог Knoppix с его реальными возможностями сохранения изменений в системе.
Хотя результат меня совсем не удивил, как то все очень просто преподносится с такой не простой задачей.
Есть вообще возможность создание подобной системы для Ubuntu? Или может есть готовый ISO образ? Я так понимаю надо в ISO образе отредактировать файл fstab прописав в нём OverlayFS. Как сделать правильно это не понимаю пока. В принципе как редактировать ISO знаю. Наверняка уже кто-то грамотный это сделал и не стоит изобретать велосипед.
P.S. Больше ради интереса и понимания работы подобных Live систем.
« Последнее редактирование: 21 Июля 2024, 01:00:51 от Domitory »

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 8047
    • Просмотр профиля
Re: MKUSB и Ubuntu 24.04
« Ответ #1 : 21 Июля 2024, 04:34:24 »
Есть вообще возможность создание подобной системы для Ubuntu? Или может есть готовый ISO образ?
Есть и была. Любой образ *бунту.
Из практики. Когда ещё у меня только появилась первая флешка, создал загрузочную флешку с режимом "persistent". Создавал стандартной гномовской программой создания загрузочных флешек, специально чтобы узнать, как это реализуется. Это был единственный раз, когда я использовал "писалку флешек".
А Ventoy разве не может загружать в этом режиме?..

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 8047
    • Просмотр профиля
Re: MKUSB и Ubuntu 24.04
« Ответ #2 : 04 Августа 2024, 13:44:42 »
Кто-то просматривал, всплыла такая тема: "Настраиваем под себя live-flash с (X)ubuntu 8.04"
Как уже много раз повторял, не надо далеко ходить, всё уже давно есть под носом, бери и пользуйся.

Оффлайн vladimirzhuravlev

  • Старожил
  • *
  • Сообщений: 1954
    • Просмотр профиля
Re: MKUSB и Ubuntu 24.04
« Ответ #3 : 04 Августа 2024, 21:46:29 »
Как вариант некоторые дистрибутивы предлагают "persistent".

Оффлайн Domitory

  • Автор темы
  • Активист
  • *
  • Сообщений: 769
    • Просмотр профиля
Re: MKUSB и Ubuntu 24.04
« Ответ #4 : 04 Августа 2024, 22:12:02 »
Кто-то просматривал, всплыла такая тема: "Настраиваем под себя live-flash с (X)ubuntu 8.04"

К сожалению толку с этой ссылки уже никакого. Нет таких ресурсов.

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 8047
    • Просмотр профиля
Re: MKUSB и Ubuntu 24.04
« Ответ #5 : 06 Августа 2024, 03:55:28 »
Каких ресурсов нет? Монтировать, копировать, текстовый редактор? Больше там ничего не используется.
Было там одно досадное ограничение.
Почти неизменно дошло до 20.04. В 20.04 имя файла "casper-rw" изменили на  "writable".
К 24.04 ещё добавились изменения, но основное не изменилось, параметр ядра при загрузке и имя-метка файла-раздела.
На примере 24.04, "вишенка на торте".
« Последнее редактирование: 06 Августа 2024, 07:08:07 от andytux »

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 8047
    • Просмотр профиля
Re: MKUSB и Ubuntu 24.04
« Ответ #6 : 23 Августа 2024, 05:46:43 »
"Только надо пользы для. Завлекать его не зля - Делать тонкие намёки. Невсурьёз и издаля."

Вижу, тема вызывает сумасшедший интерес.
Продолжаем разговор.
Вопрос действительно непростой. Поэтому, без "супер-мега-программ", все-равно никто пользоваться ими не умеет. Только монтирование, копирование, текстовый редактор.

 Подготовка.
Диски:
ubuntu@ubuntu:~$ sudo fdisk -l
Disk /dev/sde: 477 GiB, 512110190592 bytes, 1000215216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x066247b3

Device     Boot     Start        End   Sectors   Size Id Type
/dev/sde1            2048   17956863  17954816   8.6G  b W95 FAT32
/dev/sde2        17958912   67307519  49348608  23.5G 83 Linux
/dev/sde3        67307520  795418623 728111104 347.2G 83 Linux
/dev/sde4       795418624 1000214527 204795904  97.7G  5 Extended
/dev/sde5       795420672 1000214527 204793856  97.7G 83 Linux
Диск подключен всего один. Физически, это nvme, подключенный через усб-переходник. На данном компьютере сразу получает имя sde.
sde1 - файловая система FAT32, может выступать в роли ESP. На разделе sde1 установлены загрузчики: грубПС и грубЕФИ. Поэтому, можно грузиться на любом компьютере, в любом режиме. Загрузчики не привязаны ни к какой системе.
В файл grub.cfg добавляю код:
function avboot {
  if [ "${msg}" = '0' ]; then msg=''; fi
  if [ "${msg}" = '1' ]; then msg='Non EFI-mode!'; fi
  if [ "${msg}" = '2' ]; then msg='Non CSM-mode!'; fi
  if [ "${msg}" = '3' ]; then msg="Load $iso_path from $root"; fi
  if [ "${root}" = 'x' ]; then if [ -z "${msg}" ]; then msg="$src not exist!"; fi; else if [ -z "${msg}" ]; then msg="Load $src from $root"; fi; fi
  if [ -n "${1}" ]; then echo "$msg"; sleep -v ${1}; fi
  if [ -n "${avload}" ]; then ${avload} ${src}; if [ -n "${avinit}" ]; then ${avinit}; fi; fi
}

color_normal=light-green/black; menu_color_normal=light-green/black; menu_color_highlight=light-green/blue
default='Search file|LABEL|UUID|DEV'; fallback='*buntu [so1202]'; timeout=2; timeout_style=menu
 if [ -e '/boot/grub/x86_64-efi/tpm.mod' ]; then rmmod tpm; fi
 if [ -e '/boot/grub/avnfont.pf2' ]
  then if loadfont '/boot/grub/avnfont.pf2'
  then set gfxmode=auto
insmod efi_gop; insmod efi_uga; insmod gfxterm
terminal_output gfxterm
fi
 fi

  submenu '*buntu live persistent' {
src='/opt'; key="showmounts boot=casper cdrom-detect/try-usb=true noprompt quiet --"
iso_path="${src}/ub.squashfs"
#iso_path="${src}/ubuntu-10.04.4-desktop-amd64.iso"
iso_path="${src}/lubuntu-18.04.5-desktop-amd64.iso"
#version='4'
#insmod regexp; insmod part_gpt
root='x'; search --no-floppy --set --file "${iso_path}"
if [ "${root}" = 'x' ]
  then if regexp "u-18" "${iso_path}"; then src="${src}/ub18"; fi
if regexp "u-16" "${iso_path}"; then src="${src}/ub16"; fi
if regexp "u-10" "${iso_path}"; then src="${src}/ub10"; fi
search --no-floppy --set --file "${src}/casper/vmlinuz${version}"
if [ "${root}" = 'x' ]
  then src='*buntu live'
  else if regexp "buntu-2" "${iso_path}"
  then if [ -e "${src}/writable" ]; then key="persistent persistent-path=${src} ${key}"; fi
  else if [ -e "${src}/casper-rw" ]; then key="persistent persistent-path=${src} ${key}"; fi
fi
src="${src}/casper"; key="ignore_uuid live-media-path=${src} ${key}"
if regexp "u-2" "${iso_path}"; then key="--version=02pm1dc1 ${key}"; fi
if regexp "u-18" "${iso_path}"; then key="--version=02lx3pm1dc1 ${key}"; fi
if regexp "u-16" "${iso_path}"; then key="--version=02pm1dc1 ${key}"; fi
if regexp "u-10" "${iso_path}"; then key="--version=02gn1pm1gc1 i915.modeset=1 ${key}"; fi
if [ -e "${src}/initrd${version}" ]; then avinit="initrd ${src}/initrd${version}"; else avinit="initrd ${src}/initrd.lz"; fi
avload='linux'; src="${src}/vmlinuz${version} ${key}"
fi
  else msg="Load $iso_path from $root"
export iso_path; loopback loop ${iso_path}
root=(loop)
if [ -e "/boot/grub/loopback.cfg" ]
  then avload='configfile'; src='/boot/grub/loopback.cfg'
 # loopback --delete loop
  else if regexp ".iso" "${iso_path}"
  then key="iso-scan/filename=${iso_path} ${key}"; src='/casper'
  else key="ignore_uuid live-media-path=${src} ${key}"; src="${src}/casper"
fi
if regexp "u[bk-mx]" "${iso_path}"; then key="--version=02pm1 ${key}"; fi
if regexp "u-2" "${iso_path}"; then key="--version=02xf1pm1 ${key}"; fi
if regexp "u-10" "${iso_path}"; then key="i915.modeset=1 elevator=noop ${key}"; fi
if [ -e "${src}/initrd${version}" ]; then avinit="initrd ${src}/initrd${version}"; else avinit="initrd ${src}/initrd.lz"; fi
avload='linux'; src="${src}/vmlinuz${version} ${key}"
fi
fi
 # if [ "${root}" = 'x' ]; then msg="$src not exist!"; else if [ -z "${msg}" ]; then msg="Load $src from $root"; fi; fi
 # echo "$msg"; sleep -v 4
 # if [ -n "${avload}" ]; then ${avload} ${src}; if [ -n "${avinit}" ]; then ${avinit}; fi; fi
avboot 2
  }
Часть кода до строки "submenu..." только для удобства, можно без неё.
На раздел sde1 копирую исо-образ lubuntu-18.04.5-desktop-amd64.iso.  Пробую загрузиться.

На скриншоте. Lubuntu, загруженная из исо-образа. В системе ещё ничего нет. Отсутствие русского языка мешает продолжению описания из неё.
Слева окно MC. Ещё один способ, использовать то, чего в системе нет. Он находится на разделе sde3, который смонтирован и из него запущен MC.
Описание.
iso_path="${src}/lubuntu-18.04.5-desktop-amd64.iso"
...
root='x'; search --no-floppy --set --file "${iso_path}"
Загрузчик ищет указанный образ. Образ может быть на любом диске-разделе. Если нашёл, то...
  else msg="Load $iso_path from $root"
export iso_path; loopback loop ${iso_path}
root=(loop)
if [ -e "/boot/grub/loopback.cfg" ]
  then avload='configfile'; src='/boot/grub/loopback.cfg'
...монтирует образ и проверяет наличие в нём файла "loopback.cfg". Если файл существует, то выводит меню, реализованное в этом файле (техника loopback-bootable, для упрощения загрузки из исо-образа).


Пользователь добавил сообщение 23 Августа 2024, 11:23:37:
  Загрузка ubuntu 10.04.4 persistent.
Немного изменяю пункт меню:
...
iso_path="buntu-10.04.4-desktop-amd64.iso"
#iso_path="${src}/lubuntu-18.04.5-desktop-amd64.iso"
version='4'
root='x'; search --no-floppy --set --file "${iso_path}"
if [ "${root}" = 'x' ]
  then if regexp "u-18" "${iso_path}"; then src="${src}/ub18"; fi
if regexp "u-10" "${iso_path}"; then src="${src}/ub11"; fi
...
Описание.  Если не найдёт исо-образ (не найдёт, потому что такого в принципе не существует), то пробует загрузиться "из набора файлов".
Имя образа используется для указания, где искать "набор файлов". В данном случае, в "/opt/ub11", на любом диске-разделе.
Если больше нравится, то можно создать отдельный пункт меню.
На разделе sde1 создаю каталог /opt/ub11/casper, для "набора файлов ubuntu 10.04".
Из исо-образа 10.04 копирую в этот каталог ядро и инитрд. Я знаю, что на данной железке 10.04 не загрузится. Поэтому, из исо-образа 16.04.7 копирую сюда ядро и инитрд версии 4.15.*, под именами vmlinuz4, initrd4 соответственно. Из исо-образа 10.04, распаковываю куда-нибудь файл filesystem.squashfs (у меня он давно распакован  на раздел sde3, в каталог /opt/ub10/casper/ub10.dir). Добавляю туда модули для ядра 4.15.112-generic из исо-образа 16.04.7.

Создаю файл *.squashfs, с изменениями (способ внести и сохранить изменения). Создаю файл casper-rw (в режиме persistent в нём сохраняются все изменения). Пункт "user menu" построен так, что если указатель стоит на "casper", то создаётся casper-rw, в остальных случаях создаётся swap-файл.

На скриншоте. В окне MC, только что созданный файл casper-rw,  В нём будут сохраняться все изменения в "ubuntu 10.04 live persistent". Перезагружаюсь.
Описание задействованного кода конфига груба.
root='x'; search --no-floppy --set --file "${iso_path}"
if [ "${root}" = 'x' ]
  then if regexp "u-18" "${iso_path}"; then src="${src}/ub18"; fi
if regexp "u-16" "${iso_path}"; then src="${src}/ub16"; fi
if regexp "u-10" "${iso_path}"; then src="${src}/ub10"; fi
Если не нашел образ, то переходит к поиску "набора файлов". Для некоторых версий, каталог поиска задаётся в зависимости от имени исо-образа.
search --no-floppy --set --file "${src}/casper/vmlinuz${version}"
if [ "${root}" = 'x' ]
Если находит заданное название ядра то...
  else if regexp "buntu-2" "${iso_path}"
  then if [ -e "${src}/writable" ]; then key="persistent persistent-path=${src} ${key}"; fi
  else if [ -e "${src}/casper-rw" ]; then key="persistent persistent-path=${src} ${key}"; fi
fi
...проверяет наличие персистент-файла, если файл существует, то добавляет параметры ядра, для загрузки в режиме "persistent".

На скриншоте. Загружена ubuntu 10.04 (справа вверху, окно "System Monitor"). Скажу больше. Это система "франкенштейн". Сама система 32битная, ядро 64битное.
Слева вверху. Окно MC, в данном случае, это последняя 32битная версия MC, эта версия в принципе не может быть установлена на 10.04. Как и в предыдущем случае с 18.04, она "вне системы", находится на раздела sde3.
Окно справа внизу. Видно, что система запущена с параметрами "persistent persistent-path=...". По строке  "/dev/loop0..." видно, что в каталог /cow смонтирована файловая система ext2, это и есть файл casper-rw.
Слева вверху. Правая панель MC. Каталог /cow/uper - это то самое место, куда записываются все изменения, видно, что уже записалось.
Как уже говорил, "persistent" действует со времён царя гороха. И для этого не нужны сверхмудрые программы. Файл и параметр ядра - это всё.
Ранее уже говорил, что система находит файл casper-rw только на разделе FAT32. Отсюда ограничение на максимальный размер файла. Поэтому всё поместил на раздел sde1 (польза от ESP размером 8гб).
« Последнее редактирование: 28 Сентября 2024, 06:12:00 от andytux »

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 8047
    • Просмотр профиля
Re: MKUSB и Ubuntu 24.04
« Ответ #7 : 25 Августа 2024, 06:02:57 »
  Загрузка lubuntu 18.04.5 persistent.
Запускаю ubuntu 10.04 без "persistent".

На скриншоте. "Вчерашняя ubuntu 10.04", но MC запущен с другим параметром, который изменил внешний вид. Да, в этом скваше очень много изменений и очень мало от стандартной 10.04.
Справа внизу. Видно, что запущен без персистент-параметра. Строка "tmpfs /cow..." говорит, что изменяемый слой в оперативной памяти.
Подправляю конфиг загрузчика:
iso_path="buntu-18.04.5-desktop-amd64.iso"
#version='4'
#insmod regexp; insmod part_gpt
root='x'; search --no-floppy --set --file "${iso_path}"
if [ "${root}" = 'x' ]
  then if regexp "u-18" "${iso_path}"; then src="${src}/ub19"; fi
Теперь он будет запускать lubuntu-18.04.5 из "набора файлов".
На разделе sde1 создаю каталог /opt/ub19/casper. Из образа lubuntu 18.04.5 копирую в него ядро, инитрд, копирую *.squashfs, с сохранёнными в нём изменениями. Из каталога /mnt/sde1/opt/ub11 перемещаю сюда файл casper-rw.
Перезагружаюсь.

На скриншоте. Lubuntu 18.04 persistent. Не кажется, что-то напоминает. В этом скваше очень много изменений.
Справа внизу. Видно, что запущена с персистент-параметром. Строка "/dev/loop0 /cow ext2..." - это и есть файл casper-rw. Тот самый, который позавчера монтировался в 10.04. На рабочем столе, слева вверху виден скриншот, который был сделан в 10.04 и принесён сюда в файле casper-rw. Слева вверху. В левой панели MC он в каталоге ~/Desktop, в правой панели MC он в /cow/upper/home/ubuntu/Desktop (куда попал в 10.04).
Как видно, персистент в 18.04 работает, как и в 10.04. Можно подключать casper-rw использававшийся в другой системе, хотя это может быть чревато...

Файл casper-rw, как любую файловую систему, можно смонтировать и работать с ним, не оглядываясь на его прямое назначение.

На скриншоте. Файл casper-rw смонтирован. Слева вверху. Правая панель MC. "Внутри casper-rw", виден скриншот, сделанный пару часов назад, можно удалить, можно скопировать из него, в него, обычная файловая система. Ещё один способ вносить изменения.

  lubuntu 18.04.5 без "persistent".
Всем хорош squashfs. Но для внесения изменений, нужно его распаковать, внести изменения, создать новый squashfs.
Изменяю код загрузчика:
iso_path="buntu-18.04.5-desktop-amd64.iso"
#version='4'
#insmod regexp; insmod part_gpt
root='x'; search --no-floppy --set --file "${iso_path}"
if [ "${root}" = 'x' ]
  then if regexp "u-18" "${iso_path}"; then src="${src}/ub18"; fi
Теперь будет искать систему в "/opt/ub18". Загружаюсь.
~$ cat /proc/cmdline
BOOT_IMAGE=/opt/ub18/casper/vmlinuz --version=02lx3pm1dc1 systemd.unit=avn.target ignore_uuid live-media-path=/opt/ub18/casper showmounts boot=casper cdrom-detect/try-usb=true noprompt quiet --
Этот каталог у меня на разделе sde3, файловая система ext4. При загрузке, система монтирует его в каталог /cdrom.
~$ ls -l /cdrom/opt/ub18/casper
total 4
lrwxrwxrwx  1 root root   26 Sep 25  2020 initrd -> ub18.dir/opt/casper/initrd
drwxr-xr-x 22 root root 4096 Jul  9 17:31 ub18.dir
lrwxrwxrwx  1 root root   27 Sep 25  2020 vmlinuz -> ub18.dir/opt/casper/vmlinuz
Что тут интересного. Ядро и инитрд - символические ссылки, реальные файлы находятся в ub18.dir. А ub18.dir - каталог. Да, "живая система" может быть не только в squash-файле, но и в каталоге с любым именем и расширением ".dir".
Именно из этого каталога я создавал squashfs для системы на разделе sde1. Этот каталог доступен для записи, а это даёт ещё один способ внесения изменений в "живую систему".
Фактически, вся система в одном каталоге. Никаких специфических программ, знаний или умений не нужно, чтобы вносить изменения. Никакой возни с squashfs, а тем более с исо-образом. Кому-то после этого еще нужны исо-образы?..
« Последнее редактирование: 25 Августа 2024, 10:11:22 от andytux »

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 8047
    • Просмотр профиля
Re: MKUSB и Ubuntu 24.04
« Ответ #8 : 27 Августа 2024, 04:51:42 »
"Мы рождены, чтоб сказку сделать былью..."

  "Полуживая" lubuntu 18.04.5.
Несколько раз говорил об этом, например здесь, тут.
Устанавливаю lubuntu 18.04 на раздел sde2, обычная установка. Устанавливаю-удаляю пакеты, делаю настройки.
Создаю каталог /opt/casper.
$ ls -l /opt/casper
total 42600
-r--r--r-- 1 root root 43620056 Aug  7  2020 initrd
lrwxrwxrwx 1 root root        6 Sep 25  2020 ub18.dir -> ../../
lrwxrwxrwx 1 root root       38 Mar  2  2021 vmlinuz -> ub18.dir/boot/vmlinuz-5.4.0-42-generic
Из исо-образа копирую в него ядро и инитрд. Ядро можно заменить символичесской ссылкой на реальное ядро в каталоге /boot. Создаю симлинк ub18.dir, указывающий на корень.
Подправляю когфиг груба:
...
src='/opt'; key="boot=casper cdrom-detect/try-usb=true noprompt quiet --"
iso_path="${src}/ub.squashfs"
#iso_path="${src}/ubuntu-10.04.4-desktop-amd64.iso"
iso_path="buntu-18.04.5-desktop-amd64.iso"
#version='4'
#insmod regexp; insmod part_gpt
root='x'; search --no-floppy --set --file "${iso_path}"
if [ "${root}" = 'x' ]
  then #if regexp "u-18" "${iso_path}"; then src="${src}/ub18"; fi
...
Из параметров ядра удаляю "showmounts" (вызывает сбой этого режима), комментирую строку с изменением параметра "src". Теперь этот конфиг будет грузить "живую систему" из каталога /opt/casper.
Перезагружаюсь...
Быль превращаю в сказку,  загружаю установленную систему "как живую".

На скриншоте. Lubuntu, установленная на раздел sde2, загружена как "живая система".
Слева вверху, в окне MC. Левая панель. Каталог /cdrom - сюда смонтирован раздел sde2, внизу панели его размер: 23гб, из которых, 20гб свободны.
$ cat /proc/mounts
...
/dev/sde2 /cdrom ext4 rw,noatime 0 0
/cow / overlay rw,relatime,lowerdir=/cdrom//opt/casper/ub18.dir,upperdir=/cow/upper,workdir=/cow/work 0 0
Смонтирован как нижний слой overlayfs, хотя он доступен на запись, система ничего в нём не меняет. В начале темы есть вопрос про fstab.
Здесь fstab установленной системы:
cat /cdrom/etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
# /boot/efi was on /dev/mmcblk0p1 during installation
LABEL=SO1201 /boot/efi vfat umask=0077 0 0
LABEL=so1202 / ext4 relatime,commit=100,barrier=0,errors=remount-ro 0 0
LABEL=so1203 /cdrom ext4 nofail,relatime,commit=100,barrier=0,errors=remount-ro 0 0
...
А в корне fstab "живой системы":
$ cat /etc/fstab
overlay / overlay rw 0 0
tmpfs /tmp tmpfs nosuid,nodev 0 0
Это весь fstab. Бесполезно "подготавливать" fstab для "живой системы", она его перезапишет по своему усмотрению. Поэтому она грузится на любой конфигурации дисков.
Так как /cdrom доступен на запись, то можно делать в нём изменения и следующая загрузка будет с изменениями. Еще один вариант "живой системы" и способ вносить изменения в "живую систему".
Уже говорил, сама система ничего в /cdrom не изменяет. Поэтому, прямо сейчас можно использовать этот каталог для бэкапа системы. Просто скопировать его или сразу сжать его в squashfs. Потом, загрузить систему из этого бэкапа и восстановить его, просто скопировав из под себя самого.
Правая панель MC. Внизу панели виден размер, чуть менее двух гигабайт. Это верхний слой overlayfs, под него выделена половина оперативной памяти.


Пользователь добавил сообщение 28 Августа 2024, 02:51:51:
  Xubuntu 22.04.4 persistent.
Разделу sde2 присваиваю метку "writable". Исо-образ находится на разделе sde3 в каталоге /opt.
Подправляю конфиг груба:
iso_path="${src}/xubuntu-22.04.4-desktop-amd64.iso"Перезагружаюсь. Загрузчик находит исо-образ, на образе находит файл loopback.cfg и выводит меню из этого файла. К параметрам ядра добавляю "persistent", продолжаю загрузку.

На скриншоте. Xubuntu 22.04, загруженная из исо-образа. Раздел sde2 "writable" смонтирован как верхний слой корня системы, видно по размеру корня (21,8GiB, таков размер раздела sde2) и по файлу mywr.id (перед загрузкой создал его на разделе sde2, для упрощения визуальной идентификации).
Но каждую загрузку вводить параметры неудобно. Подправляю конфиг груба:
...
src='/opt'; key="persistent showmounts boot=casper cdrom-detect/try-usb=true noprompt quiet --"
iso_path="${src}/ub.squashfs"
#iso_path="${src}/ubuntu-10.04.4-desktop-amd64.iso"
iso_path="${src}/xubuntu-22.04.4-desktop-amd64.iso"
...
if [ -e "/boot/grub/loopback.cf" ]
...
Теперь не будет использоваться "loopback-bootable". Для чистоты эксперимента, всё удаляю с раздела sde2. Копирую на него несколько файлов, в основном некоторые конфиги-настройки. Перезагружаюсь.

На скриншоте. Xubuntu 22.04, загруженная из исо-образа. Благодаря предварительно скопированным на "writable-раздел" файлам удалось несложно запустить MC, а он запустил другие настройки.
Справа вверху, в окне терминала видно, с какими параметрами ядра была загружена система, что куда смонтировано. Слева вверху, в окне MC, в нижней части размер корня 23гб - это размер раздела sde2, который смонтирован как верхний слой. Ешё один вариант загрузки "живой системы" и применение-сохраненние изменений.
« Последнее редактирование: 28 Сентября 2024, 07:07:19 от andytux »

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 8047
    • Просмотр профиля
Re: MKUSB и Ubuntu 24.04
« Ответ #9 : 28 Августа 2024, 09:38:04 »
  Трёхслойный торт.
Почти во всех исо-образах *бунту 24.04 по несколько файлов *.squashfs. При загрузке, всё это монтируется "бутербродом". Пробуем использовать это в мирных целях.
Исо-образ убрал из каталога /opt, чтобы загрузчик его не нашёл. Правлю код загрузчика:
...
src='/opt'; key="persistent showmounts boot=casper cdrom-detect/try-usb=true noprompt quiet --"
iso_path="${src}/ub.squashfs"
#iso_path="${src}/ubuntu-10.04.4-desktop-amd64.iso"
iso_path="${src}/xubuntu-22.04.4-desktop-amd64.iso"
...
С раздела sde2 "writable" всё удалил, создал на нём только файл myrw.id (для индикации). На разделе sda3 создал каталог /opt/ux22/casper. Из исо-образа xubuntu 22.04.4 скопировал в него файлы vmlinuz, initrd, filesystem.squashfs. Создал в нём каталог ux22.dir. Скопировал в него некоторые конфиги-настройки, создал в нём файл myxu22.id (для индикации). Перезагружаюсь.

На скриншоте. MC запустился автозапуском, никаких действий мне не пришлось предпринимать, заодно его враппер применил некоторые настройки из каталога ux22.dir. Слева вверху, окно MC. Левая панель, внизу размер корня 23гб - это размер раздела sde2. Видны файлы myrw.id и myxu22.id, значит в корень смонтированы sde2 "writable" и каталог /opt/ux22/casper/ux22.dir с раздела sde3. Правая панель, внутри слоя upper, виден файл myrw.id, как и должно быть.
Справа вверху. В окне терминала видно, с какими параметрами запущена система.
BOOT_IMAGE=/opt/ux22/casper/vmlinuz - отсюда взято ядро.
live-media-path=/opt/ux22/casper - отсюда взяты filesystem.squashfs и ux22.dir.
persistent - параметр загрузки в режиме persistent, в качестве персистент-хранилища - раздел с меткой "writable".
Что куда смонтировано:
/dev/sde3 /cdrom ext4 rw,noatime 0 0 - раздел sde3 смонтирован в каталог /cdrom, в него можно писать, хотя сама система ничего туда не пишет, ничего не меняет.
/dev/loop0 /rofs squashfs ro,noatime,errors=continue,threads=single 0 0 - в каталог /rofs смонтирован скваш-файл.
/cow / overlay rw,relatime,lowerdir=/cdrom//opt/ux22/casper/ux22.dir:/filesystem.squashfs,upperdir=/cow/upper,workdir=/cow/work,xino=off,nouserxattr 0 0 - "торт", нижний неизменяемый слой: filesystem.squashfs и ux22.dir, верхний изменяемый слой: upper он же "writable".
Общий итог:
*.squashfs - неизменяемая система. Плюс - не смешивается с пользовательскими файлами.
ux22.dir - любые пользовательские изменения-дополнения в системе. Плюс - не смешиваются с системой, возможно изменение, даже во время работы системы. Может быть несколько, под разные хотелки.
"writable" - текущие изменения в системе. Плюс - соответствует текущему состоянию системы, не требуются какие-либо специальные действия по сохранению. В принципе, возможно изменение содержимого независимо от системы.

Такое чувство, что я что-то забыл... А-а-а! Нигде, ни разу не упомянул флешку. Как в анекдоте, смеяться на слове "флешка".
« Последнее редактирование: 28 Сентября 2024, 07:09:15 от andytux »

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 8047
    • Просмотр профиля
Re: MKUSB и Ubuntu 24.04
« Ответ #10 : 06 Сентября 2024, 13:42:10 »
  Загрузочная флешка.
Загрузочная флешка никогда не помешает, хотя-бы в качестве запасного парашюта.
Создаю загрузочную флешку.
"Формулы" есть в "Загрузочная флешка Ubuntu 16.04 - неочевидные нюансы". А здесь в картинках.

"Обнуляю флешку" или первые пару-тройку мегабайт.

Делаю разметку: создаю таблицу разделов, раздел.

Монтирую раздел sda1, сюда будут копироваться файлы загрузчиков.

Устанавливаю грубПС: на sda головная часть, на sda1 остальные файлы. На чём в панелях стоят указатели, туда и установится.

Монтирую исо-образ lubuntu 24.04.1. С него на раздел sda1 копирую каталоги: /EFI, /boot/grub/x86_64-efi. Установлен грубЕФИ.

С раздела nvme0n1p1 на sda1 копирую /boot/grub/grub.cfg. Более чем достаточно конфига из "Ответ №6", а здесь значительно больше. Флешка готова, для легаси и ЕФИ.

Всё сделано из "живой" lubuntu 24.04.1. Почти единственная, в которой только один файл squashfs. Загрузилась, как и предыдущие 22.04, сразу автозапустив mc, в котором и была проделана вся работа.
А как-же системы и сохранение? Это свойства конкретной системы, а не загрузочного устройства. Копируй образы на флешку, будут загружаться с флешки. Образы на другом диске, будут загружаться с другого диска.
« Последнее редактирование: 11 Октября 2024, 09:51:17 от andytux »

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 8047
    • Просмотр профиля
Re: MKUSB и Ubuntu 24.04
« Ответ #11 : 15 Сентября 2024, 10:44:05 »
  Lubuntu 24.04.1 persistent.

На левом скриншоте. Lubuntu 24.04, файл writable в качестве персистента. В окне файлменеджера видно, файл Descript.ion - это индикация смонтированного ul24.squashfs, в котором есть мои настройки. Файл mylurw.id - индикация смонтированного файла writable.
На правом скриншоте. Lubuntu 24.04, слева, в левой панели mc, файл Descript.ion - это индикация смонтированного ul24.dir, за счёт настроек в нём автозапустился mc, файл mywritable.id - индикация смонтированного раздела "writable" (в данном случае это раздел nvme0n1p5). В правой панели виден смонтированный файл writable, файл screen.jpg, сохранённый там в предыдущую загрузку и сейчас извлечён и показан в этом сообщении.

На скриншоте. Ubuntu-unity 24.04, файл writable в качестве персистента. В окне файлменеджера видно, файл Descript.ion - это индикация смонтированного un24.squashfs, в котором есть мои настройки. Файл myunrw.id - индикация смонтированного файла writable.
Но сыпет ошибками так, что не успеваю закрывать. Нет никакого желания в неё погружаться.
В общем, аналогично предыдущим 22.04. Среди 24.04 таких "отставших" образов три: kubuntu, lubuntu, ubuntu-unity.
« Последнее редактирование: 17 Сентября 2024, 03:03:41 от andytux »

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 8047
    • Просмотр профиля
Re: MKUSB и Ubuntu 24.04
« Ответ #12 : 17 Сентября 2024, 10:41:06 »
  *buntu 24.04 persistent multi-layer.
Если заглянуть в каталог /casper исо-образа ubuntu 24.04, то с ног сшибает количество файлов *.squashfs. Это и есть "multi-layer", новый способ собрать систему из слоёв.
В инитрд появилась функция setup_overlay:
...
    # Multi-layer filesystem
    if [ -n "$LAYERFS_PATH" ]; then
...
Если переменная LAYERFS_PATH не пустая, то будет применён "многослойный метод".
Если переменная пустая, то:
...
    # Non multi-layer cases
    else
        for image_type in "ext2" "squashfs" "dir" ; do
            for image in "${image_directory}"/*."${image_type}"; do
                imagename=$(basename "${image}")
...
...будет  применён "старый метод"(в исо-образе это один файл filesystem.squashfs). Вообще-то, как я показал выше на примере lubuntu 24.04, в старом методе тоже возможны слои, причём слои разнотипные.
Дефолтное значение переменной задано в файле /conf/conf.d/default-layer.conf и равно "minimal.standard.live.squashfs", это имя файла "живой системы".
Расширение должно быть "squashfs". Имя задаёт последовательность слоёв. По умолчанию, самым нижним слоем будет смонтирован файл minimal.squashfs. Следующий слой - minimal.standard.squashfs. Верхний - minimal.standard.live.squashfs.
Есть параметр ядра, в котором можно задать значение переменной: "layerfs-path".
Подготавливаю свою  xubuntu 24.04.
На разделе nvme0n1p1 (fat32) создаю каталог /opt/ux24/casper. Из исо-образа xubuntu 24.04.1 копирую в него файлы vmlinuz, initrd. Копирую с переименованием файлы слоёв:
minimal.squashfs > min.squashfs
minimal.standard.squashfs > min.std.squashfs
minimal.standard.live.squashfs > min.std.live.squashfs
Создаю файл со "своим слоем" min.std.live.ux24.squashfs. Создаю файл /opt/ux24/writable.
Изменяю конфиг груба:
submenu '*buntu live persistent' {
src='/opt'; key="layerfs-path=min.std.live.ux24.squashfs showmounts boot=casper cdrom-detect/try-usb=true noprompt quiet --"
...
Загружаю.

На левом скриншоте. Xubuntu 24.04.1, в "многослойном  персистент режиме". В окне файлменеджера видно, файл Descript.oin - индикатор смонтированного слоя *ux24.squashfs, файл mywr.id - индикатор смонтированного слоя writable-файла.  В окне терминала, параметры ядра, с которыми запущена система.
"persistent persistent-path=*" - добавил груб, обнаружив файл writable.
"layerfs-path=*" - укавызает на мой самодельный слой.
Ниже, монтирования, видно какие слои смонтированы и в какой последовательности.
С раздела nvme0n1p1 копирую каталог /opt/ux24 на раздел nvme0n1p3 (ext4), но без файла writable. Разделу nvme0n1p5 присваиваю метку "writable".
Изменяю конфиг груба:
submenu '*buntu live persistent' {
src='/opt'; key="persistent layerfs-path=min.std.live.ux24.squashfs showmounts boot=casper cdrom-detect/try-usb=true noprompt quiet --"
...
Загружаю.
На правом скриншоте. Xubuntu 24.04.1, в "многослойном  персистент режиме". Окно слева, mc. В левой панели, файл Descript.oin - индикатор смонтированного слоя *ux24.squashfs, файл mywritable.id - индикатор смонтированного слоя writable-раздела.  В правой панели, смонтированный файл writable из предыдущей загрузки, виден скриншот, сохранённый в предыдущую загрузку.
Окно слева, терминал. Параметры ядра, с которыми запущена система, монтирования. Так как мой слой смонтировался, автозапустился mc, автоматом применились настройки оформления.
Аналогично, на разделе nvme0n1p3 подготавливаю ubuntu-mate. С раздела nvme0n1p5 убираю метку "writable". Загружаю.

На скриншоте. Ubuntu-mate 24.04.1, в "многослойном режиме".
Окно слева-вверху, mc. В левой панели файл Descript.ion - индикатор смонтированного слоя *um24.squashfs. В правой панели, каталог /opt/um24/casper -  если есть параметр ядра "showmounts", то здесь смонтированы слои.
Окно справа-внизу, mc. В левой панели смонтирован файл writable, из него достаю первый скриншот для публикации. В правой панели смонтирован раздел nvme0n1p5 (бывший "writable"), из него достаю второй скриншот для публикации.
Так как мой слой смонтировался, то автозапустился mc (хотя самого mc в этом слое нет), применились настройки оформления, переключения раскладки, что позволяет сейчас писать из этой системы.
$ cat /proc/cmdline
BOOT_IMAGE=/opt/um24/casper/vmlinuz --version=02ma1pm1 ignore_uuid live-media-path=/opt/um24/casper layerfs-path=min.std.live.um24.squashfs showmounts boot=casper cdrom-detect/try-usb=true noprompt quiet --
live-media-path=/opt/um24/casper - параметр задает место расположения файлов "живой системы".
layerfs-path=min.std.live.um24.squashfs - этот файл будет смонтирован самым верхним, должны существовать все четыре файла.
showmounts - показывать точки монтирования, в нормальных условиях не нужен.
$ cat /proc/mounts
...
/dev/nvme0n1p3 /cdrom ext4 rw,noatime 0 0
Раздел, на котором находится "набор файлов живой системы", монтируется в каталог /cdrom.
...
/dev/loop0 /rofs squashfs ro,noatime,errors=continue,threads=single 0 0
/dev/loop1 /opt/um24/casper/min.std.squashfs squashfs ro,noatime,errors=continue,threads=single 0 0
/dev/loop2 /opt/um24/casper/min.std.live.squashfs squashfs ro,noatime,errors=continue,threads=single 0 0
/dev/loop3 /opt/um24/casper/min.std.live.um24.squashfs squashfs ro,noatime,errors=continue,threads=single 0 0
...
Сначала скваши монтируются как лоопы.
...
/cow / overlay rw,relatime,lowerdir=/min.std.live.um24.squashfs:/min.std.live.squashfs:/min.std.squashfs:/min.squashfs,upperdir=/cow/upper,workdir=/cow/work,uuid=on,xino=off,nouserxattr 0 0
...
Потом собираются в "слоёный пирог". Самый нижний слой: /min.squashfs, самый верхний: /min.std.live.um24.squashfs. Выше него слой "чтения-записи": /cow/upper (в данном случае, это ОЗУ).
« Последнее редактирование: 17 Сентября 2024, 15:28:26 от andytux »

Оффлайн F12

  • Администратор
  • Старожил
  • *
  • Сообщений: 5711
    • Просмотр профиля
Re: MKUSB и Ubuntu 24.04
« Ответ #13 : 17 Сентября 2024, 11:00:38 »
Если заглянуть в каталог /casper исо-образа ubuntu 24.04, то с ног сшибает количество файлов *.squashfs.
- угу, есть такое

Для сравнения заглянул в Ubuntu-MATE 24.04, там их только 3 (три)!

На самом деле и в Ubuntu 24.04 их там тоже не так много, как может показаться, просто каждый дублируется для различных локалей (не очень понимаю зачем)

Оффлайн andytux

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 8047
    • Просмотр профиля
Re: MKUSB и Ubuntu 24.04
« Ответ #14 : 22 Сентября 2024, 06:30:10 »
  *buntu 24.04 multi-DE.
На разделе nvme0n1p3 создаю каталог /opt/ub24/casper, копирую в него файлы для "живой системы".
(Нажмите, чтобы показать/скрыть)
Манипулирую только параметром "layerfs-path=*". Перезагружаю.

На скриншотах. Ubuntu 24.04, Kubuntu 24.04, Lubuntu 24.04. В оригинальных образах, Kubuntu и Lubuntu не "multi-layer", но здесь загружены как "multi-layer".

Ubuntucinnamon 24.04, Ubuntu-mate 24.04, Xubuntu 24.04.
За счёт верхнего слоя, везде автозапустился mc (хотя самого mc нет ни в одном DE и нет в верхнем слое). Если в нём были настройки для конкретного DE, то они применились (иконки, темы...) В правой панели mc видно, что медийные каталоги сделаны символическими ссылками. Поэтому например, скриншоты реально сохранились вне "живой системы",  откуда их сейчас публикую.
И немного свежести.

Linuxmint 22 cinnamon. Он как-бы между. Ядро (а значит и модули) новее, чем в *бунту 24.04, но старее, чем в *бунту 24.04.1. Для неё я вставил в "верхний слой" модули от 24.04.1. В левой панели mc видно, 6.8.0.38 - родные модули минта, 6.8.0.41 - модули *бунту 24.04.1 из верхнего слоя. За счёт их минт и запустился с ядром от *бунту 24.04.1.
« Последнее редактирование: 22 Сентября 2024, 07:56:41 от andytux »

 

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