2020年モデルiMacは、macOSが動く最後のIntel iMacです。このシリアル番号を生成する方法を、更新して再度掲載しておきます。
Table of Contents
最後のIntel iMac
macOSが動作する最新で最後のIntel iMacが2020年iMacです。モデルIDは、iMac20,1とiMac20,2です。第10世代Intel CPUを搭載した自作PCで、現行のmacOSを動作させるとしたら、このiMacを模倣することになると思います。
iMac20,1と20,2の違いは搭載されているRadeon GPUの違いです。他には大きな違いはないと思われます。
とはいえ、iMac20,1の方が、広いCPUをカバーしています。また、次に述べるように、iMac20,2は、あまり出回っていませんので、シリアル番号に関する情報も少ないです。なので、自作PCの機種IDには、iMac20,1を選んでおくのが良いと思います。
シリアル番号を作る
macOSの起動には、コンピュータハードウェアにシリアル番号が必要です。実際のMacでは、マザーボードのファームウェアの中にシリアル番号が書き込まれています。自作PCでは、ESPの中のconfig.plistに書いておきます。OpenCoreがこの情報を、Macのシリアル番号としてmacOSに伝えてくれます。
OpenCoreのconfig.plistに書くべきシステムシリアル番号 (SystemSerialNumber)、ボードシリアル番号 (MLB) を自動生成してくれるツールの一つにmacserialがあります。OpenCore配布サイトや、Kext Updateでダウンロードすると、
OpenCore bootloader. Contribute to acidanthera/OpenCorePkg development by creating an account on GitHub. Releases · acidanthera/OpenCorePkg - GitHub |
ダウンロードされたファイルの、OpenCore/Utilities/macserialの中に、macserialコマンドとして入っています。これを
$ ./macserial
として起動すると、現在のMac/Hackintoshのシリアル番号などの情報が表示されます。–helpとすれば使い方の説明が表示されます。
$ ./macserial --help ./macserial arguments: --help (-h) show this help --version (-v) show program version --deriv <serial> (-d) generate all derivative serials --generate (-g) generate serial for current model --generate-all (-a) generate serial for all models --info <serial> (-i) decode serial information --list (-l) list known mac models --mlb <serial> generate MLB based on serial --sys (-s) get system info Tuning options: --model <model> (-m) mac model used for generation --num <num> (-n) number of generated pairs --year <year> (-y) year used for generation --week <week> (-w) week used for generation --country <loc> (-c) country location used for generation --copy <copy> (-o) production copy index --line <line> (-e) production line --platform <ppp> (-p) platform code used for generation
–generateオプションで現在モデルのシリアル番号とボードシリアル番号を複数生成してくれます。–genarate-allで全てのモデルの番号を生成します。–model iMac20,1などとすれば特定のモデルの番号を生成してくれます。iMac20,1のシリアル番号を生成した例が以下です。|の左側がシステムシリアル番号で、右側がMLBです。
% ./macserial --model iMac20,1 C02G39Y0PN5T | C02129300GUPHC11M C02GQ1ZMPN5T | C02147200CDPHC1FB C02G6SYFPN5T | C02132600J9PHC11H C02H9ZYYPN5T | C02208207GUPHC11H C02CQ0GZPN5T | C02020501J9PHC1JA C02D1UYRPN5T | C02027501GUPHC1JA C02CL1Z8PN5T | C020161004NPHC1CB C02CNLZ5PN5T | C02018902QXPHC1JA C02CRWYHPN5T | C02021902GUPHC1AD C02DPKYTPN5T | C020462074NPHC18C
iMac20,2のシリアル番号も生成してみます。
% ./macserial --model iMac20,2 C02DJUZW046M | C02041405GU0000UE C02HH0XD046M | C022136004N0000JC C02D80SH046M | C020344054N0000UE C02DQ9ZN046M | C02047310QX0000FB C02FP0V0046M | C02119303CD00008C C02CK06Z046M | C02015403J900008C C02CKLY4046M | C020153034N0000JC C02FQKZ1046M | C021203034N0000AD C02DQPZS046M | C02047100GU00001H C02FKTZZ046M | C02115802J90000JA
iMac20,2では、MLBの最後の方の4文字が0000になってます。ここは機種依存の情報の場所です。iMac20,2は、iMac20,1に比べてほとんど出回っていません。Apple Storeの店頭にもありません。なので、この部分の情報がなく、0000になってしまっているようです。自作するならば、割り当てるべき情報が判明しているiMac20,1を選んだ方が良いでしょう。
–info シリアル番号でそのシリアル番号を分析してくれます。例えば、上記のiMac20,1の例で生成した最初のシリアル番号C02G39Y0PN5Tでしたら、
% ./macserial --info C02G39Y0PN5T Country: C02 - China (Quanta Computer) Year: G - 2021 Week: 3 - 29 (16.07.2021-22.07.2021) Line: 9Y0 - 1700 (copy 1) Model: PN5T - iMac20,1 SystemModel: iMac (Retina 5K, 27-inch, 2020) Valid: Possibly
のように表示されます。2021年の第3週から第29週製造のモデルとのことです。
実存しないことの確認
シリアル番号はランダムに生成されます。実存するMacと同じ番号が生成されることは滅多にありませんが、念のために確認します。確認のためには、以下のAppleのサイトを利用します。
Check your Apple warranty status. Enter a serial number to review your eligibility for support and extended coverage. Check Your Service and Support Coverage - Apple Support - |
このページに、生成されたシリアル番号を入力して、
上記のように「有効なシリアル番号を入力してください。」と表示されたらOKです。保証期間などの情報が現れてしまったら、このシリアル番号のMacを誰かが実際に使っている可能性があります。iCloudサービスなどを使用する際に問題が生じる可能性がありますので、別のシリアル番号を使用します。
config.plistに書き込む
問題がなければ、このシリアル番号をOpenCoreのconfig.plistで使えます。config.plistのplist:Platforminfo:Genericの部分に機種固有情報を以下のように書き込みます。(以下は例です。この機種情報は使わないでください)
<key>Generic</key>
<dict>
<key>AdviseFeatures</key>
<false/>
<key>MLB</key>
<string>C02129300GUPHC11M</string>
<key>MaxBIOSVersion</key>
<false/>
<key>ProcessorType</key>
<integer>0</integer>
<key>ROM</key>
<data>112233445566</data>
<key>SpoofVendor</key>
<true/>
<key>SystemMemoryStatus</key>
<string>Auto</string>
<key>SystemProductName</key>
<string>iMac20,1</string>
<key>SystemSerialNumber</key>
<string>>C02G39Y0PN5T</string>
<key>SystemUUID</key>
<string>EEF45689-BBE5-4FB6-9E80-41B78F6578E2</string>
</dict>
macserialコマンドで作成した情報を、MLBとSystemSerialNumberに書き込みます。そのほかに、固有の番号としてROMとSystemUUIDがあります。
ROMは、本来はMac搭載のROMの固有IDらしいですが、固有ならばなんでも良いようです。なので、OpenCoreのガイドでは、EthernetカードのMACアドレスを使うと良いと説明しています。適当な6バイトのデータでも良いようです。
SystemUUIDもユニークならばなんでも良いです。Macのターミナルには、uuidgenというコマンドがあり、適当にUUIDを作ってくれるので、これを使います。上記の例では、この値を書き込んでいます。
% uuidgen EEF45689-BBE5-4FB6-9E80-41B78F6578E2
まとめ
第10世代Intel CPUを使った自作PCに、macOSをインストールする際に必要な、機種固有情報の作り方を紹介しました。ここで作成した、SystemSerialNumber, MLS, ROM, SystemUUIDをOpenCoreのconfig.plistに書き込んでおきます。実際にインストールする際には、記事の中の機種固有情報とは違うものを使ってください。
これらの機種固有情報は、一旦設定したら、できる限り変更しないほうが良いです。機種固有情報が頻繁に変化するデバイスは、Appleのクラウドサービスに拒絶される可能性があります。