[arch-releng] [DRAFT] [archiso] Add archiso_shutdown hook.
Gerardo Exequiel Pozzi
vmlinuz386 at yahoo.com.ar
Fri Aug 26 01:49:01 EDT 2011
On 08/24/2011 08:23 PM, Gerardo Exequiel Pozzi wrote:
> STATUS:
> Works for standard boot and with cow_device :)
> TODO:
> Testing needed for archiso_loop_mnt and archiso_pxe_nbd
> Also for copytoram=y, and mix of options/hooks.
> NEEDS:
> This commit [#2] in initscripts to work (no release at this time).
> Also this other [#3] for mkinitcpio (fix /run that is mounted as noexec)
>
> This hook is based on work from Tom Gundersen[#1], but adapted for archiso things.
>
> Motivation for this is for unmount property all filesystem, mostly for dm-snapshot persistent.
>
> [#1] http://mailman.archlinux.org/pipermail/arch-projects/2011-July/001549.html
> [#2] http://projects.archlinux.org/initscripts.git/commit/?id=1fa7b4b453e96533ae1db3630031285e5fc302b3
> [#3] http://mailman.archlinux.org/pipermail/arch-projects/2011-August/001749.html
> +
> +# Lazy unmount /oldroot and all things inside.
> +umount -l /oldroot
> +
> +# Remove all dm-snapshot devices.
> +dmsetup remove_all
> +
> +# Detach each loop device in reverse order (archiso start from 100 to N).
> +for _lup in $(ls -r /dev/loop???); do
> + losetup -d ${_lup}
> +done
> +
>
@Thomas: If you do not want lazy unmount, then these are the commands
needed.
# /oldroot depends on things inside /oldroot/run/archiso...
mkdir /oldrun
mount --move /oldroot/run /oldrun
# Unmount all mounts now.
umount $(mount | awk '$3 ~/^\/oldroot/ {print $3}' | sort -r)
# Remove all dm-snapshot devices.
dmsetup remove_all
# Remove all loopback devices made for dm-snapshots devs, other misc
loops like pure squashfs images and unmount/detach *.fs.sfs images.
for _lup in $(ls -r /dev/loop???); do
if ! losetup -d ${_lup} 2> /dev/null; then
umount -d ${_lup}
fi
done
# Finally unmount the "cowspace" device and boot device.
umount /oldrun/archiso/cowspace
umount /oldrun/archiso/bootmnt
All things freed and cleaned :)
--
Gerardo Exequiel Pozzi
\cos^2\alpha + \sin^2\alpha = 1
More information about the arch-releng
mailing list