ArchLinux загрузка системы из img-файла

Доброго времени суток! Дорогие форумчане, подскажите, где лучше подглядеть сценарий развертывания с-мы на фс внутри raw-файла. Вкратце опишу задачку. Есть ЖД с grub4dos с набором нужных исошек. Переразбивать данный ЖД и форматировать нельзя, но хотелось бы добавить пункт в меню граба и загружать с этого диска из файла-образа archlinux, но не в лайв-режиме, а с возможностью записи в этот же файлобраз...
Все молчат, попробую изложить свое понимание данного вопроса.
Насколько я знаю такое возможно при создании загрузочной флешки Live USB, имеющей возможность производить сохранение изменений, внесенных в процессе работы (так называемый режим persistence mode).
Но, учитывая тот факт, что
Образ (ISO/IMG файл) не является файловой системой, он содержит файловую систему. По существу это копия данных на блочном устройстве в виде файла (в другой файловой системе).
а также тот факт, что
система загруженная с образа и измененная в процессе работы, не может сама изменить свой же образ и записать его под собой же
там все делается довольно хитро - сам образ записывается на одном разделе, а для сохранения внесенных изменений создается другой раздел, со специальной меткой.
А потому, имхо, просто имея образ на носителе (с любым загрузчиком) и загрузившись с него не возможно записать/сохранить в этом же образе внесенные изменения.
Ошибки не исчезают с опытом - они просто умнеют
Почему не возможно?
Создаете файл нужного размера. Создаете на нем ФС, например ext4 и используете єтот файл как корневой раздел. Может быть, что-то придется подправить в скриптах initramfs-linux.img. Естественно, для загрузки ядро и инитрамфс должны быть скопированы из образа в доступное место.
А чем арч на флешке не устраивает? Есть соответствующая тема, достаточно подробная.
PS.Даже дюкдюкать долго не пришлось. Статья на русском, Хаутушка из которой ноги растут.
vasek
сам образ записывается на одном разделе, а для сохранения внесенных изменений создается другой раздел, со специальной меткой.
Так сделано в сусях, если записать образ на флеш носитель, то там будет два раздела и браузер сохраняет историю и закачки. Когда то столкнулся, был удивлен, если честно.
In Tux We Trust
Ребята, ТС заказал:
emlen
где лучше подглядеть сценарий развертывания с-мы на фс внутри raw-файла
, а вы рассказываете немножко не то.
anode
Создаете файл нужного размера. Создаете на нем ФС, например ext4 и используете єтот файл как корневой раздел.
Насколько я понял, ТС ничего изменить не может и хочет использовать для загрузки существующий образ. Или я опять что то не понял правильно.
Ошибки не исчезают с опытом - они просто умнеют
anode
а вы рассказываете немножко не то.
Тогда пусть описывает более конкретно. До меня старого все доходит плохо.
Ошибки не исчезают с опытом - они просто умнеют
Давненько баловался))
anode
Создаете файл нужного размера. Создаете на нем ФС, например ext4 и используете єтот файл как корневой раздел. Может быть, что-то придется подправить в скриптах initramfs-linux.img.
Сначала в initramfs нужно монтировать раздел на котором хранится образ с корнем.
Ведру в параметрах передать mntdev="путь до раздела" и, видимо, mntdir="куда его монтировать". Последнее не помню зачем было выделено. Можно прибить в коде на любую папку.

Затем используется losetup
В fstab прописать корень как /dev/loop0, если не ошибаюсь.

Хук писал и использовал очень давно. Возможно придется доработать.
Хук
#!/usr/bin/ash

run_hook() {
	local fstype
	local mnt
	local mnt_opt

	if [ ! -d ${mntdir} ]; then mkdir -p ${mntdir}; fi

	fstype=$(blkid -u filesystem -o value -s TYPE -p "${mntdev}")
	mnt="mount"
	case $fstype in
		ntfs)
			#msg "Loading module fuse for ntfs-3g..."
			#modprobe fuse
			mnt="mount.ntfs-3g"
			mnt_opt="-o rw,suid,nodev,exec,auto,nouser,async,relatime"
			;;
		vfat)
			#mnt="mount"
			mnt_opt="-t vfat -o rw,suid,nodev,exec,auto,nouser,async,relatime"
			;;
	esac

	${mnt} ${mnt_opt} ${mntdev} ${mntdir}
	losetup --find --show ${mntdir}/root
}
install
#!/bin/bash

build() {
    BINARIES="blkid mount.ntfs-3g"
    #add_module "cdrom"
    add_module "loop"
    add_module "dm-snapshot"
    add_module "fuse"

    add_runscript

    #add_binary /usr/lib/udev/cdrom_id
    add_binary blockdev
    add_binary dmsetup
    add_binary losetup
    add_binary mountpoint
    add_binary mount.ntfs-3g

    #add_file /usr/lib/udev/rules.d/60-cdrom_id.rules
    add_file /usr/lib/udev/rules.d/10-dm.rules
    add_file /usr/lib/udev/rules.d/95-dm-notify.rules
    add_file /usr/lib/initcpio/udev/11-dm-initramfs.rules /usr/lib/udev/rules.d/11-dm-initramfs.rules

    add_runscript
}

help () {
cat<<HELPEOF
  This hook mounting of your device from the loader.
HELPEOF
}

anode
Естественно, для загрузки ядро и инитрамфс должны быть скопированы из образа в доступное место.
В grub2 есть модуль loopback. Монтирует любые образы с поддерживаемыми фс. Загружает ведро без проблем.
grub4dos наверняка что-то подобное умеет.
Lupus pilum mutat, non mentem.
vasek,
emlen
Переразбивать данный ЖД и форматировать нельзя, но хотелось бы … загружать с этого диска из файла-образа archlinux, но не в лайв-режиме, а с возможностью записи в этот же файлобраз
классическая loopback система, если ТС хочет что-то устанавливать, удалять, настраивать и т.д. и т.п. без переразбивки диска. По крайней мере, я так понял :) Может вы правы, а я ошибаюсь. Ждем реакции рулевого.
jim945
grub4dos наверняка что-то подобное умеет.
врядли, он и исо монтирует только если файл без фрагментации. С какого-то момента граб4дос начал выделоваться по поводу ext4, для себя я понял так, что grab4dos не понимает каких-то новшеств ext4, плюнул и окончательно перешел на grub2, что и ТС советую.
 
Зарегистрироваться или войдите чтобы оставить сообщение.