Implement setup-ivi-clone
[platform/adaptation/setup-scripts.git] / setup-ivi-boot
index 09336f0..428443b 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh -euf
 
-# Copyright 2013 Intel Corporation
+# Copyright 2013-2014 Intel Corporation
 # Author: Artem Bityutskiy
 # License: GPLv2
 
@@ -10,13 +10,18 @@ VER="1.0"
 srcdir="$(readlink -ev -- ${0%/*})"
 PATH="/usr/share/setup-ivi:$srcdir:$PATH"
 
-. "$srcdir/setup-ivi-sh-functions"
-. "$srcdir/installerfw-sh-functions"
+if [ -f "$srcdir/setup-ivi-sh-functions" ]; then
+       . "$srcdir/setup-ivi-sh-functions"
+       . "$srcdir/installerfw-sh-functions"
+else
+       .  /usr/share/setup-ivi/setup-ivi-sh-functions
+       .  /usr/share/setup-ivi/installerfw-sh-functions
+fi
 
 # This is a small trick which I use to make sure my scripts are portable -
 # check if 'dash' is present, and if yes - use it.
 if can_switch_to_dash; then
-       exec dash -euf "$srcdir/$PROG" "$@"
+       exec dash -euf -- "$srcdir/$PROG" "$@"
        exit $?
 fi
 
@@ -34,7 +39,7 @@ install_gummiboot()
        fi
 
        # Install gummiboot
-       mkdir -p $verbose "$installdir" >&2
+       mkdir -p $verbose -- "$installdir" >&2
        [ -f "$gummiboot_path/gummibootia32.efi" ] && \
                cp $verbose "$gummiboot_path/gummibootia32.efi" \
                            "$installdir/bootia32.efi" >&2
@@ -47,10 +52,9 @@ install_gummiboot()
 
 install_extlinux()
 {
-       verbose "installing extlinux to $bootdir"
-
        local installdir="$bootdir/extlinux"
        local extlinux="extlinux"
+       local output
 
        # Check if extlinux is available
         if ! command -v "extlinux" >/dev/null 2>&1; then
@@ -68,11 +72,13 @@ install_extlinux()
                      "variable is not defined"
 
        # Install extlinux
-       mkdir -p $verbose "$installdir" >&2
-       "$extlinux" --device "$boot_devnode" -i "$installdir" || \
-               fatal "cannot install extlinux to \"$installdir\"" \
-                     "(requires extlinux version 5 or greater)"
-
+       verbose "installing extlinux to $bootdir, boot device node is" \
+               "\"$boot_devnode\""
+       mkdir -p $verbose -- "$installdir" >&2
+       output="$("$extlinux" --device "$boot_devnode" -i "$installdir" 2>&1)" \
+               || fatal "cannot install extlinux to \"$installdir\" (note," \
+                        "extlinux version 5 or greater is required)" \
+                        "${br}${output}"
 
        # Get device node name for the boot disk
        local mbr_devnode
@@ -83,9 +89,12 @@ install_extlinux()
                      "variable is not defined"
 
        # Install the MBR part of extlinux
-       local mbr_bin="$(installerfw_mnt_prefix "/usr/share/syslinux/gptmbr.bin")"
-       dd if="$mbr_bin" of="$mbr_devnode" count=1 || \
-               fatal "cannot install MBR: dd if=$mbr_bin of=$mbr_devnode"
+       local mbr_bin="$(installerfw_mnt_prefix \
+                        "/usr/share/syslinux/gptmbr.bin")"
+       verbose "setting up MBR, writing \"$mbr_bin\" to \"$mbr_devnode\""
+       output="$(dd if="$mbr_bin" of="$mbr_devnode" count=1 2>&1)" || \
+               fatal "cannot install MBR, dd if=$mbr_bin of=$mbr_devnode" \
+                     "failed${br}${output}"
 
        verbose "installed extlinux to $bootdir"
 }
@@ -158,7 +167,7 @@ else
 fi
 
 # Create bootloader entries for each kernel
-kernels="$(ls -1 "$bootdir" | LC_ALL=C grep "^vmlinuz-" | sort -r)"
+kernels="$(ls -1 "$bootdir" | LC_ALL=C grep -- "^vmlinuz-" | sort -r)"
 
 [ -n "$kernels" ] || \
        fatal "no kernels (vmlinuz-*) found in \"$bootdir\""