サイトアイコン Boot macOS

第9世代CPU用のSMBIOSを書く

iMac Early 2019でようやく第9世代CPUがサポートされました。出回っている機種情報を使ってシリアル生成ソフトを用意して、config.plistのSMBIOSセクションを作りました。実機に近い設定ができたと思います。

iMac E2019の情報

以下で紹介しましたが、新型iMac Early 2019 (27インチのiMac19,1と21.5インチのiMac19,2) が出たおかげで、macOSもようやく最新のデスクトップCPUに対応しました。ただし新型iMacには、最新の10.14.4のビルド番号18E226よりも新しいバージョン (18E2034) が搭載されているようです。第9世代CPUに完璧に対応したmacOSを一般人が入手できるのは次のバージョン (10.14.5もしくはSU) になりそうです。

昨日(2019/3/19)、唐突に発表された新型27インチiMacに、第9世代CPUがようやく搭載されました。第8世代CPUを搭載したiMacもいくつか発表されました。搭載されているCPUの具体的な型番は公表されていませんが、第9世代CPUはCore i5-9600KとCore i9-9900Kのようです。21.5インチモデル21.5インチモデルでは新型2機種が発表されました。いずれもRetina 4Kディスプレイモデルです。ここでは仕様のページに準じて、CPUのクロック数でモデルを区別します。新発売されたのは以下の2機種です。3.6GHzモデル新発売の21.5インチの下位モデルです...
新型iMacに第9世代CPUがようやく搭載される - Boot macOS

ここで参考にした情報は、「マックお宝」が公開しているYoutubeのビデオ、Geekbenchのスコアページ、店頭で見てきた情報などです。

シリアル番号

シリアル番号は「このMacについて」を見ればすぐにわかります。現在店頭にあるiMac E2019は、全て中国製で、(当たり前ですが)2019年製造です。なので、シリアル番号の最初4桁は、全てC02Yです。シリアル番号の仕組みはこちらをご覧ください。

Hackintoshを作る時には、機種IDやシリアル番号などのいくつかのIDを決める必要があります。今回はシリアル番号とボードシリアル番号の文字・数値の意味を説明します。以下の、シリアル番号自動生成ツールの資料とソースコードを参考にしました。Hackintoshに必要な番号HackintoshがMacとして機能するためには、機種ID、様々なシリアル番号、ファームウェアバージョンなどを決めておく必要があります。これらはconfig.plistのSMBIOSセクションに記述されます。Clover configuratorを使うと、Macの機種を指定するだけでSMBIOSに書くべき...
Macシリアル番号の仕組み - Boot macOS

次の桁は製造月ですが、店頭にある製品は9週もしくは8週です。9週のものが多かったです。2019年の第9週は2/26から3/4の週で、8週はその前の2/19から2/25の週を表します。

次の3桁は製造ライン番号と言われていて、製品個別の番号です。最後の4桁がモデルコードです。iMac19,1のモデルコードにはJV3Q, JV3P, JV3N, JV40が、iMac19,2のモデルコードにはJWDW, JWDXが発見されました。この他にも多数のコードがあるはずです。みなさんも発見できたら是非ともコメントでおしらせください。他の記事でも紹介していますが、正しいモデルコードならば次のURLのPPPPの場所に指定すると該当マシンの仕様ページが表示されます。

http://support-sp.apple.com/sp/index?page=cpuspec&cc=PPPP

以上のことから、現在店頭にあるシリアル番号は、C02Y9xxxJV3Qなどとなります。

ボードシリアル番号

ボードシリアル番号は、シリアル番号より確認しづらいです。後述のmacserialプログラムでも確認できますが、macOSの標準コマンドでしたらnvramコマンドが使えます。ターミナルから次のコマンドをタイプすれば表示されます。

nvram 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:MLB

現在店頭にあるiMac E2019のボードシリアル番号は、本体と同じく中国製のようです。製造年は、当然ながら2019年で、製造週は、本体より1週間早く、07週もしくは08週でした。ボードシリアル番号の後半には、ボートの種類を示すボードコードがあります。iMac19,1のボードコードにはLNV9, KDP0が、iMac19,2のボードコードにはKGQGが発見されました。なので、現在店頭にある製品のボードシリアル番号は C02908xxxxxLNV9xxなどになります。

その他のID

ボードIDは、iMac19,1がMac-AA95B1DDAB278B95、iMac19,2がMac-63001698E7A34814でした。これはGeekbenchのページでも確認できます。これ以外にはありません。

また、システム情報に出てくる番号として、ブートROMのバージョンがあります。これはどれも220.250.368.0.0でした。

シリアル生成プログラム

シリアル番号の仕組みの記事では、シリアル番号を自動生成してくれるプログラムmacserialをご紹介しました。これをforkさせていただき、上記で得たシリアル番号生成のための情報を付け加えました。これでiMac E2019のシリアル番号を自動生成できます。Intelの8600, 9600K, 9900KをCPUとして使用したHackintoshを作る場合には、iMac19,1のシリアル番号が最適です。8100, 8500, 8700の場合は、Macmini8,1でも良いかもしれませんが、iMac19,2も使えます。コンパイルしたバージョンのmacserialをこちらに置いておきました。

Decode mac serial number. Contribute to bootmacos/macserial development by creating an account on GitHub.
Releases · bootmacos/macserial - GitHub

./macserialとして起動すると現在のマシンのIDを表示します。./macserial -hでヘルプが出ます。iMac19,1のシリアル番号を生成したいのでしたら、./macserial –model iMac19,1とタイプすると、シリアル番号、ボードシリアル番号の一覧を出してくれます。

./macserial --model iMac19,1
 C02YC017JV3Q | C02909207GULNV9AD
 C02Z7JYAJV3Q | C02933102GULNV9JA
 C02YNYZNJV3Q | C02918200GULNV91F
 C02ZP0XSJV3Q | C02946802QXLNV91H
 C02YRAYQJV3Q | C02921200GULNV9A8
 C02YN3ZGJV3Q | C02918403GULNV9CB
 C02YM085JV3Q | C02917403CDLNV9AD
 C02ZC0AFJV3Q | C02936303GULNV91F
 C02Y800NJV3Q | C029078024NLNV9FB
 C02ZP2YPJV3Q | C029467004NLNV91M

./macserial –info <serial>とすると、そのシリアルの情報を表示します。例えば、上の例の最初の候補の場合、

./macserial --info C02YC017JV3Q
        Country:  C02 - China (Quanta Computer)
           Year:    Y - 2019
           Week:    C - 10 (05.03.2019-11.03.2019)
           Line:  017 - 41 (copy 1)
          Model: JV3Q - iMac19,1
          Valid: Possibly

と表示されます。2019年第10週の製造です。最初の製品の2週間後の製造なので、ちょうど良いくらいかと思います。数か月後くらいの多少の未来の番号でもおそらく大丈夫だと思います。しかし、最初の製品が第8週製造なので、これよりも以前の2019年1~7週の番号は避けた方が良いと思います。

シリアル番号を既に決めているのであれば、./macserial –mlb <serial>で、同じ国で、前の週に製造されたロジックボードのシリアルを生成してくれます。

./macserial --mlb C02YC017JV3Q
 C02909108GULNV9AD

SMBIOSを書く

それではiMac19,1に限りなく近い設定のSMBIOSセクションを書いてみましょう。上記の例のシリアル番号・ボードシリアル番号を使う場合、以下のようになるかと思います。(皆さんのご自分の番号を使ってください)SmUUIDも、ターミナルのuuidgenコマンドで適当に生成して記入してください。

<key>SMBIOS</key>
	<dict>
		<key>Board-ID</key>
		<string>Mac-AA95B1DDAB278B95</string>
		<key>BoardSerialNumber</key>
		<string>C02909108GULNV9AD</string>
		<key>EfiVersion</key>
		<string>220.250.368.0.0</string>
		<key>ProductName</key>
		<string>iMacm19,1</string>
		<key>SerialNumber</key>
		<string>C02YC017JV3Q</string>
		<key>SmUUID</key>
		<string>XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX</string>
	</dict>

Board-IDはiMac19,1に使用されているロジックボードIDを入れました。EfiVersionは、ここに書いておけば、本物のiMac E2019と同様に、「システム情報」のブートROMのバージョンの項目に表示されます。これ以外のSMBIOSの項目はCLOVERが自動生成してくれます。もしかしたら現バージョンのCloverはiMac19,1に対応していないかもしれませんが、将来のバージョンでは対応するはずです。

このSMBIOSを使ってみた

このSMBIOSを9900K搭載のHackintoshに設定し、App Storeで配布されている通常のmacOS Mojave 10.14.4 (18E226)で使ってみたところ、残念なことに起動しませんでした。こんな画面になってしまいました。

一般配布されている10.14.4は、iMac19,1に搭載されているビルド番号18E2034と異なっていて、ボードIDがサポートされていないようです。10.14.5まで待てば解決されるかと思います。それまでの間は、config.plistのBootオプションに、

<key>Boot</key>
   <dict>
     <key>Arguments</key>
     <string>-no_compat_check</string>

と記載して、互換性チェックをしないように指定しておくことにしました。

iMac E2019対応の10.14.4を入手する

と、思っていたところ、iMac E2019対応の10.14.4 (18E2034)を入手する方法をコメント欄で教えてもらいました。おかげさまで、-no_compat_checkのブートオプションを付けなくても起動するようになりました。この10.14.4を入手する方法は簡単で、iMac19,1 または19,2に設定したマシンでApp Storeを起動して、Mojaveを検索してダウンロードするだけです。これをインストールすると、iMacに搭載されているビルドと同じ18E2034になります。それでも、プロセッサは「不明」と表示されてしまいます。これはちょっと謎です。

Clover ConfiguratorがiMac19,xに対応

macserialをforkしてiMac19,1, 19,2に対応させた後、オリジナルのmacserialのacidantheraさんにPull requestsしておきました。そうしたらすぐに承認されて、macserialのソースコードに反映されました。コミュニティへの本当に些細な寄与ですが、初めてなので嬉しいです。その結果、かどうかわかりませんが、Clover ConfiguratorもiMac19,xに対応してくれたようです。これでSMBIOSが簡単に作れるようになりました。

シリアル番号をいくつか発生させてみたところ、上で紹介したモデルコードとボードコードを使ったシリアルが現れます。今回調べた情報を使ってくれているようです。

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