X-Git-Url: https://code.delx.au/refind/blobdiff_plain/32ddcb84670b3b15693749b9197c93390ea667b9..ddf4d9b9c4ec448514742816534787de1c07879c:/refind-install
diff --git a/refind-install b/refind-install
index 37fa811..5936dc3 100755
--- a/refind-install
+++ b/refind-install
@@ -39,6 +39,11 @@
# Revision history:
#
+# 0.10.5 -- More improvement to handling of disks (other than /dev/[sh]d? disks).
+# 0.10.4 -- Improved handling of disks (other than /dev/[sh]d? disks).
+# 0.10.2 -- Improved Secure Boot detection in Linux, fixed --usedefault in OS X,
+# and fixed bug that could cause mountesp to be installed as a FILE
+# called /usr/local/bin in OS X.
# 0.10.1 -- Improve extraction of default kernel options from /proc/cmdline.
# Add support for AMD64 (aka AARCH64, aa64) platform. Added
# warning when --alldrivers used without --usedefault.
@@ -791,7 +796,7 @@ SetupMacHfs() {
ProductName
rEFInd
ProductVersion
- 0.10.1
+ 0.10.5
ENDOFHERE
@@ -862,7 +867,8 @@ InstallOnOSX() {
DetermineTargetDir
CheckForSIP
CopyRefindFiles
- cp "$ThisDir/mountesp" /usr/local/bin &> /dev/null
+ mkdir -p /usr/local/bin &> /dev/null
+ cp "$ThisDir/mountesp" /usr/local/bin/ &> /dev/null
if [[ $InstallToEspOnMac == "1" && -z "$TargetPart" ]] ; then
bless --mount "$InstallDir" --setBoot --file "$InstallDir/$TargetDir/$Refind" --shortform
elif [[ "$TargetDir" != "/EFI/BOOT" ]] ; then
@@ -1048,13 +1054,15 @@ ReSignBinaries() {
# and EspFilesystem the filesystem (always "vfat")
FindLinuxESP() {
echo "The ESP doesn't seem to be mounted! Trying to find it...."
+ local Name
local Drive
local PartNum
local TableType
local DmStatus
local SkipIt
local Dmraid
- for Drive in `ls /dev/[sh]d?` ; do
+ for Name in `lsblk -r | grep disk | cut -f 1 -d " "` ; do
+ Drive="/dev/$Name"
SkipIt=0
Dmraid=`which dmraid 2> /dev/null`
if [ -x "$Dmraid" ] ; then
@@ -1105,7 +1113,13 @@ FindMountedESP() {
if [[ $EspFilesystem != 'vfat' ]] ; then
echo "$RootDir/$InstallDir doesn't seem to be on a VFAT filesystem. The ESP must be"
echo "mounted at $RootDir/boot or $RootDir/boot/efi and it must be VFAT! Aborting!"
- exit 1
+ if [[ -d /sys/firmware/efi ]] ; then
+ exit 1
+ else
+ echo "The computer appears to be running in BIOS mode and has no ESP. You should"
+ echo "create an ESP, and ideally boot in EFI mode, before installing rEFInd."
+ exit 0
+ fi
fi
echo "ESP was found at $InstallDir using $EspFilesystem"
} # FindMountedESP
@@ -1114,10 +1128,25 @@ FindMountedESP() {
# If this fails, sets Problems=1
AddBootEntry() {
local PartNum
+ local InstallDisk
+ local InstallPart
+ local Name
Efibootmgr=`which efibootmgr 2> /dev/null`
if [[ "$Efibootmgr" ]] ; then
- InstallDisk=`grep "$InstallDir" /etc/mtab | cut -d " " -f 1 | cut -c 1-8`
- PartNum=`grep "$InstallDir" /etc/mtab | cut -d " " -f 1 | cut -c 9-10`
+ InstallPart=`grep "$InstallDir" /etc/mtab | cut -d " " -f 1`
+ for Name in `lsblk -r | grep disk | cut -f 1 -d " "` ; do
+ if [[ $InstallPart == *"$Name"* ]] ; then
+ InstallDisk="/dev/"$Name
+ PartNum=${InstallPart#$InstallDisk}
+ PartNum=`echo "${PartNum//[!0-9]/}"`
+ break
+ fi
+ done
+ if [[ -z $InstallDisk || -z $PartNum ]] ; then
+ echo "Could not identify ESP in AddBootEntry()!"
+ Problems=1
+ return 1
+ fi
EntryFilename="$TargetDir/$Refind"
EfiEntryFilename=`echo ${EntryFilename//\//\\\}`
EfiEntryFilename2=`echo ${EfiEntryFilename} | sed s/\\\\\\\\/\\\\\\\\\\\\\\\\/g`