前回までのあらすじ
非力すぎてWindows-11マシンとしては荷が重く動きが重かったASUSノートPC(5万円以下で購入した)をHackintosh化する計画を思いついたものの、その前に練習としてLinuxマシンとして動かそうというプロジェクトは(紆余曲折を経て)なんとか完了した。いまでは、SD-cardにRaspberry PI OS (Desktop)を仕込んで、そこから起動することができるようになった。(現在、おまけでついてきた"Infinite Bunner"というゲームにはまっている。)
今回は、Hackintosh化にチャレンジし、見事に失敗したことについて記録しておこう。成功するまでには、まだまだ修行が必要である。
Hackintosh失敗
AppleがPowerPCを諦めてIntelのCPUに切り替えたときは、それなりの動揺があった。しかし、これにより、Appleが売り出している純正のmacやmacbookに限らず、Intel CPUさえ搭載しているならば、巷に溢れるASUSなどの格安PCでmacOS(当時はOSXといった)を動かすことが原理的に可能になったぞ、という密かな楽しみが発生した。もちろん、自分一人でやるのはかなり難しいが、世界は広いので誰かがいずれやりだすだろうと期待していた。その先鞭をつけたのがOSx86プロジェクトだった。やってみようと思いつつも、その手順の複雑さに敷居の高さを感じたのは確かである。
なんやかんやで、結局Intel-macをhackすることなく、M1の時代を迎えてしまった(今ではもうM3まで来ているらしいが)。2023年の後半、AppleはついにIntel-macの製造をやめてしまった。OSx86から派生したHackintoshを試そうとする人は激減し、このプロジェクトの存在意義はまもなく消滅するだろう。しかし、私が持っているmacbookのうちの2台がintel-macであり、いずれも現役なのである。また、AppleはこれまでのmacOSを無料で公開し続けるはずなので、更新が終わったとはいえ、HackintoshによってIntel-PCノートを活性化させようとする人は、私同様まだまだいるのではないか?とはいえ、PowerPCが消えた経緯を思い出すと、予想以上に見事にすっとなくなったから、Intel-macにこだわる人は2年程度でほぼ壊滅する可能性もあると思う。
コロナウイルス の影響を受けて、いろいろなプロジェクトが止まり、頓挫した影響もあり、PCやmacをいじる機会は激減した。Linuxなどはもうほとんど縁がなくなってしまった。これではいけないと気持ちを入れ替えて、2024年からまた昔のように色々頑張る予定であるが、それにしてもその最初ターゲットとしてHackintoshを選んだのは、ちょっと無理があったかもしれない。このHackはhack中のhackであり、やはりかなり難しいことがわかった。とはいえ、少しずつ「リハビリ」をしながら、いずれはASUSの格安ノートPCをHackintoshにしてやろうと狙っている。ASUSではすでにRaspberry PI OSが動いているので、正直Hackintoshは趣味というか、コンピュター技術の勉強以外のなにものでもないのだが、それもそれでいいのではないだろうか?
とはいうものの、結果から言うとこの数日色々やってみたのだが、Hackintoshは見事に失敗である。現在はOCの意味について勉強中であって、なかなか先へ行けない感じである。とはいえ、その過程で色々と学んだり、思い出したりしたことがあるので、それについて書いていこうと思う。ただし、時間が限られているのではないかという心配はある。Hackintoshへの興味は世界的に急速に衰えてきている。実務のことを考えれば、M1,M2,M3チップへの対応を考えた方がよいからだ。あるいは、またLinuxへ戻るということも選択肢に入れておいた方が良いのかもしれない。ちなみに、homebrewはM1系チップに対応したそうである(あとで試してみよう)。
Hackintoshの基本
macOSの基本はDarwinである。DarwinとはNeXTStepを基盤にしたフリーOSであり、その構造は解析可能である。したがって、Hackintoshを構築するのも、Darwinをもとに考えれば理論上は可能なはずである。とはいえ、現在のHackintoshは、フリーとなったmacOSを乗せる「台車」のような感じに見える。未熟な私が言えるのはここまでであって、これ以上はもう未知の世界である。
したがって、Hackintoshの第一歩は、フリーのmacOSをかき集めることから始まる。ソフトウェアの利用にあまり文句をつけなかったMojaveが人気あるようだ。実は私がMojaveで止まっている理由もそこにある。自分で書いたプログラムを動かしたいし、世界の優秀なプログラマーが自由に書いたGNUみたいなすごいソフトを動かしたい。
macOSのかき集め方をまとめたHPがあったので、まずはここに引用しておこう。あとで役にたつと思う。
このHPにまとめられたリンクを知らなくても、google検索すればAppleの関連するapp.storeにたどり着けるから心配はいらないのだが。私は、これまで色々な経緯を経て、mojave, high sierra, そしてmontereyをダウンロードして保存している。今日は、この3つをSDカードなどにインストールして、自分のmacbook proを気分に応じてmojaveにしたり、montereyにしたりと、OSを「着替える」やり方について記録しておきたいと思う。
Hackintoshでは、この純正macOSインストーラーを、例えばASUSで作動させることを目指すわけである。そのために、CloverとかOpen Coreといったブートローダーを利用することになるのだが、ハードウェアの詳細についての知識がないと、その壁をなかなか超えられないという問題がある。私はまだそこまで到達していないから、macOSをかき集めた段階で止まっている。(注:ところが、このmacOSのかき集めの作業ですら、私はトラブルに見舞われ続けるのである....。)
大容量メディアへの複数のmacOSインストール
OSの入れ替えというのは、いつも緊張が伴う。それまで使えていたアプリが動かなくなったりするからである。データが消えてしまうようなこともある。そこで、新しいOSがどんな感じか体験するだけならば、内蔵ディスクにおけるOSの入れ替えなどはせず、SDカードなどの外部記憶装置へお試しOSを書き込んでみるという方法が存在する。一昔前は、DVDやCDに書いて試していたものだが、USB flash memoryやSDカードなどの性能が上がり、その一方で値段は下がったので、焼いておしまいのDVDではなく、USBメディアを利用する方が増えている気がするし、自分でもその方が(小さいし)便利である。ということで、今回はmacbook proの内蔵SSDに新しいmacOSを入れるのではなく、外付けの記憶メディアにインストールしてみることにした。USB flash memoryやSDカードに書き込みたいという希望はあるものの、まずは手元にあった5TBの外付けHDDを分割し、そこに複数のmacOSをインストールしてみることにする。これがうまくいけば、「macOSの博物館」のようになるのではないかと考えたわけである。練習のために、今回はmojaveとmontereyを入れてみたが、なにもこのやり方は新しく物珍しいというわけではなく、Apple自身からもそのやり方はすでに紹介されている。
つまり、「新しいハッキング技術を見つけた」というよりも、「やってみてどうだったか」という体験メモみたいなものである。
DiskUtilityでフォーマットする
今回利用するのはBuffaloの「ポータブルHDD」である。USB接続(タイプはBなのでtype-Cへの変換プラグが必要)で、容量は5TB。インストールするためには、メディアをAPFSにフォーマットする必要があるが、これはDiskUtilityで容易にしかも簡単にできる。ブート形式はGUIDとする。 コマンドで開くには
open -a Disk\ Utility
とする。
このアプリにおいて、新しい領域をフォーマットする作業は「作成」とは言わない。「消去」という。ちょっと直感と合わない表現だが、この業界ではそういうらしいので受け入れるほかはない。
(AppleのDisk Utilityのユーザーガイドのweb pageより抜粋)
macOS用のブート可能メディアはAPFS形式でフォーマットし、GPTという形式でパーティション情報のテーブルを書き込む(GPTはGUID Partition Tableの省略だが、macOSではGUID Parition Map、つまりGPMという用語を使っていることが上のイラストで確認できるが、実態は同じものである)。GPTはGUIDという構造体(128bitの記号の集合)によってパーティションの識別(ラベル)を行うEFIのためのしくみ。EFIはBIOSの後継ブートシステムのことであり、BIOSを使ってPCをブートしていた頃はGPTの役割をMBRが担っていた。
購入したばかりのポータブルHDDや、USB flash memoryはWindowsでの使用を想定しており、NTFSとかFAT32、あるいはExFATといった形式でフォーマットされていることが多いので、macbook用のブートメディアに利用するならAPFSにフォーマットをやり直す必要がある。
ちなみに、Raspberry PI OS DesktopをASUSにインストールするときに利用したbootable USB flash memoryは、FAT32とMBRを利用した。つまり、古いタイプのBIOSを利用して立ち上げたことになる。macOSでこのUSBメモリの形式を確認してみたら、次のようになった。
$ diskutil list /dev/disk3 (external, physical): #: TYPE NAME SIZE IDENTIFIER 0: FDisk_partition_scheme *124.0 GB disk3 1: Windows_FAT_32 DEBIAN RPD 124.0 GB disk3s1
MBRが設定されている場合は"FDisk_partition_scheme"と記述されるようだ。一方のFAT32の方はそのままの表現である。
(ポータブルHDDの前の練習として作った)MojaveをインストールしたSDカードの情報を確認してみたら次のようになっている。
/dev/disk3 (external, physical): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme *255.9 GB disk3 1: EFI EFI 209.7 MB disk3s1 2: Apple_APFS Container disk4 255.7 GB disk3s2
つまりAPFSフォーマットで、GPT(GUID_partition_scheme)になっていることが確認できる。また、記録メディアの「先頭」領域にEFI(つまりブート情報)が書き込まれていることも確認できる。
ちなみに、APFSにすると、以前「パーティション」と呼ばれていたものの境界は「可動境界」となる。この可動境界パーティションのことを「ボリューム」と呼ぶ。macOSのディスクは/Volumesの中にマウントされるが、この「volume」に対応するものであろう(本の「1巻、2巻...」に対応するものであろう)。ボリュームは、「コンテナ」の中にしまわれる。コンテナはメディアを一杯一杯利用するのでサイズは固定であるが、その中にボリュームが可動境界をもつ「パーティション」として作成される仕組みになっている。
macOSのダウンロード
次に、macOSのダウンロードを行う。先に紹介した「まとめサイト」からでもよいが、検索すればよい。TigerとかJaguarとかかつては有料でCD-ROMを購入していたのが、現在はすべてのmacOSが無料でダウンロードできるようになった。「爺いのつぶやき」で申し訳ないが、時代が変わったという感じがする。
たとえば、Mojaveのダウンロードは、下のWebページに貼られたリンクから、対応するApp.Storeに行き、そこでダウンロードできる。
apps.apple.comダウンロードしたファイルは/Applicationsフォルダに入るので、インストールを開始するときはクリックして始める。あるいは、ファイル名はInstall\ macOS\ Mojave.appとなるので、
open -a Install\ macOS\ Mojave
とタイプしても開始できる。
外部メディアへのmacOSのインストール
インストールメディアは内蔵ディスクがデフォルトで選ばれてしまうので、「すべてのディスクを表示」というハイパーテキストをクリックして、外部メディアをリストアップさせる(小さな文字なのでよくみないと見落とす。誤ってそのまま進むと内蔵ディスクに上書きされて、システムが初期化(というか破壊)されてしまうので気をつけないといけない)。外部メディアが表示されたら、それを選択する。ここさえ切り抜ければ、あとは「時間の問題」だけとなる。メディアの書き込み速度が遅い場合は、忍耐の限界を超えるような長時間かけてのインストール過程となる。逆に性能のよいメディアならば、あっという間にインストール作業は終了する。
BuffaloのポータブルHDDへのインストールは、Mojaveに関しては忍耐の許容範囲であったが、Montereyのインストールは限界を超えた「のろさ」であった。起動に関しても、その後のOS機能の軽快さに関しても、インストール時間との相関が認められた。やはり、読み書きの早いメディアを利用した方がよいと思う。この点については別の機会に再考したいと思っているが、今回試した三つのメディア(1)I-O DATAのUSB flash memory (2)SanDiskのSDカード(3)BuffaloのポータブルHDDに関しては \begin{equation} (1) >> (3) >> (2) \end{equation} という所要時間であった。
USB flash memoryについてはMojaveだけを今回は試してみたが、個人的にはこのインストールはもう2度とやりたくないし、それを使って起動するのも嫌だ。ましてや、起動してOSを利用することなど想像もつかない(たぶん実用的には使用に耐えられないだろう)。あくまでお試しの範囲にとどまると思う。おそらくMontereyをUSB flash memoryにインストールしようと試みるものは、その精神を病むのではないだろうか?
ポータブルHDDについてはOSの種類によって随分違ったのが驚きであった。Mojaveならなんとか使えそうに思う。しかし、Montereyについては、USB flash memoryにMojaveを入れたときと同様の「精神破壊性」が感じられた。ただ、一度起動してしまうとアプリなどはそれなりに動いてくれた。とはいえ、時折動きがフリーズ気味になるので、やはり実用には耐えられないのではないかと感じた。
SDカードに入れたMojaveは非常に快適である。これならば、SSDと同様の利用が可能だと思った。しかし、これにも落とし穴が待っていた。
Catalinaが初期OSだったマシンで起動できない問題
これまでの全ての作業は、Yosemiteがプレインストールされていた「大昔のmacbook」で行った。このマシンはその後Mojaveにアップデートし、そのまま現在に至っている。Mojaveにてすでに導入されていたSIPというシステムにより、自作アプリやgnuリソースの利用制限に関する懸念が私の心に渦巻いていたというのもあるが、諸般の事情によりCatalinaへはあえてアップデートしなかった。
Yosemite->Mojaveマシンが「老衰」の症状を見せはじめた頃、コロナウイルス が人類に襲い掛かった。オンライン会議や動画閲覧などの活動が激増したことにより、ビデオ関係の演算が増えてマシンへの負荷が毎日かかるようになり、ついに故障への恐怖が毎日脳裏をかすめるようになった。そこで、格安のCatalina-macbookを急遽購入することにしたのである。OSの改造や便利系アプリのインストールをしたり、といった小細工はせず、とにかくオンライン会議対応のためだけに「すっぴん」で利用することにした。
今回の試みにおいて、このCatalinaマシンに複数のmacOSをインストールした起動ディスクを適用した際、SIPはアプリのみならずカーネル自体にもかかっていたことを知ることになるのである。
Yosemite->Mojaveマシンでつくった起動ディスクには、MojaveとMontereyを入れた。両者とも問題なく起動する(Montereyの起動には時間がかかるし、動きも粘っこいが)。しかし、ポータブルHDDを差し替えて、Catalinaマシンに接続して起動を試みると、Montereyは起動できるのに、Mojaveは起動できない、という症状が発生した。
起動ドライブを選ぶ方法は、電源を入れる際にOptionキーを押しっぱなしにする。そうするとEFIが動いて、起動ドライブを選択するための画像がリンゴマークに続いて現れる。ここで、MojaveがインストールされたVolumeを選べば、Mojaveが起動するはずなのだが、次のような画像が現れて、ブートプロセスが止まってしまうのである。
あとで知ることになるのだが、これがまさにSIPの仕業であったのだ。具体的にいうと、購入時のmacOSよりも古いバージョンのmacOSを使って起動することが(Appleによって)禁じられているのである。MontereyはCatalinaよりも新しいMacOSなので起動することはできるが、MojaveはCatalinaより古いmacOSなので起動できないのであった!
そして、ここで初めて「kext」という概念が使われているのを知ったのである。この専門用語はHackintoshで頻繁に出てきたのだが、何が何だかわからずちんぷんかんぷんであった。しかし、今はそれがなにかわかる。簡単な説明はこちらのwikipediaで読むことができる。
CatalinaマシンでMojaveを動かそうと思ったら、Hackintoshの手法を借りて、SIPを騙して動かす以外にはない。これができたら、大きな進歩となる。しかし、いまのところは、どうやっていいのか見当もつかないというのが正直なところである(いくつか試してみたが、どれも失敗してしまった)。
「macOSの博物館」計画は、ベースとなるmacbookが古ければ古いほど「形式的には」実現できるのだが、新しいmacOSになるほど、非力なマシンには重荷になりすぎて、起動することすら辟易してしまう。かといって、新しいマシンでは古いmacOSはうごかせないので、「博物館」自体がつくれない。理想的には、後者であるのだが、それをどうしても実現したいなら、純正のmacbookをHackintoshにする必要がある、という実に矛盾したことになるのである(笑)。