From: srs5694 Date: Mon, 8 Dec 2014 01:01:43 +0000 (-0500) Subject: Changed install.sh to better support Yosemite. X-Git-Url: https://code.delx.au/refind/commitdiff_plain/feac8e01e8dd381f6d3713cee73c8865561c96d5 Changed install.sh to better support Yosemite. --- diff --git a/debian/changelog b/debian/changelog index 63df1ba..96c84a7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,14 @@ +refind (0.8.4-0ppa1) trusty; urgency=medium + + * Version bump + + -- Rod Smith Sun, 07 Dec 2014 12:28:56 -0400 + refind (0.8.3-0ppa1) trusty; urgency=medium * Version bump - -- Rod Smith Sun, 06 Jul 2014 12:28:56 -0400 + -- Rod Smith Sun, 06 Jul 2014 12:28:56 -0400 refind (0.8.2-0ppa3) trusty; urgency=medium diff --git a/filesystems/fsw_efi.c b/filesystems/fsw_efi.c index dd5d7c5..f2cb4fe 100644 --- a/filesystems/fsw_efi.c +++ b/filesystems/fsw_efi.c @@ -78,7 +78,7 @@ EFI_GUID gEfiFileSystemVolumeLabelInfoIdGuid = EFI_FILE_SYSTEM_VOLUME_LABEL_INFO /** Helper macro for stringification. */ #define FSW_EFI_STRINGIFY(x) #x /** Expands to the EFI driver name given the file system type name. */ -#define FSW_EFI_DRIVER_NAME(t) L"rEFInd 0.8.3 " FSW_EFI_STRINGIFY(t) L" File System Driver" +#define FSW_EFI_DRIVER_NAME(t) L"rEFInd 0.8.4 " FSW_EFI_STRINGIFY(t) L" File System Driver" // function prototypes diff --git a/gptsync/gptsync.h b/gptsync/gptsync.h index 0f9835e..c35740a 100644 --- a/gptsync/gptsync.h +++ b/gptsync/gptsync.h @@ -35,7 +35,7 @@ */ /* Changes copyright (c) 2013 Roderick W. Smith */ -#define VERSION L"0.8.3" +#define VERSION L"0.8.4" // // config diff --git a/install.sh b/install.sh index 50748d3..f5dae71 100755 --- a/install.sh +++ b/install.sh @@ -7,8 +7,8 @@ # ./install.sh [options] # # options include: -# "--esp" to install to the ESP rather than to the system's root -# filesystem. This is the default on Linux. +# "--notesp" to install to the OS X root filesystem rather than to the ESP. +# This option may not be used under Linux. # "--usedefault {devicefile}" to install as default # (/EFI/BOOT/BOOTX64.EFI and similar) to the specified device # (/dev/sdd1 or whatever) without registering with the NVRAM. @@ -35,6 +35,7 @@ # # Revision history: # +# 0.8.4 -- OS X default changed to install to ESP under /EFI/BOOT # 0.7.9 -- Fixed bug that caused errors if dmraid utility not installed # 0.7.7 -- Fixed bug that created mangled refind_linux.conf file; added ability # to locate and mount ESP on Linux, if it's not mounted @@ -89,18 +90,17 @@ AlwaysYes=0 # GetParams() { - InstallToEspOnMac=0 - if [[ $OSName == "Linux" ]] ; then - # Install the driver required to read /boot, if it's available - InstallDrivers="boot" - else - InstallDrivers="none" - fi + InstallToEspOnMac=1 + # Install the driver required to read Linux /boot, if it's available + # Note: Under OS X, this will be installed only if a Linux partition + # is detected, in which case the ext4fs driver will be installed. + InstallDrivers="boot" while [[ $# -gt 0 ]]; do case $1 in - --esp | --ESP) InstallToEspOnMac=1 + --notesp) InstallToEspOnMac=0 ;; --ownhfs) OwnHfs=1 + InstallToEspOnMac=0 TargetPart="$2" TargetDir=/System/Library/CoreServices shift @@ -112,6 +112,7 @@ GetParams() { shift ;; --root) RootDir="$2" + InstallToEspOnMac=0 shift ;; --localkeys) LocalKeys=1 @@ -126,7 +127,7 @@ GetParams() { ;; --yes) AlwaysYes=1 ;; - * ) echo "Usage: $0 [--esp | --usedefault {device-file} | --root {directory} |" + * ) echo "Usage: $0 [--notesp | --usedefault {device-file} | --root {dir} |" echo " --ownhfs {device-file} ]" echo " [--nodrivers | --alldrivers] [--shim {shim-filename}]" echo " [--localkeys] [--yes]" @@ -135,18 +136,10 @@ GetParams() { shift done - if [[ $InstallToEspOnMac == 1 && "$TargetDir" == '/EFI/BOOT' ]] ; then - echo "You may use --esp OR --usedefault, but not both! Aborting!" - exit 1 - fi if [[ "$RootDir" != '/' && "$TargetDir" == '/EFI/BOOT' ]] ; then echo "You may use --usedefault OR --root, but not both! Aborting!" exit 1 fi - if [[ "$RootDir" != '/' && $InstallToEspOnMac == 1 ]] ; then - echo "You may use --root OR --esp, but not both! Aborting!" - exit 1 - fi if [[ "$TargetDir" != '/System/Library/CoreServices' && "$OwnHfs" == '1' ]] ; then echo "If you use --ownhfs, you may NOT use --usedefault! Aborting!" exit 1 @@ -245,20 +238,43 @@ CopyKeys() { fi } # CopyKeys() +# Determine (or guess) the filesystem used on the Linux /boot filesystem. +# Store the result in the BootFS global variable. +SetBootFS() { + local Blkid + + Blkid=`which blkid 2> /dev/null` + BootFS="" + if [[ $OSName == 'Linux' && -x "$Blkid" ]] ; then + BootPart=`df /boot | grep dev | cut -f 1 -d " "` + BootFS=`$Blkid -o export $BootPart 2> /dev/null | grep TYPE= | cut -f 2 -d =` + fi + if [[ $OSName == 'Darwin' ]] ; then + # 0FC63DAF-8483-4772-8E79-3D69D8477DE4 = Linux filesystem + # BC13C2FF-59E6-4262-A352-B275FD6F7172 = Freedesktop $boot partition + # 933AC7E1-2EB4-4F13-B844-0E14E2AEF915 = Freedesktop Linux /home + # E6D6D379-F507-44C2-A23C-238F2A3DF928 = Linux LVM + # A19D880F-05FC-4D3B-A006-743F0F84911E = Linux RAID + # 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F = Linux swap + Temp=$(diskutil list | grep -i '0FC63DAF-8483-4772-8E79-3D69D8477DE4\|BC13C2FF-59E6-4262-A352-B275FD6F7172\|933AC7E1-2EB4-4F13-B844-0E14E2AEF915\|E6D6D379-F507-44C2-A23C-238F2A3DF928\|A19D880F-05FC-4D3B-A006-743F0F84911E\|0657FD6D-A4AB-43C4-84E5-0933C84B4F4F\|Linux') + BootFS="" + if [[ -n $Temp ]] ; then + echo "Found suspected Linux partition(s); installing ext4fs driver." + BootFS="ext4" + fi + fi +} # SetBootFS() + # Copy drivers from $RefindDir/drivers_$1 to $InstallDir/$TargetDir/drivers_$1, # honoring the $InstallDrivers condition. Must be passed a suitable # architecture code (ia32 or x64). CopyDrivers() { - local Blkid - - Blkid=`which blkid 2> /dev/null` if [[ $InstallDrivers == "all" ]] ; then mkdir -p "$InstallDir/$TargetDir/drivers_$1" cp "$ThisDir"/drivers_$1/*_$1.efi "$InstallDir/$TargetDir/drivers_$1/" 2> /dev/null cp "$RefindDir"/drivers_$1/*_$1.efi "$InstallDir/$TargetDir/drivers_$1/" 2> /dev/null - elif [[ "$InstallDrivers" == "boot" && -x "$Blkid" ]] ; then - BootPart=`df /boot | grep dev | cut -f 1 -d " "` - BootFS=`$Blkid -o export $BootPart 2> /dev/null | grep TYPE= | cut -f 2 -d =` + elif [[ "$InstallDrivers" == "boot" ]] ; then + SetBootFS DriverType="" case $BootFS in ext2 | ext3) DriverType="ext2" @@ -282,7 +298,7 @@ CopyDrivers() { cp "$RefindDir/drivers_$1/${DriverType}_$1.efi" "$InstallDir/$TargetDir/drivers_$1"/ 2> /dev/null fi fi -} +} # CopyDrivers() # 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 @@ -318,7 +334,7 @@ CopyRefindFiles() { if [[ $InstallDrivers == "all" ]] ; then cp -r "$RefindDir"/drivers_* "$InstallDir/$TargetDir/" 2> /dev/null cp -r "$ThisDir"/drivers_* "$InstallDir/$TargetDir/" 2> /dev/null - elif [[ $Upgrade == 1 ]] ; then + elif [[ $Upgrade == 1 || $InstallToEspOnMac == 1 ]] ; then if [[ $Platform == 'EFI64' ]] ; then CopyDrivers x64 CopyTools x64 @@ -328,6 +344,11 @@ CopyRefindFiles() { fi fi Refind="" + if [[ $Platform == 'EFI64' ]] ; then + Refind='bootx64.efi' + elif [[ $Platform == 'EFI32' ]] ; then + Refind='bootia32.efi' + fi CopyKeys elif [[ $Platform == 'EFI64' || $TargetDir == "/EFI/Microsoft/Boot" ]] ; then cp "$RefindDir/refind_x64.efi" "$InstallDir/$TargetDir/$TargetX64" @@ -432,7 +453,6 @@ MountDefaultTarget() { rmdir "$InstallDir" exit 1 fi - echo "UnmountEsp = $UnmountEsp" } # MountDefaultTarget() # @@ -448,9 +468,7 @@ MountOSXESP() { # if the system has multiple disks, this could be wrong! Temp=$(mount | sed -n -E "/^(\/dev\/disk[0-9]+s[0-9]+) on \/ \(.*$/s//\1/p") if [ $Temp ]; then - Temp=$(diskutil list $Temp | sed -n -E '/^ *[0-9]+:[ ]+EFI EFI[ ]+[0-9.]+ [A-Z]+[ ]+(disk[0-9]+s[0-9]+)$/ { s//\1/p - q - }' ) + Temp=$(diskutil list | grep " EFI " | grep -o 'disk.*' | head -n 1) if [ -z $Temp ]; then echo "Warning: root device doesn't have an EFI partition" fi @@ -514,10 +532,10 @@ ENDOFHERE # Sets Problems=1 if problems found during the installation. InstallOnOSX() { echo "Installing rEFInd on OS X...." - if [[ "$TargetDir" == "/EFI/BOOT" || "$OwnHfs" == '1' ]] ; then - MountDefaultTarget - elif [[ "$InstallToEspOnMac" == "1" ]] ; then + if [[ "$InstallToEspOnMac" == "1" ]] ; then MountOSXESP + elif [[ "$TargetDir" == "/EFI/BOOT" || "$OwnHfs" == '1' ]] ; then + MountDefaultTarget else InstallDir="$RootDir/" fi @@ -1057,11 +1075,20 @@ if [[ $OSName == 'Darwin' ]] ; then echo "The --localkeys option is not supported on OS X! Exiting!" exit 1 fi + if [[ $InstallToEspOnMac == 1 ]] ; then + TargetDir=/EFI/BOOT + TargetX64="bootx64.efi" + TargetIA32="bootia32.efi" + fi InstallOnOSX $1 elif [[ $OSName == 'Linux' ]] ; then InstallOnLinux else echo "Running on unknown OS; aborting!" + if [[ "$InstallToEspOnMac" == 0 ]] ; then + echo "The --notesp option is not supported on Linux! Exiting!" + exit 1 + fi fi if [[ $Problems ]] ; then diff --git a/refind.spec b/refind.spec index 6bbb945..4abdb99 100644 --- a/refind.spec +++ b/refind.spec @@ -1,6 +1,6 @@ Summary: EFI boot manager software Name: refind -Version: 0.8.3 +Version: 0.8.4 Release: 1%{?dist} Summary: EFI boot manager software License: GPLv3 @@ -159,6 +159,8 @@ fi # wiping out the just-updated files. %changelog +* Sun Dec 7 2014 R Smith - 0.8.4 +- Updated spec file for 0.8.4 * Sun Jul 6 2014 R Smith - 0.8.3 - Updated spec file for 0.8.3 * Sun Jun 8 2014 R Smith - 0.8.2 diff --git a/refind/main.c b/refind/main.c index 8685e30..700b7f1 100644 --- a/refind/main.c +++ b/refind/main.c @@ -175,7 +175,7 @@ static VOID AboutrEFInd(VOID) if (AboutMenu.EntryCount == 0) { AboutMenu.TitleImage = BuiltinIcon(BUILTIN_ICON_FUNC_ABOUT); - AddMenuInfoLine(&AboutMenu, L"rEFInd Version 0.8.3.4"); + AddMenuInfoLine(&AboutMenu, L"rEFInd Version 0.8.3.90"); AddMenuInfoLine(&AboutMenu, L""); AddMenuInfoLine(&AboutMenu, L"Copyright (c) 2006-2010 Christoph Pfisterer"); AddMenuInfoLine(&AboutMenu, L"Copyright (c) 2012-2014 Roderick W. Smith");