为什么不能默认启用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安装?