为什么不能默认启用rEFInd启动?
我在OS X.在refind-install
脚本中,有一个正在运行的bless命令,但似乎不起作用:
elif [[ "$TargetDir" != "/EFI/BOOT" ]] ; then bless --setBoot --folder "$InstallDir/$TargetDir" --file "$InstallDir/$TargetDir/$Refind" echo BLESS COMMAND: bless --setBoot --folder "$InstallDir/$TargetDir" --file "$InstallDir/$TargetDir/$Refind" fi
我添加了额外的echo
线来查看命令的外观,这是输出:
BLESS COMMAND: bless --setBoot --folder /Volumes/efi///EFI/refind --file /Volumes/efi///EFI/refind/refind_x64.efi
我正在运行这样的安装脚本:
sudo ./refind-install --root /Volumes/efi
其中/ Volume / efi包含disk0s6上自定义EFI系统分区的根,而不是我MacBook的默认disk0s1 ESP。
知道为什么它不起作用以及如何默认启动rEFInd?
编辑:
好吧,我想我可能知道什么是错的。 所以,我能够通过将--root
选项替换为使用--usedefault
选项进行refind-install
来实现它,如下所示:
sudo ./refind-install --usedefault /dev/disk0s6
现在,接下来发生的是脚本忽略/dev/disk0s6
并继续安装rEFInd到/dev/disk0s1
,即主OS X ESP(这不是我想要的,但它可以工作)。
然后脚本继续运行另一个 bless命令:
if [[ $InstallToEspOnMac == "1" ]] ; then bless --mount "$InstallDir" --setBoot --file "$InstallDir/$TargetDir/$Refind" --shortform elif [[ "$TargetDir" != "/EFI/BOOT" ]] ; then
重新启动后,这可以正常工作,默认情况下rEFInd启动。 由于rEFInd被安装到OS X ESP分/EFI/BOOT/bootx64.efi
的默认/EFI/BOOT/bootx64.efi
,我有预感这是有效的。
但这不是我想要的。 我想在/dev/disk0s6
上安装refind,在/EFI/refind/
而不是/EFI/BOOT
。
编辑:
另请注意,使用--usedefault
选项时,安装脚本会将refind_aa64.efi
安装到OS X ESP(disk0s1)的/EFI/BOOT
中,但使用--root
选项安装到disk0s6时,脚本会安装refind_x86.efi
另外,我不确定是否可能在一个bless命令中使用--mount
选项而不是另一个是什么产生了区别。
编辑:
我能够将/ EFI / BOOT从disk0s1复制到disk0s6,然后运行与脚本中相同的--mount
bless命令,这样就可以了。
编辑:
好吧,我们越来越近了。 我修改了脚本,并进行了更改
elif [[ "$TargetDir" != "/EFI/BOOT" ]] ; then bless --setBoot --folder "$InstallDir/$TargetDir" --file "$InstallDir/$TargetDir/$Refind" fi
至
elif [[ "$TargetDir" != "/EFI/BOOT" ]] ; then bless --mount "$InstallDir" --setBoot --file "$InstallDir/$TargetDir/$Refind" fi
现在它按我的意愿工作:在我用--root
选项指定的挂载点的分区上重新安装到/EFI/refind
。 虽然这给了我正在寻找的结果,但是现在有一个小问题:在启动时最终到达rEFInd需要大约30秒或更长时间,由于某种原因这实际上很慢。 我要重置NVRAM并再试一次……
编辑
啊哈! 在重置NVRAM之前,我尝试在bless命令中添加--shortform
选项,并修复了上一次编辑中的滞后问题!
为什么第二个祝福命令处于–folder模式? 它似乎在–mount模式下工作得更好。
因此,目前,解决方案是修改脚本中的第二个bless命令,使其与第一个完全相同,因此脚本的一部分如下所示:
if [[ $InstallToEspOnMac == "1" ]] ; then bless --mount "$InstallDir" --setBoot --file "$InstallDir/$TargetDir/$Refind" --shortform elif [[ "$TargetDir" != "/EFI/BOOT" ]] ; then bless --mount "$InstallDir" --setBoot --file "$InstallDir/$TargetDir/$Refind" --shortform fi
我使用--root
选项进行refind-install
来指定目标分区的挂载点。
mkdir /Volumes/efi sudo mount -t msdos /dev/disk0s6 /Volumes/efi sudo ./refind-install --root /Volumes/efi
首先, – --root
选项不用于指定ESP; 它用于指定正常安装的根目录( /
)。 它适用于从Linux紧急系统安装rEFInd时使用,虽然它可以在OS X系统中使用(但在那里可能不是很有用,除了可能与--notesp
一起使用 – 但我没有测试过)。 因此,在尝试使用该选项时,您基本上是“咆哮错误的树”。
refind-install
脚本实际上没有任何明确的选项来将rEFInd安装到辅助ESP。 在Linux中,您可以通过在/boot
或/boot/efi
安装所需的ESP来控制ESP; 但是在OS X中,ESP通常不会安装,因此脚本会尝试查找ESP,如果您有多个ESP,则无法保证使用您想要的ESP。 在这种情况下,您几乎不得不回到手动安装,如下所述:
http://www.rodsbooks.com/refind/installing.html#osx
或者,您可以使用--ownhfs
将rEFInd安装到专用的HFS +卷。 请注意,有两个ESP不太可能有用。 我知道你说你想要两个ESP,但你没有说出你为什么要这样,而且在没有理由的情况下,我的建议是你忘了它,因为它可能没什么好处。 ESP 旨在跨操作系统共享。 有一个操作系统搞乱ESP上的另一个操作系统文件的危险,但保留备份应该使您能够从这些问题中恢复。
AFAIK, – 文件--folder
选项在安装到HFS +卷时可以正常工作,但在安装到FAT卷时则不行。 但是,这个命令的一些细节似乎没有详细记录 – 或者至少,我没有找到好的文档。 IIRC,当我编写refind-install
,我从各个站点获取示例并进行实验,直到我得到一些有用的东西,然后使用其他用户的反馈随着时间的推移进行调整。
我可能错了,但是如果你想在启动后出现refind,我相信你必须选择你的ESP分区才能重新启动。
您是尝试从Linux还是从Mac OS X安装?