サイトアイコン Boot macOS

最後のIntel iMacのシリアル番号を作る

2020年モデルiMacは、macOSが動く最後のIntel iMacです。このシリアル番号を生成する方法を、更新して再度掲載しておきます。

最後の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とiMac20,2の違い

とはいえ、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のクラウドサービスに拒絶される可能性があります。

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