以前、シリアル番号を決めるツールとしてmacserialを紹介しました。macserialを使いやすくしたツールにGenSMBIOSがあります。OpenCoreのガイドでよく使われていますので試してみました。config.plistにシリアル情報などを書きこめて便利でした。
Table of Contents
Hackintoshの機種設定
Hackintoshを作ったら、それに機種ID、シリアル番号、UUID情報などのID情報を設定しておく必要があります。正しく設定しないと、macOSが動かないことがありますし、iCloudのサービスが使えないことがあります。さらにはユーザのApple IDが使用禁止にされてしまうこともあります。これらの設定はconfig.plistの中に書きます。CloverではSMBIOSのセクション、OpenCoreではPlatformInfoのセクションに書き込みます。
UUIDなどのIDは世界に一つしかない番号ならばなんでも良いです。uuidgenなどのコマンドで乱数発生させて作れば良いです。またOpenCoreのROM番号はEthernetのMACアドレスを流用するのが一般的です。一方でMacのシリアル番号は、生産地、生産年・週、番号、機種固有番号などから構成されています。全体の構成はMacの世代で違うことがありますし、機種固有番号は機種ごとに違います。シリアル番号の規則をリバースエンジニアリングして、生成・チェックするソフトが作られています。それがmacserialです。シリアル番号の仕組みとmacserialの使い方は、以下の記事で詳しく紹介しました。
GenSMBIOSの使い方
最近のOpenCoreのガイドでは、シリアル番号などの機種情報を生成するために、GenSMBIOSというPythonプログラムがよく使われています。 これも中ではmacserialを動かしているのですが、より簡単に使えて、さらにconfig.plistへの書き込み機能を備えているので便利です。この記事ではGenSMBIOSを使ってみます。GenSMBIOSは以下からダウンロードできます。
ダウンロードするとGenSMBIOS.commandというファイルがあります。これが本体です。Terminal.appでこれを起動します(アイコンをダブルクリックしても良いです)。すると以下のメインメニューが現れます。
####################################################### # GenSMBIOS # ####################################################### MacSerial v2.1.2 Current plist: None Plist type: Unknown 1. Install/Update MacSerial 2. Select config.plist 3. Generate SMBIOS 4. Generate UUID 5. List Current SMBIOS Q. Quit Please select an option:
このメニューを順番に説明します。
1. Install/Update MacSerial
最初のメニューは、内部で使用するmacserialの更新です。GenSMBIOS.commandがあるディレクトリの中に、Scriptsというディレクトリがあります。この中にmacserialが入っています。macserialの使い方は、過去の記事を見てください。macserialは、新しいMacが出るたびに、それをサポートするために更新されています。なので、GenSMBIOSのこのメニューは、macserialを最新版に更新します。既存のMacのシリアル番号生成規則も更新されている可能性もありますので、とりあえずは選択しておくのが良いと思います。
####################################################### # Getting MacSerial # ####################################################### Gathering latest macserial info... - MacURL: https://github.com/acidanthera/macinfopkg/releases/download/2.1.2/macinfo-2.1.2-mac.zip Downloading macinfo-2.1.2-mac.zip... - Extracting... - Found macserial - Chmod +x... - Copying to Scripts directory... Cleaning up... Done.
2. Select config.plist
生成したシリアル番号などを書き込む先のconfig.plistを指定します。ここで書き込み先のconfig.plistへのパスを入力するか、もしくは説明にあるとおりそのアイコンをドラッグ&ドロップします。すごいところは、Cloverのconfig.plistにも、OpenCoreのconfig.plistにもどちらにも対応しているところです。
####################################################### # Select Plist # ####################################################### Current: Type: OpenCore C. Clear Selection M. Main Menu Q. Quit Please drag and drop the target plist:
試しに、OpenCoreに付属のデフォルトconfig.plistであるSample.plistをコピーして、config.plistに改名して入力してみました。
3. Generate SMBIOS
GenSMBIOSのメイン機能です。このメニューでSMCIOS情報を生成します。Macの機種IDを聞かれますので、入力します。ここではiMac19,1を指定しました。
####################################################### # Generate SMBIOS # ####################################################### M. Main Menu Q. Quit Please type the SMBIOS to gen and the number of times to generate [max 20] (i.e. iMac18,3 5): iMac19,1
その結果、シリアル番号、ボードシリアル番号、UUIDが生成されます。2番目のメニューで、変更先のconfig.plistを指定してあれば、それに書き込まれます。指定していなければ、情報が表示されるだけです。その場合はテキストエディタなどで開いたconfig.plistにコピペします。
####################################################### # iMac19,1 SMBIOS Info # ####################################################### Type: iMac19,1 Serial: C02DN9ZSJV3Q Board Serial: C020453004NLNV91M SmUUID: 2BCB8DF6-7633-4F0E-B63C-975E3EFCEDFE Flushing SMBIOS entry to /Volumes/Users/bootmacos/config.plist Press [enter] to return...
今回は、前述のようにデフォルトのSample.plistと同一内容のconfig.plistを変更するように指定してあります。どのように変更されたかを確認するために、diffコマンドでconfig.plistと、元データのSample.plistを比較してみました。一見、多くの差分があるように見えますが、実は、
% diff config.plist Sample.plist 134,136c134 < <data> < Q3B1UG0AAAA= < </data> --- > <data>Q3B1UG0AAAA=</data>
とあるように、元のSample.plistで<data>情報</data>という1行で記述された内容が、GenSMBIOSの処理により3行に分けられただけの場所が多いです。このような変更点を除いた、実質的に差分のある場所は、以下でした。
% diff config.plist Sample.plist (略) 893c824 < <string>C020453004NLNV91M</string> --- > <string>M0000000000000001</string> 903c832 < <string>C02DN9ZSJV3Q</string> --- > <string>W00000000001</string> 905c834 < <string>2BCB8DF6-7633-4F0E-B63C-975E3EFCEDFE</string> --- > <string>00000000-0000-0000-0000-000000000000</string>
ということで、000000…などの数値で仮に書かれていたシリアル番号、ボードシリアル番号、UUIDの場所だけが、今回新しく生成されたデータで書き直されていることがわかります。
なお、シリアル番号は、下記のサイトでそれが未使用であることを確認しておくべきです。ここで生成された番号を入力し、「申し訳ありませんが、このシリアル番号は有効ではありません。ご確認の上、もう一度やり直してください。」と表示されれば、その番号は未使用です。今回生成した番号はOKでした。
4. Generate UUID
これはおまけ的な機能だと思いました。UUIDだけを生成します。uuidgenというコマンドを動かしているだけだと思います。ちなみにこのメニューを選択しても、config.plistには書き込まれません。
####################################################### # Generated UUID # ####################################################### 773F1659-07F1-4130-8C3B-FE2F900F9E95 Press [enter] to return...
5. List Current SMBIOS
これは現在起動中のマシンの情報を表示します。上のメニューで指定したconfig.plistファイルの内容ではありません。macserialの–infoオプションと同様に、シリアル番号の分析と有効性を表示してくれます。
まとめ
GenSMBIOSコマンドで、シリアル番号を生成して、config.plistに書き込む作業が楽になります。その過程で、シリアル番号が有効かどうかをAppleのサイトで確認しておく必要はあります。また、このコマンドでは、OpenCoreのconfig.plistにおけるPlatformInfo–>Generic–>ROMの設定は行ってくれません。Sample.plistでは0x112233445566になっています(Base64ではESIzRFVm)。任意の6バイトの数値で良いのですが、唯一の数字にしておくべきです。通常はEthernetのMACアドレスに設定しておくと良いようです。生成したシリアル番号は大抵の場合未使用ですし、ROMの値もAppleによって厳しくチェックされる情報でもありませんので、GenSMBIOSで設定すれば、とりあえずは起動してしまっても大丈夫だと思います。
次のMacのSMBIOSからおニューなシリアル番号が登場しそうですね。。。
https://applech2.com/archives/20200627-apple-serial-number-format-change.html
情報ありがとうございます。10桁のランダムな英数字番号になるってことですね。
確認後削除していただけると助かりますが,bootmacosのhttps対応化は検討されてますか?
すでにhttpsになっていると思うのですがどうでしょうか。
勘違いしてしまいました.申し訳ありません.
私の環境(Chrome on Catalina)で表示すると「保護されてない通信」と表示されていたので,https化されてないものだと・・・
Chromeでアクセスして(いつもはSafari使ってました)その警告を確認しました。調べたら、httpsに移行する前に作った画像のリンクとメニューのリンクにhttpが残存してました。リンクにhttpが含まれているとChromeはそれも警告してくれるのですね、直しましたので今は大丈夫かと思います。また何かありましたら教えてください。ありがとうございました!!
質問があります。
同一のPCを使用して、SSDでMojaveとCatalinaを起動分けする場合、Serial、Board Serial、SmUUIDは、MojaveとCatalinaで同じにすれば良いのでしょうか?
両方のOSからiCloudやiMessageを使用する前提です。
はい、同じにするのが良いと思います。
コメント、ありがとうございます。
SmUUIDがハードディスクのUUIDなのかPC自体のUUIDなのか、分からなかったので設定に躊躇していました。