[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