]> code.delx.au - refind/blobdiff - install.sh
New "Reboot to Firmware User Interface" feature.
[refind] / install.sh
index 1e668710b3e0706d6d5963947f722f8247f2bcc1..1d722e84570fc5a3dd5e04c5c05c9123bf8b5d4d 100755 (executable)
@@ -29,6 +29,8 @@
 #
 # Revision history:
 #
+# 0.6.9   -- Install gptsync on Macs
+# 0.6.8   -- Bug fix: ESP scan now uses "uniq".
 # 0.6.6   -- Bug fix: Upgrade drivers when installed to EFI/BOOT. Also enable
 #            copying shim.efi and MokManager.efi over themselves.
 # 0.6.4   -- Copies ext2 driver rather than ext4 driver for ext2/3fs
@@ -243,6 +245,20 @@ CopyDrivers() {
    fi
 }
 
+# Copy tools (currently only gptsync, and that only on Macs) to the EFI/tools
+# directory on the ESP. Must be passed a suitable architecture code (ia32
+# or x64).
+CopyTools() {
+   mkdir -p $InstallDir/EFI/tools
+   if [[ $OSName == 'Darwin' ]] ; then
+      cp -f $RefindDir/tools_$1/gptsync_$1.efi $InstallDir/EFI/tools/
+      if [[ -f $InstallDir/EFI/tools/gptsync.efi ]] ; then
+         mv $InstallDir/EFI/tools/gptsync.efi $InstallDir/EFI/tools/gptsync.efi-disabled
+         echo "Found old gptsync.efi; disabling it by renaming it to gptsync.efi-disabled"
+      fi
+   fi
+} # CopyTools()
+
 # Copy the rEFInd files to the ESP or OS X root partition.
 # Sets Problems=1 if any critical commands fail.
 CopyRefindFiles() {
@@ -266,8 +282,10 @@ CopyRefindFiles() {
       elif [[ $Upgrade == 1 ]] ; then
          if [[ $Platform == 'EFI64' ]] ; then
             CopyDrivers x64
+            CopyTools x64
          else
             CopyDrivers ia32
+            CopyTools ia32
          fi
       fi
       Refind=""
@@ -278,6 +296,7 @@ CopyRefindFiles() {
          Problems=1
       fi
       CopyDrivers x64
+      CopyTools x64
       Refind="refind_x64.efi"
       CopyKeys
       if [[ $ShimSource != "none" ]] ; then
@@ -299,6 +318,7 @@ CopyRefindFiles() {
          Problems=1
       fi
       CopyDrivers ia32
+      CopyTools ia32
       Refind="refind_ia32.efi"
    else
       echo "Unknown platform! Aborting!"
@@ -594,7 +614,7 @@ FindLinuxESP() {
    fi
    InstallDir=`echo $EspLine | cut -d " " -f 6`
    if [[ -n $InstallDir ]] ; then
-      EspFilesystem=`grep $InstallDir /etc/mtab | cut -d " " -f 3`
+      EspFilesystem=`grep $InstallDir /etc/mtab | uniq | cut -d " " -f 3`
    fi
    if [[ $EspFilesystem != 'vfat' ]] ; then
       echo "$RootDir/boot/efi doesn't seem to be on a VFAT filesystem. The ESP must be"