[arch-releng] [PATCH 11/12] [archiso] Update archiso_shutdown hook

Gerardo Exequiel Pozzi vmlinuz386 at yahoo.com.ar
Wed Feb 22 22:30:50 EST 2012


* Add libraries from /usr/lib and /sbin/losetup.
* Use used_block_devices to detach loop devices.

Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386 at yahoo.com.ar>
---
 archiso/archiso_shutdown       |   13 +++++--------
 archiso/hooks/archiso_shutdown |   10 +++++-----
 2 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/archiso/archiso_shutdown b/archiso/archiso_shutdown
index 26220a6..c430014 100644
--- a/archiso/archiso_shutdown
+++ b/archiso/archiso_shutdown
@@ -10,10 +10,8 @@ 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 devices
-# other misc loops like used for pure squashfs images
-# and unmount/detach *.fs.sfs images.
-for _lup in $(ls -r /dev/loop[1-9][0-9][0-9]); do
+# Remove all loopback devices.
+for _lup in $(grep ^/dev/loop /oldrun/archiso/used_block_devices | tac); do
     if ! losetup -d ${_lup} 2> /dev/null; then
         umount -d ${_lup}
     fi
@@ -24,11 +22,10 @@ umount /oldrun/archiso/cowspace
 
 # Unmount boot device if needed (no copytoram=y used)
 if [[ ! -d /oldrun/archiso/copytoram ]]; then
-    umount /oldrun/archiso/bootmnt
-    # Detach img_loop= and unmount img_dev= (archiso_loop_mnt hook)
-    if [[ -f /oldrun/archiso/img_dev_loop ]]; then
-        losetup -d $(cat /oldrun/archiso/img_dev_loop)
+    if [[ -d /oldrun/archiso/img_dev ]]; then
         umount /oldrun/archiso/img_dev
+    else
+        umount /oldrun/archiso/bootmnt
     fi
     if [[ -f /oldrun/archiso/nbd_client.pid ]]; then
         nbd-client -d /dev/nbd0
diff --git a/archiso/hooks/archiso_shutdown b/archiso/hooks/archiso_shutdown
index 1cc6e0e..1b2689b 100644
--- a/archiso/hooks/archiso_shutdown
+++ b/archiso/hooks/archiso_shutdown
@@ -2,15 +2,15 @@ run_hook ()
 {
     msg -n ":: Creating shutdown ramfs..."
 
-    mkdir -p /run/initramfs/usr/bin
-    mkdir /run/initramfs/usr/sbin
-    mkdir /run/initramfs/bin
-    mkdir /run/initramfs/sbin
-    mkdir /run/initramfs/lib
+    for _dir in bin lib sbin usr/bin usr/lib usr/sbin; do
+        mkdir -p /run/initramfs/${_dir}
+    done
     cp /bin/busybox /run/initramfs/bin/
     cp /lib/ld-* /run/initramfs/lib/
     cp /lib/lib* /run/initramfs/lib/
+    cp /usr/lib/lib* /run/initramfs/usr/lib/
     cp /sbin/dmsetup /run/initramfs/sbin/
+    cp /sbin/losetup /run/initramfs/sbin/
     if [[ -x /bin/nbd-client ]]; then
         cp /bin/nbd-client /run/initramfs/bin/
     fi
-- 
1.7.9.1



More information about the arch-releng mailing list