Почему bless не делает 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 содержит корень пользовательского системного раздела EFI на диске0s6, а не стандартный диск0s1 ESP моего MacBook.

Есть идеи, почему это не работает и как заставить rEFInd загружаться по умолчанию?

EDIT:

Хорошо, я думаю, что знаю, в чем дело. Итак, я смог заставить его работать, заменив опцию --root в refind-install на --usedefault, вот так:

sudo ./refind-install --usedefault /dev/disk0s6

Далее происходит следующее: скрипт игнорирует /dev/disk0s6 и продолжает установку rEFInd на /dev/disk0s1, основной ESP OS X (это не то, что я хотел, но это работает).

Затем скрипт выполняет команду other bless:

   if [[ $InstallToEspOnMac == "1" ]] ; then
      bless --mount "$InstallDir" --setBoot --file "$InstallDir/$TargetDir/$Refind" --shortform
   elif [[ "$TargetDir" != "/EFI/BOOT" ]] ; then

После перезагрузки все работает, и rEFInd загружается по умолчанию. У меня есть предположение, что это работает из-за того, что rEFInd установлен в стандартный /EFI/BOOT/bootx64.efi внутри раздела OS X ESP.

Но это не то, чего я хочу. Я бы хотел, чтобы refind был установлен на /dev/disk0s6, в /EFI/refind/ вместо /EFI/BOOT.

EDIT:

Также обратите внимание, что при использовании опции --usedefault сценарий установки устанавливает refind_aa64. efi в /EFI/BOOT ESP OS X (диск0s1), но при использовании опции --root для установки на диск0s6 скрипт вместо этого устанавливает refind_x86. efi

Также, я не уверен, что возможно наличие опции --mount в одной команде bless, но не в другой, является причиной разницы.

EDIT:

Я смог скопировать /EFI/BOOT с диска0s1 на диск0s6, затем запустил ту же команду bless --mount, что и в сценарии, и это сработало.

EDIT:

Хорошо, мы подошли ближе. Я изменил сценарий, заменив

   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

и теперь все работает так, как я хочу: refind устанавливается на /EFI/refind на раздел, точку монтирования которого я указал с помощью опции --root. Хотя это дает мне результат, который я искал, теперь есть одна небольшая проблема: при загрузке требуется около 30 секунд или больше, чтобы наконец-то попасть на rEFInd, что по какой-то причине очень медленно. Я собираюсь сбросить NVRAM и попробовать снова...

EDIT

Ага! Перед сбросом NVRAM я попробовал добавить опцию --shortform к команде bless, и это устранило проблему задержки в предыдущей правке!

Почему вторая команда bless работает в режиме --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
1
задан 4 January 2016 в 12:59

2 ответа

Я мог бы быть неправым, но если Вы хотите иметь, повторно находят разоблачение после начальной загрузки, я полагаю, что необходимо выбрать раздел ESP для перенаходки.

Вы пытающийся установить из Linux или из Mac OS X?

0
ответ дан 7 December 2019 в 13:49

Во-первых, --root опция не используется для определения ESP; это используется для определения корня нормальной установки (/) каталог. Предназначается для использования, когда установка повторно находит от системы чрезвычайной ситуации Linux, хотя это могло использоваться от системы OS X (но вероятно не будет очень полезно там, кроме, возможно, в сочетании с --notesp - но я не протестировал это). Таким образом Вы в основном "рявкаете неправильное дерево" в попытке использовать ту опцию.

refind-install сценарий действительно не имеет никаких явных опций установить, повторно находят к вторичному ESP. В Linux можно управлять ESP путем монтирования того, в котором Вы хотите /boot или /boot/efi; но в OS X, обычно не монтируется ESP, таким образом, сценарий пытается найти ESP, и если у Вас будет несколько ESPs, то он, как гарантируют, не будет использовать тот, который Вы хотите. В таком случае в значительной степени необходимо отступить к ручной установке, как описано здесь:

http://www.rodsbooks.com/refind/installing.html#osx

С другой стороны, Вы могли использовать --ownhfs для установки повторно находят к специализированному HFS + объем. Обратите внимание, что наличие двух ESPs вряд ли будет полезно. Я знаю, что Вы говорите желание двух ESPs но Вы не сказали, почему Вы хотите это, и в отсутствие причины, мое предложение - то, что Вы забываете об этом, потому что нет, вероятно, никакого преимущества. ESP предназначен, чтобы быть совместно использованным через Ose. Существует опасность одной ОС, портящей файлы другой ОС на ESP, но сохраняющий резервное копирование должен позволить Вам восстановиться с таких проблем.

AFAIK, --folder опция к bless работы при установке на HFS + объем, но не при установке на томе FAT. Некоторые детали этой команды, кажется, не хорошо зарегистрированы, хотя - или по крайней мере, я не нашел хорошую документацию. IIRC, когда я записал refind-install, Я взял примеры от различных сайтов и экспериментировал, пока я не получил что-то, что работало, затем настроило его со временем использование обратной связи от других пользователей.

2
ответ дан 7 December 2019 в 13:49

Другие вопросы по тегам:

Похожие вопросы: