Difference between revisions of "Talk:LiveOS image"
(Merge in that persistent overlay, don't expand it! Version 0.1, having formatting issues) |
m (Fixed formatting) |
||
Line 5: | Line 5: | ||
Step 1: Get access to read-write base image, note that I got loop2 and loop3 here, YMMV. | Step 1: Get access to read-write base image, note that I got loop2 and loop3 here, YMMV. | ||
− | <nowiki>mkdir squashfs | + | <nowiki>mkdir squashfs |
− | mount -o loop /run/media/*/LIVE/LiveOS/squashfs.img squashfs/ | + | mount -o loop /run/media/*/LIVE/LiveOS/squashfs.img squashfs/ |
− | cp squashfs/LiveOS/ext3fs.img .</nowiki> | + | cp squashfs/LiveOS/ext3fs.img .</nowiki> |
Step 2: Set up loopback and device mapper devices for persistent overlay, base device mapper and snapshot. | Step 2: Set up loopback and device mapper devices for persistent overlay, base device mapper and snapshot. | ||
− | <nowiki>losetup -f ext3fs.img | + | <nowiki>losetup -f ext3fs.img |
− | losetup -f /run/media/*/LIVE/LiveOS/overlay-* | + | losetup -f /run/media/*/LIVE/LiveOS/overlay-* |
− | echo 0 $(blockdev --getsize /dev/loop2) linear /dev/loop2 0 |dmsetup create orig | + | echo 0 $(blockdev --getsize /dev/loop2) linear /dev/loop2 0 |dmsetup create orig |
− | echo 0 $(blockdev --getsize /dev/mapper/orig) snapshot /dev/mapper/orig /dev/loop3 p 8 | dmsetup create top</nowiki> | + | echo 0 $(blockdev --getsize /dev/mapper/orig) snapshot /dev/mapper/orig /dev/loop3 p 8 | dmsetup create top</nowiki> |
Step 3: Stop the snapshot device and merge the snapshot with the base | Step 3: Stop the snapshot device and merge the snapshot with the base | ||
− | <nowiki>dmsetup suspend top | + | <nowiki>dmsetup suspend top |
− | echo 0 $(blockdev --getsize /dev/loop2) snapshot-merge /dev/loop2 /dev/loop3 p 8 | dmsetup create mergeomatic && dmsetup status mergeomatic | + | echo 0 $(blockdev --getsize /dev/loop2) snapshot-merge /dev/loop2 /dev/loop3 p 8 | dmsetup create mergeomatic && dmsetup status mergeomatic |
− | dmsetup status | + | dmsetup status |
− | dmsetup remove mergeomatic</nowiki> | + | dmsetup remove mergeomatic</nowiki> |
Step 4: Set the top device to no snapshot, and inspect the filesystem for results, if desired. | Step 4: Set the top device to no snapshot, and inspect the filesystem for results, if desired. | ||
− | <nowiki>echo 0 $(blockdev --getsize /dev/loop2) linear /dev/loop2 0 | dmsetup load top | + | <nowiki>echo 0 $(blockdev --getsize /dev/loop2) linear /dev/loop2 0 | dmsetup load top |
− | dmsetup resume top | + | dmsetup resume top |
− | mkdir root | + | mkdir root |
− | mount /dev/mapper/top root | + | mount /dev/mapper/top root |
− | cd root | + | cd root |
− | chroot .</nowiki> | + | chroot .</nowiki> |
Step 5: Clean up. | Step 5: Clean up. | ||
− | <nowiki>cd .. | + | <nowiki>cd .. |
− | umount root | + | umount root |
− | dmsetup remove top | + | dmsetup remove top |
− | dmsetup remove orig | + | dmsetup remove orig |
− | losetup -d /dev/loop2 | + | losetup -d /dev/loop2 |
− | losetup -d /dev/loop3 | + | losetup -d /dev/loop3 |
− | umount squashfs/</nowiki> | + | umount squashfs/</nowiki> |
Step 6: Copy the root filesystem image back into the squashfs image, you may need -noappend | Step 6: Copy the root filesystem image back into the squashfs image, you may need -noappend | ||
− | <nowiki>mksquashfs ext3fs.img /run/media/*/LIVE/LiveOS/squashfs.img</nowiki> | + | <nowiki>mksquashfs ext3fs.img /run/media/*/LIVE/LiveOS/squashfs.img</nowiki> |
Revision as of 18:31, 16 August 2012
It turns out that it is possible to merge down the persistent overlay into the base image, if you have access to another OS installation and sufficient disk space. I like that result better than just having to increase the overlay size without bounds.
Tested and working on Fedora 17, all commands as root. You will need disk space sufficient for the uncompressed size of the root filesystem, 4 GB in the case of Fedora 17 LiveCD/USB. I assume only one image and one user on the machine.
Step 1: Get access to read-write base image, note that I got loop2 and loop3 here, YMMV.
mkdir squashfs mount -o loop /run/media/*/LIVE/LiveOS/squashfs.img squashfs/ cp squashfs/LiveOS/ext3fs.img .
Step 2: Set up loopback and device mapper devices for persistent overlay, base device mapper and snapshot.
losetup -f ext3fs.img losetup -f /run/media/*/LIVE/LiveOS/overlay-* echo 0 $(blockdev --getsize /dev/loop2) linear /dev/loop2 0 |dmsetup create orig echo 0 $(blockdev --getsize /dev/mapper/orig) snapshot /dev/mapper/orig /dev/loop3 p 8 | dmsetup create top
Step 3: Stop the snapshot device and merge the snapshot with the base
dmsetup suspend top echo 0 $(blockdev --getsize /dev/loop2) snapshot-merge /dev/loop2 /dev/loop3 p 8 | dmsetup create mergeomatic && dmsetup status mergeomatic dmsetup status dmsetup remove mergeomatic
Step 4: Set the top device to no snapshot, and inspect the filesystem for results, if desired.
echo 0 $(blockdev --getsize /dev/loop2) linear /dev/loop2 0 | dmsetup load top dmsetup resume top mkdir root mount /dev/mapper/top root cd root chroot .
Step 5: Clean up.
cd .. umount root dmsetup remove top dmsetup remove orig losetup -d /dev/loop2 losetup -d /dev/loop3 umount squashfs/
Step 6: Copy the root filesystem image back into the squashfs image, you may need -noappend
mksquashfs ext3fs.img /run/media/*/LIVE/LiveOS/squashfs.img