LINUX.ORG.RU

Конвертировать iso9660 в ext4

 , ,


0

1

Продолжая вчерашнюю тему про livecd.

Собрал образ, написал средствами dd на flash - все работает. Решил сделать более продвинутый вариант, в котором можно будет обновлять содержимое squashfs непосредственно из под livecd. Ну ок, монтирую и вижу такую картину:

mount /dev/sdb1 /mnt
mount: /dev/sdb1 is write-protected, mounting read-only

mount|grep sdb1
/dev/sdb1 on /mnt type iso9660 (ro,relatime)

mount -o,remount rw /mnt
mount: cannot remount rw read-write, is write-protected
Есть способ переделать на ext2/3/4? Или копать в сторону отказа от isolinux+xorriso при сборке live образа(загрузка с cd мне в принципе не нужна).

Deleted

Последнее исправление: log4tmp (всего исправлений: 1)

Способ 1.
1. Отформатировал flash в ext4
2. Закинул туда содержимое squashfs
3. Запилил extlinux

Тормозит, но грузится.

Deleted
()

Способ 2.
1. Подготавливаем live образ по инструкции отсюда(останавливаемся на Step5)
2. На Host системе ставим extlinux и syslinux-common
3. Форматируем flash в ext3/ext4 и копируем в корень live и isolinux из binary
4. По инструкции устанавливаем и конфигурируем extlinux, пример моего isolinux/syslinux.cfg

prompt 0
default live-amd64
timeout 10

label live-amd64
	linux /live/vmlinuz
	append initrd=/live/initrd boot=live persistence quiet
endtext
5. Осталось добавить в fstab live системы монтирование usb накопителя(например по uuid) и простой скрипт, который будет обновлять squashfs образ по команде.

Deleted
()
Последнее исправление: log4tmp (всего исправлений: 2)
Ответ на: комментарий от anonymous

Я не до конца понимаю как оно работает, но видимо squashfs сразу в ram распаковывается, потому работает быстрее(да USB2.0)

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

Обычно в лайв-дистрах поверх squashfs монтируется tmpfs. Преимущество squashfs в том, что данные сжимаются.

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

поверх squashfs монтируется tmpfs

Эм, я не особо понял что ты имел в виду здесь. Монтировать squashfs в tmpfs? Так оно и так происходит.

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

tmpfs монтируется с помощью overlayfs или aufs поверх squashfs. Благодаря этому становится возможно создавать и удалять файлы. После перезагрузки, как ты понимаешь, все изменения утрачиваются.

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

Хм, если я понимаю то squashfs и так распакована в ram диск и файлы там могут создаваться/изменяться. Сейчас пишу bash-костыль, который будет необходимые каталоги бекапить в архив при выключении и восстанавливать при загрузке. Вообще squashfs очень удивила тем, что нельзя перезаписывать файлы.

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

Иногда распаковывают, обычно при загрузке опция называется «copy to ram», но чаще используют overlayfs, чтобы память не забивать. squashfs - это файловая система, то есть, для доступа к одному файлу не надо распаковывать весь «архив».

Скачал лайв дебиана, mount говорит, что используется aufs.

Можешь просто попробовать поставить вместо tmpfs, монтируемого поверх squashfs, папку на ext и тогда не придётся костылить и данные всегда будут в сохранности, даже если свет пропадёт. На на некоторых дистрах предусмотрено использование файла или раздела заместо tmpfs, например в puppy и арче (возможно, что и в дебиане есть, надо посмотреть). Но надо понимать, что если ты «перезапишешь» файл на squashfs, то физически у тебя будет два файла: один невидимый, на squashfs, и второй видимый на ext.

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

В дебиане тоже можно указать persistent-раздел, но что-то я не совсем понял как. Документа на опции загрузки я не нашёл. Судя по скриптам для включения persistent-режима надо к параметрам ядра добавить persistence persistence-label=лейбл_раздела и возможно что-то ещё. Скорее всего раздел будет монтироваться поверх корня.

Я не проверял, работает оно на самом деле или нет. Подробнее в initrd дебиана )

anonymous
()

Посмотри, как в knoppix реализовано.

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

Нашёл документ: man live-boot, persistence.conf.

Чтобы включить persistene в дебиан, надо, например, создать раздел с лейблом persistence, поместить в его корень файл persistence.conf, который содержит список сохраняемых папок (например /home/user union означает, что на новом разделе будут сохраняться только изменения, произведённые в /home/user) и запустить систему с параметром persistence.

Попробовал - работает. Заместо раздела можно использовать файл-образ файловой системы, но я не вчитывался и сходу не понял как )

В принципе, удобно, когда знаешь как оно работает )

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

Кстати да, с файлом непонятно где он его ищет и под каким именем(вроде persistence тоже).

https://debian-live.alioth.debian.org/live-manual/stable/manual/html/live-man...

an image file located on the root of any readable filesystem (even an NTFS partition of a foreign OS), identified by its filename.

Deleted
()
Последнее исправление: log4tmp (всего исправлений: 1)
Ответ на: комментарий от Deleted

Да, в man live-boot вроде про это было написано. Но непонятно надо ли передавать параметр persistence-path= и если надо, то что в нём передавать.

....

Пачитал скрепты:

path=${backing}/${PERSISTENCE_PATH}/${label}
...
loopdev=$(setup_loop "${path}" "loop" "/sys/block/loop*")

$backing - это куда по умолчанию монтируется раздел (монтируются все блочные девайсы, если не указывать persistence-media=), $label по дефолту persistence, можно поменять через persistence-label=, $PERSISTENCE_PATH - это значение того самого параметра persistence-path=, по умолчанию - ничего, то есть, ищет в корне.

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

Но непонятно надо ли передавать параметр persistence-path=

У меня все без него завелось

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