web-dev-qa-db-ja.com

デフォルトで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には、MacBookのデフォルトのdisk0s1 ESPではなく、disk0s6のカスタムEFIシステムパーティションのルートが含まれています。

なぜ機能しないのか、rEFIndをデフォルトで起動する方法はありますか?

編集:

わかった、私は何が悪いのか知っているかもしれないと思う。そのため、次のように--rootオプションをrefind-install--usedefaultオプションに置き換えることで、それを機能させることができました。

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

さて、次に起こることは、スクリプトが/dev/disk0s6を無視し、rEFIndを/dev/disk0s1にインストールすることです。メインOS X ESP(これは私が望んでいたものではありません) 、しかしそれは動作します)。

スクリプトは次に進み、other blessコマンドを実行します。

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

再起動後、これは機能し、rEFIndはデフォルトで起動します。 OS X ESPパーティション内のデフォルトの/EFI/BOOT/bootx64.efiにrEFIndがインストールされているため、これが機能しているという予感があります。

しかし、これは私が望むものではありません。 /dev/disk0s6ではなく、/EFI/refind//EFI/BOOTにインストールされているrefindをインストールしたいと思います。

編集:

また、--usedefaultオプションを使用する場合、インストールスクリプトはrefind_aa64.efiをOS Xの/EFI/BOOTにインストールしますESP(disk0s1)ただし、--root disk0s6にインストールするオプションは、代わりにスクリプトをインストールしますrefind_x86.efi

また、おそらく1つの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

そして今、それは私が望むように動作します:/EFI/refindオプションでマウントポイントを指定したパーティションの--rootにインストールされたrefind。これで私が探していた結果が得られますが、1つの小さな問題があります。ブート時に最終的にrEFIndに到達するまでに約30秒以上かかります。 NVRAMをリセットして再試行します...

編集

あぁ! NVRAMをリセットする前に、blessコマンドに--shortformオプションを追加してみました。これにより、前の編集の遅延の問題が修正されました。

2番目のblessコマンドが--folderモードであるのはなぜですか? --mountモードでより良く動作するようです。

したがって、今のところ、解決策は、スクリプトの2番目のblessコマンドを最初の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

--rootrefind-installオプションを使用して、ターゲットパーティションのマウントポイントを指定しました。

mkdir /Volumes/efi
Sudo mount -t msdos /dev/disk0s6 /Volumes/efi
Sudo ./refind-install --root /Volumes/efi
1
trusktr

まず、--rootオプションはESPの指定には使用されません。通常のインストールのルート(/)ディレクトリを指定するために使用されます。 Linuxの緊急システムからrEFIndをインストールするときに使用することを目的としていますが、OS Xシステムからcouldを使用できます(ただし、あまり有用ではありません) 、ただし、maybe--notespを組み合わせて-しかし、私はそれをテストしていません)。したがって、そのオプションを使用しようとすると、基本的に「間違ったツリーを起動する」ことになります。

refind-installスクリプトには、rEFIndをセカンダリESPにインストールするための明示的なオプションはありません。 Linuxでは、/bootまたは/boot/efi;に必要なものをマウントすることにより、ESPを制御できます。ただし、OS Xでは、ESPは通常マウントされないため、スクリプトはESPを見つけようとします。複数のESPがある場合、必要なESPの使用は保証されません。このような場合、ここで説明するように、手動インストールにフォールバックする必要がほとんどあります。

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

または、--ownhfsを使用してrEFIndを専用のHFS +ボリュームにインストールすることもできます。 2つのESPを持つことは役に立たない可能性があることに注意してください。 2つのESPが必要だと言っていることは知っていますが、なぜそれが必要なのかについては説明していません。理由がなければ、おそらくメリットがないので、それを忘れることをお勧めします。 ESPはmeantであり、OS間で共有されます。 1つのOSがESP上の別のOSのファイルを台無しにする危険性がありますが、バックアップを保持することで、このような問題から回復できるはずです。

知る限り、bless--folderオプションは、HFS +ボリュームにインストールするときに機能しますが、FATボリュームにインストールするときは機能しません。ただし、このコマンドの詳細の一部は十分に文書化されていないようです。少なくとも、私は適切な文書を見つけていません。 IIRC、refind-installを書いたとき、私はさまざまなサイトから例を取り上げ、動作するものを得るまで実験を行い、他のユーザーからのフィードバックを使用して時間をかけて調整しました。

2
Rod Smith

間違っているかもしれませんが、起動後に再検索を表示したい場合は、再検索のためにESPパーティションを選択する必要があります。

LinuxまたはMac OS Xからインストールしようとしていますか?

0
Joe