サイトアイコン Boot macOS

5250U搭載小型PC XCY X36 (2: OS導入未完編)

AliExpressから届いた格安の5250U搭載小型ベアボーンPC XCY X36にmacOS Catalina 10.15 をインストールしました。macOSは一応すぐに動いたのですがiGPUがいまだに動きません。その経緯を書いておきます。こちらの製品です。

AliExpress.com Product – Mini PC

前回はこのベアボーンPCを分解して中身を確認しました。前回からずいぶん間が空いてしまいました。iGPUのドライバーが動かなくて難航してます。もう少し頑張ろうと思ったのですが、6100T搭載メーカー製中古デスクトップの方が性能、価格、サイズ、メンテナンス性で勝っているのでこちらはお蔵入りにします。ということでドライバーが動かず、描画加速が効かない状態ですが、この先進捗しなさそうですので、現状報告しておきます。

AliExpressから格安の小型ベアボーンPCを調達しました。XCY社のX36という型番です。価格は送料無料の$183.17でした。到着したので開封・分解して中身を確認しました。XCYのベアボーンX36中国のショッピングサイトで格安の小型PCがいくつも販売されています。こちらの記事では、Macと同じCPUを搭載した製品をいくつかピックアップしました。この中で一番気になったのは、5250U搭載のXCY社のX36です。ユニークな円盤ケースのPCです。円盤形なので360度にちなんでこの型番なのでしょう。ベアボーンなら$183と格安です。そこそこ格好の良い...
5250U搭載小型PC XCY X36 (1: 分解編) - Boot macOS

メモリーとSSDを用意する

ベアボーンなのでメモリーとSSDが必要です。ケーブルが筐体からはみ出しますが、2.5インチSSDも接続可能です。メモリーは1.35Vの低電圧タイプDDR3 S.O.DIMMが必要です。1本しか取り付けられず、8GBが最大です。1333MHzと1600MHzで価格は変わらないので1600が良いと思います。ソケット取り付けSSDはM.2に移行してしまって、mSATA SSDは国内サイトではあまり見かけなくなりました。AliExpressならまだ品数があり少し安いです。ちょっと試すつもりなら120GBや250GBで良いと思います。KingSpecというKingstonに紛らわしいブランドでお手頃な製品がありました。

BIOSを設定する

メモリーとSSDを取り付ければPCとして機能します。さらにACアダプター、キーボード、トラックパッド、HDMIケーブル(の先にディスプレイ)を取り付けました。電源を入れたら、American Megatrendsのロゴが表示され、その後、めでたくBIOS画面が表示されました。お馴染みのAptioブランドのBIOSです。最近の大手マザーボード製品と違って、昔ながらのシンプルな表示です。CPUは鉛筆書きの番号通り、i5-5250Uだったようです。良かったです。

とりあえずはF9を押して、設定を工場出荷状態に戻します。次に、BIOS設定をします。BIOS設定に関しては、こちらの記事もご覧ください。

今回は、Hackintoshのためのマザーボード (BIOS) の設定について書いておきます。Windowsなら適当に設定しても、大きな問題は起きないと思います。でもmacOSをインストールする場合には、間違えると起動しないという重要設定項目が少しだけあります。基本設定 最初は工場出荷状態:大体は工場出荷状態で良いです。デフォルトにまずは設定します。最近のマザーボードは、以下の項目が大体デフォルトで設定されています。なので工場出荷時状態にするだけでmacOSが起動することが多いです。 SATAのモードはAHCIモード:最近は、AHCIモー...
マザーボード (BIOS) 設定 - Boot macOS

BIOSメニューを順番に見て、変更すべきところを探します。まずはIntel Anti-Theft Technologyという機能の設定があり、Enabledになっていました。検索すると、ネットに接続しない状態が指定日数経過すると盗難モードに入り、マザーボードをロックする機能です。しかしすでにサービス終了しているようです。このクラスのマザーボードに、BIOSからネット接続する機能は無いと思われますので、Windowsアプリと一緒に動く機能かと思います。ロックする部分をBIOSが担当しているだけでしょう。なのでmacOSで使う限りは無害と思います。でもトラブルの予感しかしませんのでDisabledにしておきました。

次に搭載シリアルポートの設定がありました。前回の分解で分かったように、マザーボードにはシリアルポート用のヘッダピンが2セットあります。BIOSメニューにもSerial Port 1と2の設定があり、この2セットに対応しているようです。BIOSではそれぞれをon/offできます。シリアルポートはmacOSではサポートされていませんし、これが有効になっていると起動に失敗した経験もあります。そうでなくても電気の無駄なので、両方ともDisabledにしておきます。

iGPU関連の設定に、DVMT Pre-Allocatedという項目があります。初期設定は32MBなのですが、macOSでは64MB以上にしないと動かないとのことです。少し余裕を持たせて96MBにしておきました。実際に32MBの設定で試したところ、Cloverの起動画面が出た後、グラフィックスが切り替わるタイミングで再起動してしまいます。ちなみにBIOSでこの設定が可能なのは幸運らしいです。ノートPCのBIOSなどではこれが設定できないこともあるそうです。多分、変な設定をして動かなくなるとサポートが面倒なので、設定項目から除外してあるのかと思います。この製品はAptioのオリジナルのままのBIOSを使っているので、この設定も可能なのだと思います。

初期設定ではVT-dがEnabledでした。他の設定でリカバーできるらしいですが、ここはHackintoshの定石なので、Disabledに設定しました。

これは単に不便なだけですが、デフォルトではキーボードがNum Lock状態になります。以前紹介したテンキー無しのトラックパッド付き無線キーボードを使うと、右の文字キーがテンキーになってしまい不便です。macOSが起動してしまえば関係ないですが、UEFI Shellでの操作やCloverでの設定作業に支障が出ます。そこでBootup NumLock StateをOffにしました。

まとめると、初期設定から変更した点は以下の5箇所です。

インストール用USBメモリーを作る

次に、このX36で

  1. macOSユーティリティを起動して
  2. mSATA SSDをフォーマットして
  3. macOSをインストールする

ことが可能なUSBメモリーを作成します。大まかな手順はこちらをご覧ください。

CatalinaをクリーンインストールするためのUSBメモリーを作ります。まずはCatalinaに含まれるcreateinstallmediaコマンドを使います。次にESPを作ります。すでにMojaveが動いているHackintoshがあればESPのファイルをコピーするだけです。Mojave用ESPを最新にするCatalinaは、Mojaveの場合と同じefiドライバー、kext、config.plistでCatalinaが起動できることを確認しています。ただしどれも最新版にしておくのが望ましいです。ということで、Kext Updater.appなどを使用して、Cloverとkext類を最新にしておきます。Catalinaをダウンロ...
Catalina導入用USBメモリーを作成する - Boot macOS

手順をまとめると、

  1. USBメモリーをフォーマットする
  2. createinstallmediaコマンドを使ってMacで起動するmacOSインストーラ作成する
  3. CloverインストーラでブートローダとUEFIドライバを入れる
  4. 必要なkextを入れる
  5. config.plistを作成する

このUSBメモリーを作成する手順で一番難しいところは、USBメモリーのESP部分を作成する部分のステップ3, 4, 5です。特にconfig.plist作りが難しいです。でもこれさえできれば、Hackintoshはほとんど完成したも同然です。まずはCloverインストーラでブートローダーとUEFIドライバを入れます。今回のビルドで使用したUEFIドライバは、以下です。VirtualSMCを使ったので、VirtualSmc.efiを手作業で入れています。

また使用したkextは以下です。

USBInjectAll.kextは不要だったかもしれません。LANチップがRealtekだったのでそれ用のkextを入れました。この後、難関のconfig.plist作りをします。

暫定Config.plistを作る

こちらでHaswell用のconfig.plistの作り方の解説を載せておきました。

Corpnewtさんのhackintoshデスクトップのためのバニラガイドから、今回は「Haswellマシンのためのconfig.plistの作り方」のページをご紹介します。ちなみにこのガイドでは、 Haswell Skylake Kaby Lake Coffee Lakeのconfig.plistの作り方が解説してあります。他のCPUを使う場合はそれを見てください。また、Config.plistの基礎編もご覧ください。世代の近いCPUではそれぞれかなりの部分が共通です。Haswellは実際のiMacで採用されていて、歴代CPUの中でも互換性が高いと評判です。なので特殊な設定はありません。(ここから抄訳)...
corpnewtさんのバニラガイド~Haswell用config.plist - Boot macOS

今回はBroadwellなのですが、数が出ていないCPUなのかCorpnewtさんのガイドにはありません。でもHaswellに近いCPUなので、ほとんどHaswell用のconfig.plistで動作すると思いました。

機種ID

SMBIOSは、5250U搭載Macに合わせることにしました。該当するMacは、MacBookAir7,1, MacBookAir7,2, iMac16,1, iMac16,2です。どれもiGPU使用機種ですし、どれでも良いと思います。完成すればデスクトップマシンなので、iMacが近いかと考えて、iMac16,1にしました。Clover Configurator.appでSMBIOS部分を作り、Corpnewtさんのガイドのconfig.plistのSMBIOS部分と差し替えます。Clover Configurator.appが作成してくれたSMBIOS部分をそのままコピーすると長ったらしいので、最小限にします。足りない部分はCloverが補ってくれます。シリアル番号、ボードシリアル番号、SmUUIDはこのサンプルをまねずに必ず独自の値を設定してください。重複した値を使うとアップルから拒否される可能性があります。

    <key>SMBIOS</key>
    <dict>
        <key>BoardSerialNumber</key>
        <string>C027456004NGH34JC</string>
        <key>Mobile</key>
        <false/>
        <key>ProductName</key>
        <string>iMac16,1</string>
        <key>SerialNumber</key>
        <string>C02VNYZ7GF1J</string>
        <key>SmUUID</key>
        <string>483F7DE7-6698-4EAC-B7A3-6B39FC4264F6</string>
    </dict>

サウンドの設定

音を出すためにDevices->Audioのインジェクトするレイアウト番号を1にしました。

<key>Audio</key>
    <dict>
        <key>Inject</key>
        <string>1</string>
    </dict>

こちらのページ

Native macOS HD audio for not officially supported codecs - Supported codecs · acidanthera/AppleALC Wiki
Supported codecs · acidanthera/AppleALC Wiki - GitHub

によるとRealtek ALC892の場合は、1, 2, 3, 4, 5, 7, 12, 15, 16, 17, 18, 28, 31, 90, 92, 97, 99などの選択肢があるようですが、大体1で良いようです。

iGPUの設定

WhateverGreen.kextを使う場合、iGPUの情報はDevices->Propertiesに書きます。

    <key>Devices</key>
    <dict>
        <key>Properties</key>
        <dict>
            <key>PciRoot(0x0)/Pci(0x2,0x0)</key>
            <dict>
                <key>AAPL,ig-platform-id</key>
                <data>AwAiDQ==</data>
            </dict>
        </dict>
    </dict>

としてig-platform-idを指定しています。場合によってはconfig.plistに何も設定しなくても、WhateverGreen.kextがとりあえず動作する値を割り当ててくれることが多いです。しかし、今回の構成ではconfig.plistでの設定が必須だったようで、最低でもig-platform-idの設定がされていないとmacOSの起動が途中で止まってしまいました。ig-platform-idに何を設定すべきかは、正解があるわけでなく、試行錯誤で探る場合もあるようです。以下の情報

English: https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.IntelHD.en.md Russian: https://www.applelife.ru/threads/intel-hd-graphics-3000-4000-4400-4600-5000-5500-5600-520-530-630.1289648/ Chinese: https://github.com/acidanthera/WhateverGreen/blob/master/Manual/FAQ.IntelHD.cn.md
Intel Framebuffer patching using WhateverGreen - InsanelyMac

によると、Broadwellの場合のdevice-idとig-platform-idは

Gen 5: Broadwell (Intel HD Graphics 5300-6300)
- device-id: 0x0BD1 0x0BD2 0x0BD3 0x1606 0x160E 0x1616 0x161E 0x1626 0x1622 0x1612 0x162B
- AAPL,ig-platform-id (desktop): 0x16220007 (default)
- AAPL,ig-platform-id (laptop): 0x16260006 (default)

であると、書かれています。ig-platform-idは、0x16220007または0x16260006が良いようです。Hackintool.appで調べてみると、0x16260006は5250UとそのiGPUで動作するiMac16,1, MacBookAir7,1, 7,2で使われる値のようです。おそらく実機で調べた結果だと思います。いかにも良さそうです。0x16260006を使う場合は、これの並びを逆順0x06002616にし、base64変換します。すると、

% echo -en "\x06\x00\x26\x16" | base64
BgAmFg==

になります。この値を採用する場合、Propertiesの項目は、以下となります。

<key>Properties</key>
    <dict>
        <key>PciRoot(0x0)/Pci(0x2,0x0)</key>
        <dict>
            <key>AAPL,ig-platform-id</key>
            <data>BgAmFg==</data>
              </dict>
       </dict>

ということで、ig-platform-idに0x16260006を採用した場合のconfig.plistは以下のようになりました。

Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
config.plist for X36 with 5250U - Pastebin.com - Pastebin

iGPUドライバを諦める

実は、ig-platform-idを1番正しい値だと思われる0x16260006にした場合、画面が正しく出ません。-vオプションではずっと文字画面のままです。時々OSが順調に動いているらしいメッセージが出ます。実際、macOSをなんとかインストールして、LANを有効にした状態でリモートデスクトップ接続すると、macOSは正しく動作していることが確認できました。ディスプレイドライバの問題です。

調べてみたところ、iGPUを使おうとする場合のよくあるトラブルのようです。iGPUのドライバが機能しようとしているものの、他の設定が不十分で正しく表示されていない様子です。もう少し頑張ればなんとかなる状態です。一方で、ig-platform-idを全く間違った値に設定すると、ドライバー自体が起動に失敗します。その場合は標準的なデフォルトのディスプレイとして認識されるので、画面表示が出ます。ただし、グラフィックス加速が効いていないので、動作が遅く不安定で、macOS画面の半透明などの視覚効果が効きません。今回の例ですと、Hackintoolに登録されていない1番違いの0x16260007、つまりbase64ではBwAmFg==を使うと、この状態になり、一応の表示が行えます。以下はこの状態で進めました。

macOSをインストールする

このUSBメモリをX36に挿して起動します。

無事起動して、macOSユーティリティが動きました。

USBメモリーで起動したmacOSユーティリティから、mSATA SSDをフォーマットします。ここでは伝統に従ってMacintosh HDという名前をつけました。これにmacOSをインストールします。

インストール途中で再起動しますが、その時は、Boor macOS Install from xxxxという項目を選択します。

インストールが終了すれば、USBメモリ、mSATA SSDのリカバリーパーティション、そしてインストールしたmacOSの本体の選択肢が現れます。

これでUSBメモリーから起動して、本体のmSATA SSDから起動するようになりました。USBメモリーのESP部分をmSATA SSDにコピーすれば、mSATA SSDから起動するようになります。

macOSを使ってみる

前述のようにグラフィックス加速は効いていませんが一応の操作は可能です。グラフィックスはIntel HD Graphics 6000と認識されていますが、グラフィックスメモリが31MBしか無いことになってます。

サウンドは動いています。X36のオーディオ出力ジャックは、内蔵スピーカーに対応しているようです。光デジタル出力ポートも動いているようですが、対応機器を持っていないので確認できませんでした。

GeekBench 4を動かしてみたところ、マルチコアのスコアは5500くらいでした。

Geekbench Browserで他の人のベンチスコアを検索したところ、5250U搭載iMac (21.5-inch Late 2015)のGeekbench 4スコアはこの程度の値で、妥当な結果です。

まとめ

とりあえずは動作しましたが、iGPUのグラフィックスドライバが動いていないので、未完成です。Hackintool.appによると、ig-platform-idを変更するだけでなく、devicd-idを設定したり、コネクタがデフォルトでDPであるのを実装に合わせてHDMIに変更したり、フレームバッファの各種フラグを変更するなど、いろいろな選択肢があるようです。手当たり次第試してはみたのですが、正解は見つけられていません。組み合わせが多すぎて全部は網羅できていないためかもしれないです。もしくは、iGPU周りの設計がMacとは違う構成になっていて、動作困難な機種だったのかもしれません。冒頭に書きましたように、メーカー品の中古デスクトップが優秀だったので、こちらは当面お蔵入りにすることにしました。

モバイルバージョンを終了