]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* util/grub-install.in: New option --efi-directory.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Wed, 18 Apr 2012 20:43:55 +0000 (22:43 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Wed, 18 Apr 2012 20:43:55 +0000 (22:43 +0200)
ChangeLog
util/grub-install.in

index 0cece185e36e75e546655dc5fee9ea8cfe5d2bc8..eec251552c067e52b0a945a57d5e72f0519567d1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2012-04-18  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * util/grub-install.in: New option --efi-directory.
+
 2012-04-17  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/loader/i386/linux.c (allocate_pages): Overwrite low memory
index 8d4b55e58e2ff7037145f40d7e97f400b48eae9a..4d47c3c75159e00ddb1f1123d2d244181e586d55 100644 (file)
@@ -111,6 +111,7 @@ usage () {
     print_option_help "--no-nvram" "$(gettext "don't update the \`boot-device' NVRAM variable. This option is only available on IEEE1275 targets.")"
     print_option_help  "--removable" "$(gettext "the installation device is removable. This option is only available on EFI.")"
     print_option_help  "--bootloader-id=$(gettext "ID")" "$(gettext "the ID of bootloader. This option is only available on EFI.")"
+    print_option_help "--efi-directory=$(gettext "DIR")" "$(gettext "use DIR as the EFI System Partition root.")"
 echo
 gettext "INSTALL_DEVICE must be system device filename.";echo
 echo
@@ -134,6 +135,7 @@ argument () {
 
 allow_floppy=""
 force_file_id=
+efidir=
 
 # Check the arguments.
 while test $# -gt 0
@@ -174,6 +176,11 @@ do
     --boot-directory=*)
        bootdir="`echo "$option" | sed 's/--boot-directory=//'`" ;;
 
+    --efi-directory)
+       efidir="`argument $option "$@"`"; shift;;
+    --efi-directory=*)
+       efidir="`echo "$option" | sed 's/--efi-directory=//'`" ;;
+
     --directory | -d)
        source_dir="`argument $option "$@"`"; shift;;
     --directory=*)
@@ -397,37 +404,40 @@ fi
 
 if [ x"$grub_modinfo_platform" = xefi ]; then
     # Find the EFI System Partition.
-    efidir=
-    if test -d "${bootdir}/efi"; then
-       install_device="`"$grub_probe" --target=device --device-map= "${bootdir}/efi"`"
-        # Is it a mount point?
-       if test "x$install_device" != "x`"$grub_probe" --target=device --device-map= "${bootdir}"`"; then
-           efidir="${bootdir}/efi"
-       fi
-    elif test -d "${bootdir}/EFI"; then
-       install_device="`"$grub_probe" --target=device --device-map= "${bootdir}/EFI"`"
-        # Is it a mount point?
-       if test "x$install_device" != "x`"$grub_probe" --target=device --device-map= "${bootdir}"`"; then
-           efidir="${bootdir}/EFI"
-       fi
-    elif test -n "$rootdir" && test "x$rootdir" != "x/"; then
+    if test -n "$efidir"; then
+       install_device="`"$grub_probe" --target=device --device-map= "${efidir}"`"
+    else
+       if test -d "${bootdir}/efi"; then
+           install_device="`"$grub_probe" --target=device --device-map= "${bootdir}/efi"`"
+            # Is it a mount point?
+           if test "x$install_device" != "x`"$grub_probe" --target=device --device-map= "${bootdir}"`"; then
+               efidir="${bootdir}/efi"
+           fi
+       elif test -d "${bootdir}/EFI"; then
+           install_device="`"$grub_probe" --target=device --device-map= "${bootdir}/EFI"`"
+            # Is it a mount point?
+           if test "x$install_device" != "x`"$grub_probe" --target=device --device-map= "${bootdir}"`"; then
+               efidir="${bootdir}/EFI"
+           fi
+       elif test -n "$rootdir" && test "x$rootdir" != "x/"; then
         # The EFI System Partition may have been given directly using
         # --root-directory.
-       install_device="`"$grub_probe" --target=device --device-map= "${rootdir}"`"
+           install_device="`"$grub_probe" --target=device --device-map= "${rootdir}"`"
         # Is it a mount point?
-       if test "x$install_device" != "x`"$grub_probe" --target=device --device-map= "${rootdir}/.."`"; then
-           efidir="${rootdir}"
+           if test "x$install_device" != "x`"$grub_probe" --target=device --device-map= "${rootdir}/.."`"; then
+               efidir="${rootdir}"
+           fi
        fi
-    fi
-    
-    if test -n "$efidir"; then
-       efi_fs=`"$grub_probe" --target=fs "--device-map=${device_map}" "${efidir}"`
-       if test "x$efi_fs" = xfat; then :; else
-           gettext_printf "%s doesn't look like an EFI partition.\n" "${efidir}" 1>&2
-           efidir=
+
+       if test -n "$efidir"; then
+           efi_fs=`"$grub_probe" --target=fs "--device-map=${device_map}" "${efidir}"`
+           if test "x$efi_fs" = xfat; then :; else
+               gettext_printf "%s doesn't look like an EFI partition.\n" "${efidir}" 1>&2
+               efidir=
+           fi
        fi
     fi
-    
+
     if test -n "$efidir"; then
         # The EFI specification requires that an EFI System Partition must
         # contain an "EFI" subdirectory, and that OS loaders are stored in