X-Git-Url: https://code.delx.au/refind/blobdiff_plain/14264b33ab38c5889586a647fa383497a75ff7e9..999e9b76afa9e57b16b54da313a46bdcf08dc412:/install.sh diff --git a/install.sh b/install.sh index 955572e..67df9ee 100755 --- a/install.sh +++ b/install.sh @@ -35,6 +35,7 @@ # # Revision history: # +# 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 # 0.7.6 -- Added --ownhfs {device-filename} option @@ -248,13 +249,16 @@ CopyKeys() { # 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 `which blkid` ]] ; then + 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 =` + BootFS=`$Blkid -o export $BootPart 2> /dev/null | grep TYPE= | cut -f 2 -d =` DriverType="" case $BootFS in ext2 | ext3) DriverType="ext2" @@ -442,7 +446,27 @@ MountDefaultTarget() { MountOSXESP() { # Identify the ESP. Note: This returns the FIRST ESP found; # if the system has multiple disks, this could be wrong! - Temp=`diskutil list | grep " EFI " | grep -o 'disk.*'` + 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 + }' ) + if [ -z $Temp ]; then + echo "Warning: root device doesn't have an EFI partition" + fi + else + echo "Warning: root device could not be found" + fi + if [ -z $Temp ]; then + Temp=$(diskutil list | sed -n -E '/^ *[0-9]+:[ ]+EFI EFI[ ]+[0-9.]+ [A-Z]+[ ]+(disk[0-9]+s[0-9]+)$/ { s//\1/p + q + }' ) + + if [ -z $Temp ]; then + echo "Could not find an EFI partition. Aborting!" + exit 1 + fi + fi Esp=/dev/`echo $Temp` # If the ESP is mounted, use its current mount point.... Temp=`df -P | grep "$Esp"` @@ -470,7 +494,6 @@ SetupMacHfs() { cp -n "$InstallDir/$TargetDir/boot.efi" "$InstallDir/$TargetDir/boot.efi-backup" &> /dev/null ln -f "$InstallDir/$TargetDir/$1" "$InstallDir/$TargetDir/boot.efi" touch "$InstallDir/mach_kernel" - cp -n "$RefindDir/icons/os_refind.icns" "$InstallDir/.VolumeIcon.icns" &> /dev/null rm "$InstallDir/$TargetDir/SystemVersion.plist" &> /dev/null cat - << ENDOFHERE >> "$InstallDir/$TargetDir/SystemVersion.plist" @@ -698,9 +721,11 @@ FindLinuxESP() { local TableType local DmStatus local SkipIt + local Dmraid for Drive in `ls /dev/[sh]d?` ; do SkipIt=0 - if [ -x `which dmraid` ] ; then + Dmraid=`which dmraid 2> /dev/null` + if [ -x "$Dmraid" ] ; then DmStatus=`dmraid -r | grep $Drive` if [ -n "$DmStatus" ] ; then echo "$Drive seems to be part of a RAID array; skipping!"