Talk:LiveOS image: Difference between revisions
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> | ||