[arch-releng] [PATCH 1/2] [archiso] Add a new function _mnt_dev(), use it for mounting archisodevice.

Gerardo Exequiel Pozzi vmlinuz386 at yahoo.com.ar
Tue Aug 23 03:42:27 EDT 2011


Separate this code from main mount hook, and make it more generic.

_mnt_dev(device, mountpoint) ->
    wait for device and mount, launch a shell if something goes wrong.

Signed-off-by: Gerardo Exequiel Pozzi <vmlinuz386 at yahoo.com.ar>
---
 archiso/hooks/archiso |   72 ++++++++++++++++++++++++++++--------------------
 1 files changed, 42 insertions(+), 30 deletions(-)

diff --git a/archiso/hooks/archiso b/archiso/hooks/archiso
index c973ffc..d846689 100644
--- a/archiso/hooks/archiso
+++ b/archiso/hooks/archiso
@@ -77,6 +77,45 @@ _mnt_sfs() {
     fi
 }
 
+# args: device, mountpoint
+_mnt_dev() {
+    local dev="${1}"
+    local mnt="${2}"
+    local opt="${3}"
+
+    local fstype fserror
+
+    msg ":: Mounting '${dev}' to '${mnt}'"
+
+    msg ":: Waiting for '${dev}' device..."
+    while ! poll_device "${dev}" 30; do
+        echo "ERROR: '${dev}' device did not show up after 30 seconds..."
+        echo "   Falling back to interactive prompt"
+        echo "   You can try to fix the problem manually, log out when you are finished"
+        launch_interactive_shell
+    done
+
+    fstype=$(blkid -o value -s TYPE -p "${dev}" 2> /dev/null)
+    if [[ -n "${fstype}" ]]; then
+        if mount ${opt} -t "${fstype}" "${dev}" "${mnt}"; then
+            msg ":: Device '${dev}' mounted successfully."
+            fserror=0
+        else
+            echo "ERROR; Failed to mount '${dev}' (FS is ${fstype})"
+            fserror=1
+        fi
+    else
+        echo "ERROR: '${dev}' found, but the filesystem type is unknown."
+        fserror=1
+    fi
+
+    if [[ ${fserror} -eq 1 ]]; then
+        echo "   Falling back to interactive prompt"
+        echo "   You can try to fix the problem manually, log out when you are finished"
+        launch_interactive_shell
+    fi
+}
+
 _verify_checksum() {
     local _status
     cd "/bootmnt/${archisobasedir}"
@@ -86,7 +125,6 @@ _verify_checksum() {
     return ${_status}
 }
 
-
 run_hook() {
     [[ -z "${arch}" ]] && arch="$(uname -m)"
     [[ -z "${cowspace_size}" ]] && cowspace_size="75%"
@@ -108,38 +146,12 @@ run_hook() {
 # args: /path/to/newroot
 archiso_mount_handler() {
     local newroot="${1}"
-    local fstype fserror
 
     _init_loop_dev
 
-    msg ":: Waiting for boot device..."
-    while ! poll_device "${archisodevice}" 30; do
-        echo "ERROR: boot device didn't show up after 30 seconds..."
-        echo "   Falling back to interactive prompt"
-        echo "   You can try to fix the problem manually, log out when you are finished"
-        launch_interactive_shell
-    done
-
-    fstype=$(blkid -o value -s TYPE -p "${archisodevice}" 2> /dev/null)
-    if [[ -n "${fstype}" ]]; then
-        if mount -r -t "${fstype}" "${archisodevice}" /bootmnt; then
-            if [[ -f "${aitab}" ]]; then
-                msg ":: Mounted archiso volume successfully."
-                fserror=0
-            else
-                echo "ERROR: Mounting was successful, but the '${aitab}' file does not exist."
-                fserror=1
-            fi
-        else
-            echo "ERROR; Failed to mount '${archisodevice}' (FS is ${fstype})"
-            fserror=1
-        fi
-    else
-        echo "ERROR: '${archisodevice}' found, but the filesystem type is unknown."
-        fserror=1
-    fi
-
-    if [[ ${fserror} -eq 1 ]]; then
+    _mnt_dev "${archisodevice}" "/bootmnt" "-r"
+    if [[ ! -f "${aitab}" ]]; then
+        echo "ERROR: '${aitab}' file does not exist."
         echo "   Falling back to interactive prompt"
         echo "   You can try to fix the problem manually, log out when you are finished"
         launch_interactive_shell
-- 
1.7.6



More information about the arch-releng mailing list