「雑記」

VirtualBoxにmacOSをインストールする


◆前号では、改築したサイトのCSS設定を試しながら書いたこともあってか、与太話に終始したので、新たなハッキントッシュの話を期待した読者は、失望したかもしれない。そろそろ本題に入ろう。オープンソースのVirtualBox(以下「VB」と略記)にmacOSをインストールする方法だ。
VB自体のインストール方法はあちこちに書かれているので省略する。たとえば、以下は、写真入りで設定方法を詳しく解説している。

例:How to Install macOS in VirtualBox
https://www.maketecheasier.com/install-macos-virtualbox/
わたしは、Linuxの例を紹介するが、Windowsでのガイドもたくさんある。
例:How to Install macOS 13 on VirtualBox on Windows PC?
https://iboysoft.com/howto/install-macos-13-on-virtualbox.html
なお、VBをホストにするLinuxディストロはいろいろあるが、色々試したかぎりでは、Linux Mintが一番VBに合っている気がした。関連ツールのインストールもしやすい。


◆面白いのは、上記の解説が、どちらも、インストールをmacOSのISO fileでやることを前提にしながら、肝心のISOファイルをどこでどうやってダウンロードするかについては書いていない点だ。まるで、こちらは自分で探せといった調子である。これは、Psystar Corporationが、ハッキントッシュの「非純正マシーン」を発売し、アップルに訴えられ、最終的に敗訴して、会社もつぶれてしまったことの後遺症だろう。→参考


たしかに、 "macos 13 Ventura iso file"とか検索すれば、そういうものを置いてあるサイトに行き着く。
たとえば、INTOZOOMというサイトにはmacOSのヴァーチャル化の懇切丁寧な解説があり、さらに、"Download macOS Ventura ISO for Virtualbox and VMWare"というページがあって、そのISOファイルをダウンロード出来るMediafireのリンクが表示されている→Download macOS Ventura ISO Image File MediaFire (14.65 GB)
しかしである、ここにあるのは、やってみればわかるが、Ventura beta版で、これをVBに入れようとしても途中でコケてしまうのだ。解説のねらいとしては、beta版でmacOSを起動させてアップデートすれば最新版になるというのだろうが、ハッキントッシュに無関心ではないアップルはそう甘くはない。Mediafireは、自由投稿サイトだから、そこで入手したものの有効性にはバラツキがあり、自社のマシーンだけで使うようにさせたいアップルに逆らって「堂々と」そんなものを上げているサイトはない。→これもMediaFireのベータ版だが参考までに


◆すでにマックマシーンを持っていれば、Mac App Storeからフリー(Apple IDは要る)で「リカバリーシステム」を入手することができるが、それをISOファイルに変換するにはそれなりの方法がいる。
具体的には、入手したInstallファイル(拡張子.app)をマック上で開き、そのなかのInstallESD.dmgをDisk Utilityかアップル独自のターミナルのコマンドhdiutilでISOファイルにコンヴァートする。ただし、変換されたものは拡張子が.cdrになっているので、これを.isoに書き換える。これを外に出し、インストールするヴァーチャルマシーンに飲み込ませる。まあ、こういった具合だ。

参考:How to Create macOS ISO legally https://mixedpad.com/how-to-create-macos-iso-legally/
しかし、ここでは、マックを持っていないという前提で話を進めたいので、この方法はパスする。それに、上記のやり方ではうまくいかない場合が多い。そもそもマックがあるのなら、再インストールかアップグレイドすればいいのであって、ヴァーチャルマシーンなんかいらないじゃないの。


◆もっとオープンソース的な方法としては、OpenCoreが公開している"macrecovery.py"というPython言語で書かれたプログラムを利用する方法がある。
これは、OpenCoreが開発した"an open-source alternative to Apple’s macOS bootloader" であり、アップルの「レガシー・ヴァージョン」(legacy versions)のデータベースから直接ダウンロードして、各macOSのBaseSystem.dmgを取得する。
え? これって「合法」ですかって? 諸説あるが、結論的には、例によって「個人使用」で商売に使わなければ問題ないという解釈がコンセンサスになっている。まして、VB上で動くか動かないかを試すだけなら、全く問題ないだろう。



◆では、はじめよう。まず、OpenCoregithubサイト等からダウンロードする(最新ヴァージョンはOpenCore-0.8.9)。
OpenCore-0.8.9-RELEASE.zip を解凍し、そのなかのUtilitiesというフォルダー、さらにmacrecoveryというフォルダーのなかに入る。そこにmacrecovery.pyがあるはずだ。


◆ここでターミナルを立ち上げ、macrecovery.py XXXXX(リガシー・ヴァージョンのデータ)をコマンドする。そのリストは、先のmacrecoveryフォルダーのなかのrecovery_urls.txtにリストされている。Big Surの場合は、xxxxxの部分が以下のようになる。

macrecovery.py -b Mac-2BD1B31983FE1663 -m 00000000000000000 download(リストの行の最後に"download"を入れることを忘れないこと)。
★なお、macrecovery.syはPyathonのプログラムだから、python3をあらかじめインストールしておく必要がある。通常のLinuxなら、すでにインストールされているはずだが、入っていなければ、sudo install python3をコマンドすればよい。



◆この結果、すぐにmacrecoveryのフォルダーのなかにcom.apple.recovery.bootというフォルダーが出来、そのなかにBaseSystem.dmgがある。Big SurでもVenturaでも、すべて単一の名前BaseSystem.dmgである。


◆つぎにこのdmgファイルをimgファイルに変換する。これには、dmg2imgというツールを使う。未インストールなら、sudo install dmg2imgのコマンドでインストールできる。


変換のコマンドは、単純に、dmg2img BaseSystem.dmg BaseSystem.imgである。ここで、Linuxの世界では、dmg2img BaseSystem.dmg BaseSystem.isoとコマンドすれば、isoファイルが作れるが、そうして作ったBaseSystem.isoでは、macOSのインストールは出来ない。このISOファイルは、rawファイルだからである。


◆そこで、dmg2imgで変換したimgファイルをVirtualBoxの内部ツールを使って、VB用のヴァーチャルディスクフォーマットに直接変換する方法にする。
VBで使えるフォーマット形式にはVDIVMDKVHDHDDがあるが、ここでは、VBにネイティヴなVDIを選ぶ。VBがインストールされていれば、コマンドは以下の通り。

VBoxManage convertfromraw --format VDI BaseSystem.img BigSurBaseSystem.VDI
出力ファイル名をBaseSystemからBigSurBaseSystemに変えたのは、便宜的な理由からにすぎない。
★〔追記〕VBの内部コマンドを使う上記の方法のほかに、qemu-img(これも、sudo apt install gemu-imgで簡単にインストール出来る)を使う方法がある。どうも、こちらの方がインストーラーの起動時にループを起こさない率が高いような気がする。
やり方は簡単。dmg2imgで出来たBaseSystem.imgの拡張子をrawに書き変え、以下のようにコマンドする:
qemu-img convert -f raw -O vdi BaseSystem.raw BigSurBaseSystem.vdi


◆では、いよいよVBにBaseSystemを入れ、macOSのインストールを始める。まずは、VBをたちあげると、「VirtualBox Manager」が出るから、「New」をクリックして、新OSのインストール画面を出す。Name欄をたとえば「macOS 11 Big Sur」と入れると、TypeとVersion欄にMac OS X、Mac OS Xと (64-bit)と出るが、そのままにして(ここでは、VBのヴァージョン6.1を使ったが、7.0ではもっと正確にTypeとVersionが出るかもしれない)、「Next>」をクリック。Memory sizeも設定せずに「Next>」(あとで設定しなおせる)。ただし、USBの設定だけは、macOSのすべてのヴァージョンに関しても、すべて3.0 (USB 3.0(xHCI)Controller)にしなければならないようだ。2.0や1.0にしてあると、途中で止まったり、下段で示すUSBスティックのような画面が出たりする。



◆つぎの「Hard disk」の設定以下も自動で選択されたまま進んでよいが、「File locaton and size」の欄で、ディスク容量を最低50GBぐらいは確保しておくと楽(この設定はあとでも変更できる)。



◆つぎに、さきほど作った「BigSurBaseSystem.VDI」をVBのメインフォルダーにドラッグアンドドロップかコマンドmvかで投げ込む。
デフォルトでは、ユーザーディレクトリーの下に「VirtualBox VMs」というフォルダーが出来ているからそこに移動する。状態は、上記の画像のようになる。



◆VBの「Settings」も、細かく設定してもよいが、当面、デフォルトのまま進み、「Storage」のところだけ、正確に設定する。まず、「Storage Devices」の枠のトップにある「Controller:SATA」の一番右の「+」をクリックする。「macOS 11 Big Sur-Hard Disk Selector」とご丁寧に名称まで付けた小窓が出るから、そこを見ると、先程投げ込んだ「BigSurBaseSystem.vdi」が見えるはずだから、それを「Add」する。


  
◆これでVBの設定を終了し、トップ画面の「macOS 11 Big Sur」を選択して、「Start」をクリックすれば、マックのおなじみの画面が出る。あとは、言語の選択、Utilitiesを選んでディスクの消去/フォーマット・・・とマックユーザには周知のプロセスに入っていく。ただし、VBを動かしている本体のマシーンのスペックによって、インストールが終わるまでの時間が大分違う。


 
◆なお、「Start」をクリックして、すぐに上の画面が出て止まってしまう場合は、根本的にうまく行っていないことと諦め、やり直すことを薦める。「exit」とコマンドを入れて出てくる画面で調整する方法もあるが、まずは成功しない。



この画面は、VBのUSBの設定が「USB 3.0(xHCI)Controller」になっていない場合で、3.0に設定すれば直る場合がある。


◆また、「Start」後、バラバラバラ・・・とmacOSのブートコマンドが出るには出るが、そこからハートマークの画面に行かず、ループを起こしまう場合には、以下の「マジナイ」コマンドを入れると直る場合がある。
Linuxだと、5行全部をコピーしてそのままターミナルにペーストすればよい。Windows上のVBの場合には、一行づつ入れなければならないかもしれない。
なお、以下の「マジナイ」コマンドを入れるまえに、VBで決めたヴァーチャルマシーンの名前(ここでは「macOS 11 Big Sur」を正確にコピーする必要がある。さもないと、エラーになってしまう。

VBoxManage setextradata "macOS 11 Big Sur" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "iMac11,3"
VBoxManage setextradata "macOS 11 Big Sur" "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0"
VBoxManage setextradata "macOS 11 Big Sur" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Iloveapple"
VBoxManage setextradata "macOS 11 Big Sur" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
VBoxManage setextradata "macOS 11 Big Sur" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1


◆以上で終わりである。このやり方でSnow LeopardからMontereyまでのmacOS/Mac OS Xのインストールが出来るが、いまのところ、Venturaはうまく行かない。これは、macrecovery.pyでダウンロードしたBaseSystemが、Venturaの場合には古く、アップル社の変更に対応していないためと思われる。もう少し検討してみたい。

pre-zakki  zakki-list  all
Sunday 19 Feb 2023 (update)