OpenCoreのpicker画面を設定する

OpenCore 0.6.3のSample.plistを真似て作ったconfig.plistでは、ブート時のpicker選択画面で、macOSのUSBインストーラやWindowsドライブが現れませんでした。これを治しました。またpicker画面で使える便利な機能も設定しました。

デフォルト設定のpicker

OpenCoreが起動する際に、箇条書きやアイコンで現れる選択肢のことをpickerというのだそうです。Cloverの時は起動ボリュームが現れましたが、OpenCoreではツールのアイコンも一緒に現れるので、pickerと呼ぶのが適切なのかと思いました。

最近、このpicker画面にWindowsが入ったSSDが現れなくなっているのに気づきました。でもWindowsの使用頻度がほとんど皆無なので放置してました。その後、Big Surをクリーンインストールしようとしたときに、USBメモリーに入れたBig Surインストーラもpicker画面に現れませんでした。それで対応することにしました。OpenCoreのデフォルト設定では、WindowsもUSBメモリもpickerとして現れないようです。実際の例で示します。以下は、

  • macOSの入ったM.2 SSD
  • Windowsの入ったSATA SSD
  • Big Surインストーラが入ったUSBメモリ

が接続されたZ390マシンが起動した直後のpicker画面です。config.plistのほとんどの項目は、Sample.plistに記述のデフォルト状態です。上記の3個のボリュームに相当するpickerが現れて欲しいところですが、このうちの1個、macOSの入ったM.2 SSD (Macintosh HDという名前)しか現れません。Recovery はそのSSDに入っている復旧用ボリュームです。ほかに、UEFI ShellとNVRAMリセットのpickerが見えてます。

ScanPolicyを設定する

pickerを変更する方法の一つが、config.plistのMisc –> Security –> ScanPolicyという整数値を変更する方法です。これは起動選択のボリュームをスキャンする際のセキュリティ方針を決める項目のようです。得体の知れないボリュームから起動することは、セキュリティとして良く無いので、起動対象ボリュームの種類を決めておきましょうという項目のようです。

ScanPolicy = 0

ScanPolicyには、どのファイルシステムとどのデバイスを対象とするかをビットで設定します。詳細はOpenCoreのマニュアルに書いてあります。

• 0x00000001 (bit 0) — OC_SCAN_FILE_SYSTEM_LOCK, restricts scanning to only known file systems defined as a part of this policy. File system drivers may not be aware of this policy. Hence, to avoid mounting of undesired file systems, drivers for such file systems should not be loaded. This bit does not affect DMG mounting, which may have any file system. Known file systems are prefixed with OC_SCAN_ALLOW_FS_.
• 0x00000002 (bit 1) — OC_SCAN_DEVICE_LOCK, restricts scanning to only known device types defined as a part of this policy. It is not always possible to detect protocol tunneling, so be aware that on some systems, it may be possible for e.g. USB HDDs to be recognised as SATA instead. Cases like this must be reported. Known device types are prefixed with OC_SCAN_ALLOW_DEVICE_.
• 0x00000100 (bit 8) — OC_SCAN_ALLOW_FS_APFS, allows scanning of APFS file system.
• 0x00000200 (bit 9) — OC_SCAN_ALLOW_FS_HFS, allows scanning of HFS file system.
• 0x00000400 (bit 10) — OC_SCAN_ALLOW_FS_ESP, allows scanning of EFI System Partition file system.
• 0x00000800 (bit 11) — OC_SCAN_ALLOW_FS_NTFS, allows scanning of NTFS (Msft Basic Data) file system.
• 0x00001000 (bit 12) — OC_SCAN_ALLOW_FS_LINUX_ROOT, allows scanning of Linux Root file systems.
• 0x00002000 (bit 13) — OC_SCAN_ALLOW_FS_LINUX_DATA, allows scanning of Linux Data file systems.
• 0x00004000 (bit 14) — OC_SCAN_ALLOW_FS_XBOOTLDR, allows scanning the Extended Boot Loader Partition
as defined by the Boot Loader Specification.
• 0x00010000 (bit 16) — OC_SCAN_ALLOW_DEVICE_SATA, allow scanning SATA devices.
• 0x00020000 (bit 17) — OC_SCAN_ALLOW_DEVICE_SASEX, allow scanning SAS and Mac NVMe devices.
• 0x00040000 (bit 18) — OC_SCAN_ALLOW_DEVICE_SCSI, allow scanning SCSI devices.
• 0x00080000 (bit 19) — OC_SCAN_ALLOW_DEVICE_NVME, allow scanning NVMe devices.
• 0x00100000 (bit 20) — OC_SCAN_ALLOW_DEVICE_ATAPI, allow scanning CD/DVD devices and old SATA.
• 0x00200000 (bit 21) — OC_SCAN_ALLOW_DEVICE_USB, allow scanning USB devices.
• 0x00400000 (bit 22) — OC_SCAN_ALLOW_DEVICE_FIREWIRE, allow scanning FireWire devices.
• 0x00800000 (bit 23) — OC_SCAN_ALLOW_DEVICE_SDCARD, allow scanning card reader devices.
• 0x01000000 (bit 24) — OC_SCAN_ALLOW_DEVICE_PCI, allow scanning devices directly connected to PCI bus
(e.g. VIRTIO).

LSB 2ビットは、ファイルシステムとデバイスを限定するかどうかのビットで、0にしておけば全てのボリュームが現れるようになります。なのでScanPolicyを0に設定してしまえば、全てのボリュームが現れます。下の例は、同上のマシンでScanPolicyを0にした時のpickerの様子です。WindowsとUSBインストーラ(丸いBig Surアイコン)が追加されました。

左端に現れているオレンジ色のEFIというpickerは、USBメモリのESPです。OpenCoreが入ってます。これを選択すると、「すでにOpenCoreで起動している」というような内容のメッセージが出るだけです。Cloverの入ったESPが他のドライブにあると、それも現れます。ESPの内容がCloverの場合はCloverに切り替わります。起動できるESPがある場合に、それが現れてしまうのは、ちょっと煩雑な感じがします。でも、実際のMacでも、オプションキーで起動すると、同様に起動可能なESPがpicker画面に出現します。実機と同じ仕様と思えば納得できます。

ScanPolicy = 19859203

ScanPolicy = 0で全く困らないのですし、そう設定するように指示するガイドページもあります。実際OC Gen-Xが自動生成するconfig.plistも0に設定してます。ただ、せっかくセキュリティの機能が用意されているのに、無視するのももったいない気がします。正しく必要なものだけ設定したいと考えました。

ScanPolicyのデフォルト値は17760515です。ScanPolicyの設定そのものをconfig.plistから削除するとこのデフォルト値になります。Sample.plistでもこの値が設定されています。このデフォルト値では、

  • ファイルシステムはAPFSのみ
  • デバイスはSATA, SAS, NVMe, SCSI

を対象とする設定です。APFSのみなので、Windowsはもちろん、HFS+だったBig SurインストーラUSBも現れないわけです。さらには、デバイスでは、USB, DVD, FireWire, SDカード, PCIバスが除外されています。Big SurインストーラUSBはデバイスとしても除外されていました。そこで、このデフォルト値に追加して、

  • ファイルシステムにHFS+とEFI System Partition (ESP) を追加する
  • デバイスにUSBを追加する

ような設定にしました。それが10進数で19859203になります。ファイルシステムの選択肢にNTFSのビットがあったので、Windowsならそれだろうと考えたのですが、違ってました。ブートローダーがESPにある関係か、NTFSビットを立ててもWindowsのpickerは現れませんでした。ESPビットを設定する必要があるようです。ScanPolicyを19859203に設定すると、(上の写真と同じですが)以下のようになりました。

ビットの計算をする

皆さんはビットを立てたり、外したりするのにどうやって計算されてます?今回は手軽で便利なmacOS標準搭載の「計算機」を使いました。「計算機」はメニューの「表示」「プログラマ」を選ぶと16進数、8進数などを扱えます。入力や結果はコピペできるので便利です。

今回の計算は以下のようにして行いました。まずは、ScanPolicyのデフォルト値の、17760515をコピーします。計算機を10進数に切り替えて、ペーストします。その後、16進数に切り替えると、0x010F0103であることがわかります。ビットがわかりやすいです。

ここで、スキャン対象のファイルシステムにHFS+とESPを追加して、対象デバイスにUSBを追加します。それぞれのビットは、OpenCoreのマニュアルによると、以下です。

  • HFS+ : 0x200
  • ESP : 0x400
  • USB : 0x200000

なので、合計で0x200600のビットを立てれば良いわけです。そこで「計算機」で「OR」を押した後、0x200600を入力して、イコールを押します。出てきた結果は16進数で0x12F0703になります。10進数に切り替えれば、設定すべき10進数、19859203が得られます。これもコピーしてProperTreeまたはPlistEDPlusにペーストすれば良いです。

「計算機」にはRPN(逆ポーランド記法)で操作するモードもあるので、マニアックな人も満足できると思います。

おまけ1: 表示pickerを減らす

Pickerがこれくらい並んでも(USBメモリーが挿さってなければ2個減りますし)適切に賑わっていて良いと思いました。でも、efiツールをたくさんインストールしている場合は、それが右端に追加されるので、煩雑だと感じることもあるようです。

そこで、使用頻度の低いpickerを非表示にするオプションがるようです。config.plistのMisc –> Boot –> HideAuxiliaryです。デフォルトではfalseですが、これをtrueにすると、写真のpickerのうち、Recovery, Reset NVRAMが非表示になります。また、Misc –> Toolsで追加しているefiツールItemの中のAuxiliaryをtrueにしているツールも非表示になります。現在はOpenShell.efiを追加してありますので、HideAuxiliaryをtrueにした上で、さらにOpenShell.efiの設定でAuxiliaryをtrueにしました。その結果、表示されるpickerが以下のように減りました。

ここでスペースキーを押すと、非表示にしていたpickerが元通りに表示されます。

おまけ2: -vを一時的に有効にする

Misc –> Boot –> PollAppleHotKeysをtrueにすると(デフォルトではfalseです)picker画面でApple標準のホットキーがいくつか使えるようになります。使用可能になるキーは以下です。

  • CMD+C+MINUS — disable board compatibility checking.
  • CMD+K — boot release kernel, similar to kcsuffix=release.
  • CMD+S — single user mode.
  • CMD+S+MINUS — disable KASLR slide, requires disabled SIP.
  • CMD+V — verbose mode.
  • Shift — safe mode.

ありがたいのはコマンド + vです(vは小文字でok)。ブートオプションには-vを付けずに、シンプルなリンゴマークだけで通常は起動していて、ちょっと動作が怪しい時だけ、コマンド + vでverbose modeに入れるようになります。Cloverだと起動画面からオプションを一時的に切り替えることができたので、同じように運用できます。

まとめ

ScanPolicyをデフォルト値から変更して、WindowsやUSBインストーラがpickerに現れるよう設定しました。また、HideAuxiliaryとPollAppleHotKeysもデフォルト値から変更しました。

7件のコメント

  1. pickerの解説、ありがとうございます。
    4Kモニター接続でもpicker画面がHDになり、アイコンが横幅からはみ出るようになったので困っていました。

  2. お疲れさまです。
     スキャンをどこまで「つつく人、ほじくる人、摘み手」でpickerなのかもしれません。^^
     ビットで表現はOpenCoreらしく単純かつ簡潔でいいのですが、2進数を数えるとおもうと、なれないひとがどのビットが立つかわからなくなりそうですねぇ^^;
     でも、10進数に直すのはちょっと不思議ですね。0x0000の16進数とか、0b0000000000000000とそのものズバリ2進数とかのリテラルも、ありのような気もするんですが、XMLエディタって、Cとかで書くとそうなろそうな気もするんですがねぇ^^;これもちょっと不思議です。

    1. ビットの計算は確かに間違いやすいですね。「計算機」の話題も追記しておきました。

  3. 解説ありがとうございます。
    CloverからOpenCoreへ移行しまして、picker画面を使用しています。
    WQHDなのですが、picker画面はHDになります。
    picker画面もWQHDにする方法をご存じないでしょうか?
    環境は、以下の通りです。
    GA-Z170x-UD5 TH, 6700K, RX570, OpenCore0.6.3

    1. picker画面はmacOSのグラフィックスドライバーが動く前に、OpenCoreで自力で表示している画面で、多分、グラフィックスカードのデフォルトの表示機能を使っていると思いますので、高解像度な表示は難しいのかもしれないです。

  4. フォーラムの方でお騒がせしました、初心者です。
    この記事を見落としていたことで、Picker画面にインストールの項目が出す大騒ぎしてしまいました。
    で、その際にこちらの記事より先に見つけたのが
    https://osmaniax.1banzaka.com/osx/opencore0-6-3-から-0-6-7に更新成功!/3224
    で、件の16進法を計算しなくても、Opencore Configuratorを使うと、GUIで設定できるというものでした。ビット計算とか聞くと、蕁麻疹が出てしまう人間としては、このツールもありがたいなと思いました。

hiroshia へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。 が付いている欄は必須項目です