LINUX.ORG.RU

Запустить debian в режиме Live

 ,


1

1

Хочется странного.

Стоит стационарный десктопный Debian. Хочу при загрузке нажать Tab задать ядру волшебную опцию, чтобы все изменения записывались не на диск а в память, чтобы при выключении компьютера все изменения забывались.

Альтернативно: есть загрузочная флешка с Live образом Debian, настроен persistence файл. Два пути: отключить перзистенс при загрузке - система не помнит установленных программ, но зато забывает изменения при выключении. Второй путь: перзистенс включен, но теряется способность забывать изменения, все логи пишутся на диск.

Хочется третий путь: включить persistence в read-only. Читает из перзистенса, а пишет в память. То есть совместить persistence с возможностью забывать изменения. Есть такая волшебная опция?

Belen в соседнем топике пишет: Там же можно до кучи доставить live-build и пересобирать периодически само себы. чтобы это самое persistence не распухало

Вот. Мне главное чтобы система забыла изменения, поэтому придется грузить без persistence, а чтобы там были нужные программы, придется пересобирать каждый раз новый live образ. :-(


Если я правильно понял, то вам нужен live-образ, но уже настроенный и с нужными программами, как на уже установленной ОС. Вам нужно что-то вроде Systemback для такого.

Korchevatel ★★★★★ ()

А полноценный Дебиан на флешке с загрузкой read-only. А обновлятся с подключением read-write?

Mixa ()

Во первых. Использовать систему, которая расчитана на такой режим. Например, Porteus.

Во вторых. Дебиан не пробовал. А в *бунту делаю так Вариант два - это именно то, о чем ты пишешь.

andytux ★★★ ()
Ответ на: комментарий от Mixa

А полноценный Дебиан на флешке с загрузкой read-only.

Это надо overlayfs городить.

Спасибо всем кто ответил, буду думать.

Казалось бы, вот флешка с live образом, вот файл с persistence’ом, внутри лежат папки ro, rw. Надо всего лишь подключить этот самый persistence так чтобы изменения шли в память. Вот это то как раз и невозможно, хотя только что работало, но без persistence’а.

tschl ()
Ответ на: комментарий от tschl

Надо всего лишь подключить этот самый persistence так чтобы изменения шли в память. Вот это то как раз и невозможно, хотя только что работало, но без persistence’а.

Всё возможно.

В обычном случае, когда система стоит на диске, ядро монтирует корневую фс сразу на запись и пишет на неё.

В случае LiveCD есть обычно squashfs файл с корневой файловой системой, доступной на чтение, а для записи каскадной монтируется tmpfs. Т.е. нижний слой - squashfs доступный на чтения, а изменения пишутся в tmpfs, Это монтирование делается скриптами в Initramfs. И уже после каскадного монтирования посредством aufs, unionfs или overlayfs происходит переключение корня в эту смонтированную файловую систему.

Аналогично делается и в случае persistent, вместо tmpfs на запись монтируется файс с файловой системой, ext4 или другой, доступной на запись.

Если тебе нужно совместить еще и tmpfs, то тебе придётся внести правки в скрипты в initramfs, что бы в случае некоторого параметра в параметрах ядра скрипты после каскадного монтирования squashfs и persistent image в новую файловую систему, также сделали ещё одно каскадное монтирование, смонтировав ещё и tmpfs. И уже в новую каскадную ФС переклюиться корень.

anonymous ()
Ответ на: комментарий от anonymous

придётся внести правки в скрипты в initramfs

Верно. Или использовать инитрамфс с исо-образа, в котором все эти изменения уже есть. Об этом и сказал в прошлом сообщении.

andytux ★★★ ()

хочется странного

не смог поять чего ты хочешь по итогу.

pyallnik ()
Ответ на: комментарий от tschl

думаю все упрется в правильное монтирование и создание разделов, теоретически и это вполне реально когда умеешь.

pyallnik ()
Ответ на: комментарий от tschl

и собирать свой live образ

ну если совсем заняться нечем то пачиму и нет, хотя по мне есть более интересные в подобной ситуаци темы времяпрепровождения, а лепить образ, которые стабильностью не отличаются, то системд введут, то терминус отменят, то еще что то, в итоге все что было оказывается не актуальным и даже пагубным и морально и технически не говаряо большем это такое себе занятие сродни мазахизму имха, но тут кто во что горазд, собирай конечно)

pyallnik ()
Ответ на: комментарий от tschl

В Debian все готово.

https://manpages.debian.org/testing/live-boot-doc/live-boot.7.en.html

Ставимся как обычно. Потом:

apt-get install live-boot

В параметры ядра добавляем:

boot=live toram plainroot live-boot.debug

перезагружаемся.

Если надо что то поменять:

mount -o remount,rw [куда монтируется ro rootfs]

Убираем

boot=live

из

[куда монтируется ro rootfs]/boot/grub/grub.cfg

перезагружаемся. Правим rootfs. Возвращаем

boot=live

перезагружаемся.

anonymous ()
Ответ на: комментарий от anonymous

Пробовал при загрузке live image указать опции

boot=live persistence persistence-read-only

Казалось бы, должно работать, но вылезают ошибки:

mount: mounting /dev/loop1 on /live/persistence/loop1 failed: Read-only filesystem

/init: line 230: can’t open /tmp/custom_mounts.list: no such file

tschl ()
Ответ на: комментарий от tschl
boot=live toram plainroot 

Работает без persistence. Все изменения на RAM диске.

boot=live persistence persistence-read-only Казалось бы, должно работать, но вылезают ошибки: mount: mounting /dev/loop1 on /live/persistence/loop1 failed: Read-only filesystem

С чего бы ему работать если ты указал: persistence-read-only.

anonymous ()
Ответ на: комментарий от anonymous

boot=live toram plainroot

Ты имеешь ввиду стационарный Debian, не Live. Попробую.

С чего бы ему работать если ты указал: persistence-read-only.

Эта опция работает не так, как написано в мануале

persistence-read-only

Filesystem changes are not saved back to persistence media. In particular, overlays and netboot NFS mounts are mounted read-only.

Вернее, работает, но при этом не работает все остальное. Какой толк от такого перзистенса, если его даже примонтировать нельзя?

Тут у парня такая же проблема: https://unix.stackexchange.com/questions/376172/

tschl ()
Ответ на: комментарий от anonymous
Begin: Mounting "UUID=03*************2e" on "//filesystem" ...
mount: mounting /dev/sda6 on //filesystem failed: No such device
Can not mount UUID=03blablabla on //filesystem

(initramfs) ls -l /dev/sda6
brw------ 1 0   0   8,  6 Mar  1 12:07  /dev/sda6

Меня выкинуло в initramfs shell

Весь экран заполнен отладочными сообщениями начинающимися с плюса о каждом шаге скриптов. Некоторые сообщения без плюса, их я и привел. В dmesg они не видны. Как бы их просмотреть целиком?

tschl ()
Ответ на: комментарий от tschl
(initramfs) ls -l /run/initramfs
total 0

То есть логов не осталось, где они еще могут быть? Их надо было включить в параметрах ядра?

tschl ()
Ответ на: комментарий от anonymous

Нашел в корне boot.log

Begin: Copying live media to ram ...
+ copy_live_to UUID=0327f52blabla-blablabla-d2e ram
+ copyfrom=UUID=0327f52blabla-blablabla-d2e
+ copytodev=ram
+ copyto=UUID=0327f52blabla-blablabla-d2e_swap
+ [ -z  ]
+ fs_size  UUID=0327f52blabla-blablabla-d2e/ used
+ dev=
+ mountp=UUID=0327f52blabla-blablabla-d2e/
+ used=used
+ [ -z UUID=0327f52blabla-blablabla-d2e/ ]
+ [ used = used ]
+ du -ks UUID=0327f52blabla-blablabla-d2e/
+ cut -f1
du: UUID=0327f52blabla-blablabla-d2e/: No such file or directory
+ size=
+ expr + / 20
expr: non-numeric argument
+ size=

Короче, размер файловой системы не прочитался. Он серьезно хочет копировать все восемь гигов в память? У меня только один.

Проще лайв-образ собрать

tschl ()
Ответ на: комментарий от tschl

Поставим вопрос по другому. Есть рабочая система. Можно ли на ходу подменить корень на unionfs, чтобы с этого момента все изменения шли только в память?

tschl ()
Ответ на: комментарий от tschl

подменить корень на unionfs, чтобы с этого момента все изменения шли только в память?

Как сделать это в *бунту ответил 14 февраля. Любопытно было проверить, как работает эта схема в Дебиан, да все руки не доходили. В наличии, установленный только Debian 7, на весьма древнем десктопе. В принципе, все так же, как в *бунту. Немного отличается код конфига груб, в силу разницы некоторых параметров систем. Немного отличается монтирование. В конфиг груба добавил код:

  submenu "Debian live" {
	src='/opt'; key="boot=live noprompt ${key}"
	version='1'
	root='x'; search -n -s -f "${src}/live/vmlinuz${version}"
	if [ "${root}" = 'x' ]
	  then	src='Linux live'
	  else	if [ -e "${src}/live-rw" ]; then key="persistent persistent-path=${src} ${key}"; fi
		src="${src}/live"; key="ignore_uuid live-media-path=${src} ${key}"
		if [ -e "${src}/initrd${version}.img" ]; then avinit="initrd ${src}/initrd${version}.img"; else avinit="initrd ${src}/initrd.lz"; fi
		avload='linux'; src="${src}/vmlinuz${version} ${key}"
	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 1
	if [ -n "${avload}" ]; then ${avload} ${src}; if [ -n "${avinit}" ]; then ${avinit}; fi; fi
  }

Установленный Дебиан запустился в «живом режиме». Смотрю в /proc/mounts, что куда смонтировано. В бунту монтировался в /cdrom, в Дебиан монтируется в /lib/live. В *бунту fstab очищался, в Дебиан тот-же, что и в нормальном режиме. Внес изменения в файл, изменения сохранились. Перезагрузил в нормальном режиме, как и ожидалось, изменений в файле нет. Режим «persistent» не проверял. Для экспериментов подключал этот харддиск через УСБ-ПАТА переходник к ноутбуку. Чтобы не менять конфиг груба в ноуте, использовал код загрузки другого конфига:

  submenu "Load configfile" {
	src='/boot/isolinux/isolinux.cfg'
	src='/boot/grub/menu.lst'
	src='/boot/grub/loopback.cfg'
	src='/boot/grub/grub.max040_2'
	root='x'; search -n -s -f "${src}"
	if [ "${root}" = 'x' ]
	  then	avload=''
	  else	if regexp "grub." "${src}"; then avload='configfile'; fi
	  	if regexp "loopback." "${src}"; then avload='configfile'; fi
		if regexp "menu." "${src}"; then avload='legacy_configfile'; fi
		if regexp "isolinux." "${src}"; then avinit="syslinux_configfile ${src}"; avload="syslinux_source /boot/isolinux/isolinux.bin"; 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 1
	if [ -n "${avload}" ]; then ${avload} ${src}; if [ -n "${avinit}" ]; then ${avinit}; fi; fi
  }
andytux ★★★ ()
Последнее исправление: andytux (всего исправлений: 1)
1 мая 2020 г.
Ответ на: комментарий от andytux

Добрый день. Установилs sudo apt-get boot-live далее добавил в /boot/grub/grub.cfg «submenu «Debian live» {….» после перезагрузил выбрал live режим, а далее что-то пошло не так «ошибка: no such device: /opt/live/vmlinuz1.» Что я не так сделал? Я новичек в linux. пожалуйста подскажите

Tertor ()
Ответ на: комментарий от Tertor

Что я не так сделал?

Всё. А главное, не читал, что я написал.

Установилs sudo apt-get boot-live

В моем варианте он не нужен. Как работает - понятия не имею. Может ему еще что-то нужно. Предполагаю, раз ты его установил, то наверное нужно сгенерировать инитрд.

ошибка: no such device: /opt/live/vmlinuz1

А он у тебя есть?

andytux ★★★ ()

https://www.whonix.org/wiki/Grub-live У хуникс есть решение, которое можно поставить, но почему-то оно работает только когда дебиан установлен на винчестер, а на флешке не работает. Такая шляпа вылетает, когда в grub выбираешь лайв моде https://ibb.co/CQHjWC0

Tertor ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.