(古い情報です。最新情報はこちらをご覧ください。)
—————
最近のClover*1でEFIドライバ類が色々と変更されている様です。気づいたところをメモしておきます。
Table of Contents
64bit移行のためと思われる名称変更
EFIドライバフォルダ名
だいぶまえにdrivers32というフォルダがなくなってdrivers64だけになっていたと思うのですが、最近ではdrivers64UEFIになったようです。新規にインストールするとこれだけになります。drivers64は空になる事もあります。drivers64は手作業で消してしまっても良いようです。
また、Cloverのインストーラは、現在インストールされているドライバを見てチェックマークを更新しているわけでは無いようです。前回、インストールしたログを見て、その記録から更新するドライバを選んでいます。なので、手作業でインストールしたドライバは反映されていません。時々は、インストールされたドライバと照らし合わせて、更新リストに入っているかどうか確認した方が良いかと思います。
末尾が-64のドライバ
最近、全てのドライバのファイル名末尾に-64が付きました。64bitであることを明白にするためなのかと思います。同名のドライバで、末尾が-64で無いバージョンのドライバがESPに入っていると、アップデートで置き換えられない(両方が残ってしまう)ことがありますので、手作業で削除しておきましょう。
(更新:Clover 4988から64の名前が外されました。全て64ビットのみになったためと思われます。2019/7/13)
デフォルトのEFIドライバ
デフォルトでインストールされるEFIドライバは、インストーラで表示されなかったと思うのですが、最近では全部表示されるようになっています。以下の8個がデフォルトでインストールされる設定になっているようです。
デフォルトで選択されているので重要なドライバだとは思います。そのうち調べて、機能をメモしていきたいと思います。
一部はこちらを参考にしました。
- AppleImageCodec/AppleKeyAggregator/AppleUITheme は、FileVault 2 のサポートのために必要なファイルです。FileVault 2のフル機能を使うためには、UsbKbDxe/AptioInputFix/AptioHashServiceFixなども必要です。
- DataHubDxe はEFI_DATA_HUB_PROTOCOLを実装します。これはboot.efiが必要とします。これは消してしまっても大丈夫です。というのはほとんどのfirmawareはすでにこのプロトコルを実装しているからです(と書いてありますがすみません、意味がわかりませんでした。ここでのfirmwareというのはboot.efiなどのことを指しているのかな?)
- FirmwareVolume はFileVault 2でAppleカーソルイメージを機能させます。
- FSInject は、kextを機能させるために必要です。
- SMCHelper は、APPLE_SMC_IO_PROTOCOLの実装を追加します。boot.efiが文句を言うのを防ぎます。多分boot.efiがSystem Management Controllerとやり取りできるよう、そのプロトコルを実装しているのだと思います。
- VBoxHfs-64は、HFS+をアクセスするためのオープンソースのドライバです。起動ボリュームがHFS+でフォーマットされている場合に、これを使ってブートローダにアクセスします。
ということで、FileVault 2を使用しないのであれば、最初の5個は不要のようです。最低限必要なのは、後半の3個のみということかと思います。
オプションのドライバ
次に、デフォルトでは選択されていないドライバをチェックしていきます。
メモリ確保のドライバ
こちらの説明で、
以下のドライバの役割と、推奨順番を説明しました。推奨順番はこの順番です。
- AptioMemoryFix.efi
- OsxAptioFix3Drv-64.efi
- OsxAptioFix2Drv-64.efi
- OsxAptioFixDrv-64.efi
- OsxLowMemFixDrv-64.efi
用意されているドライバが、最近では以下に変わっている様です。
- AptioMemoryFix-64.efi
- OsxAptioFix2Drv-64.efi
- OsxAptioFixDrv-64.efi
- OsxLowMemFixDrv-64.efi
AptioMemoryFixに-64が付いて、3Drvは無くなったようです。理由は不明です。今後、アップデートされないので3Drvは使わない方が良いかもしれません。(更新:最新バージョンでは3Drvが復活しています。何れにしても最新のCloverインストーラの選択肢に従うのが良いです。)また、上記のいずれもダメな場合は、 OsxAptioFix2Drv-free2000.efi を試すと良いです。これは最強な感じです。
これらのドライバが働かない場合、Clover選択画面の直後で起動が停止します。-vオプションで、メモリがallocateできないという様なメッセージが出ていたら、このドライバを差し替えてみてください。メモリのallocateはいろんな条件で失敗する様です。kextを入れ替える事で失敗が発生する事もあります。また、大抵は成功するものの、数回に1度ランダムにallocate失敗する事もあります。
ApfsDriverLoader.efi
前に紹介しましたように、apfs.efiをmacOS本体からロードしてくれるドライバがr4558から登場しました。これがあればapfs.efiを本体から持ってくる必要はありません。ただ、環境によっては失敗する事も稀にあるようですので、apfs.efiを手作業でコピーしておいた方が良い事もあります。今後改良されるのだとは思います。
その他のドライバ
ApfsDriverLoader-64もそうですが、最近のインストーラで選択できるドライバが増えている気がします。よくわからないファイルもありますが、今後、検索して機能が判明したらまた紹介していきたいと思います。
- AptioMemoryFix / OsxAptioFix2Drv / OsxAptioFixDrv / OsxLowMemFixDrvは上で説明したメモリ確保のドライバです。
- CsmVideoDxe Cloverが動作している時のビデオ表示のためのドライバだったと思います。これを使うと高解像度で表示できるとか。効果のほどはわかりません、すみません。
- EmuVariableUefi はNVRAMの機能をソフト的にエミュレートするドライバです。NVRAMは全てのマザーボードが持っていて、OS起動のためのパラメタなどを保持するのに使われているのですが、Hackintoshと相性が悪くてmacOSから読み込めないマザーボードもあるようです。NVRAMが正しく保存、読み込みできないマザーボードの場合はこれを使います。例えば、NVIDIAのドライバを使うかどうかの設定が保持されない場合などこれが必須です。
- EnglishDxe UEFI shellで文字表示するために、一部のマザーボードで必要らしいです。
- Fat 不明です。調べて見つかったら加筆します。
- HashServiceFix もFileVault 2のために必要なようです。HDPIカーソルの問題を修正するのだそうです。よくわかりません、すみません。
- NvmExpressDxe NVMeプロトコルのSSDをサポートします。これがあれば、NVMe SSDにブートローダが入っていても読み込むことができます。現在のマザーボードはその機能をEFIに持っているので不要です。古いマザーボードや、古いタワー型Mac Proなどではこれを使うとNMVe SSDから起動できるようになります。
- OsxFatBinaryDrv はFAT EFIバイナリのサポートし追加しますが、今は不要です。古いバージョンのmacOSはFATのboot.efiを持っていました。消してしまっても構いません。
- PartitionDxe は、論理BlockIOデバイスをサポートします。現在は El Torito CD-ROM, 古いMBR, GPTパーティションがサポートされています。一部のBIOSで必要です。
- Ps2MouseDxe PS2接続のマウスを読み取れるようにします。ノートPCなどのポインティングデバイスがPS2接続のこともあります。その場合には必要です。
- UsbKbDxe / UsbMouseDxe USBキーボード/マウスを使えるようにするのだと思います。普通のマザーボードは使えるので不要だと思いますが、FileVault 2では必要になるようです。
- VBoxExt2 / VBoxExt4 / VBoxIso9600 名前からして、Ext2, Ex4, ISO9600のファイルシステムにアクセスするためのドライバだと思われます。DVDから起動するにはVBoxIso9600が必要ということかなと想像します。
EFIドライバを整理してみる
こうして見ると、結構不要なEFIドライバも多いようです。特にFileVault 2を使わないなら、かなりのドライバを省いても良いことになりそうです。今、このマシンのESPのdrivers64UEFIの中に入れてあるEFIドライバは、以下の5個です。
- ApfsDriverLoader-64.efi
- AppleImageCodec-64.efi
- AppleKeyAggregator-64.efi
- AppleUITheme-64.efi
- AptioMemoryFix-64.efi
- DataHubDxe-64.efi
- FirmwareVolume-64.efi
- FSInject-64.efi
- SMCHelper-64.efi
- VBoxHfs-64.efi
上の情報によると、FileVault 2を使わないならば、以下の5個は不要のようです。
- AppleImageCodec-64.efi
- AppleKeyAggregator-64.efi
- AppleUITheme-64.efi
- DataHubDxe-64.efi
- FirmwareVolume-64.efi
FileVault 2は使っていませんので、これらを除いて起動を試しました。なんの問題もなく起動しました。使っているのは以下の5個です。
- ApfsDriverLoader-64.efi
- AptioMemoryFix-64.efi
- FSInject-64.efi
- SMCHelper-64.efi
- VBoxHfs-64.efi
かなりシンプルになりました。
*1:執筆時点のv2.4k r4586より少し前くらい
-64表記が無くなりましたね。
ありがとうございます。そうですね。追記しておきました。