Apple Siliconこと「M1」搭載のMacが好調なセールスを記録している。どのオンラインストアを眺めても、ステータスは「お取り寄せ」か数週間先の配送予定日、これから手配しても年末年始をコスパ抜群の新Macで迎えることは難しそう。せめて気分だけでも...というわけではないが、M1 Macならではの小ネタ集をお届けしたい。

仕様が変わった「macOS復旧」

Apple M1を搭載したMac(以下、M1 Mac)で大きく変わったことのひとつに、「macOS復旧」が挙げられる。リカバリーモードなどとも呼ばれるシステム復旧モードのことだが、これまで利用されてきた電源投入直後の「CommandとRキーの同時押し」は廃止、電源ボタン長押しに変更された。

この電源ボタン長押しへの変更は、起動直後にCommand+Rを押しているのにスルーされ頭が「?」となることを数回繰り返すだけのことだが、M1 MacのmacOS復旧には注意を要す変更もある。それは、ストレージの初期化だ。

M1 Mac/Big Surでは、起動ボリュームを含む内蔵ストレージの初期化に「復旧アシスタント」を利用する。Intel Mac/Catalinaまでは、ディスクユーティリティで内蔵ストレージを初期化したうえでmacOSの再インストールに進んでいたが、新体制下では「macOS復旧」画面で流れに従い先へ進まず、メニューバーで復旧アシスタントを選び、そこで「Macを消去...」を選択する。M1 Macをクリーンインストールするときには注意してほしい。

  • 電源オンからそのまま電源ボタンを押し続けていると、この画面が現れる

  • クリーンインストールするときは流れに従って操作せず、メニューバーから復旧アシスタントを選ぶこと

親から子に遺伝する「Rosetta 2」

Apple Silicon(ARM)とx86_64(Intel)両方のバイナリを収録したユニバーサルバイナリはもちろん、x86_64のみのシングルバイナリですら意識することなく使えてしまうのがM1 Mac、そして「Rosetta 2」のスゴいところ。しかもUNIX系OSならではの「プロセスの親子関係」にも適用されるという、システムの深層にまで根を張るところがRosetta 2のもうひとつのスゴさだ。

Rosetta 2はシェル/CLIでも有効だが、使用されるかどうは親プロセスに影響される。たとえば、IntelバイナリのEmacsでシェルを起動(M-x shell)すると、親プロセスたるEmacsがRosetta 2から起動されているため、そこで実行したコマンドも同じくRosetta 2経由となる。machineコマンドを実行しても戻り値はarm64eではなくi486、「uname -m」を実行してもarm64ではなくx86_64となるのだ。

プロセスがRosetta 2管理下にあるかどうかを判定する「sysctl sysctl.proc_translated」も変化する。Apple Siliconバイナリで起動されるTerminal/シェルでは戻り値が「0」だが、IntelバイナリのEmacsで起動したシェルでは「1」になる。

ただし、LaunchServices経由で子プロセスを生成するopenコマンドは例外で、「open -a ○○○○」などと起動したアプリはRosetta 2を経由せず、Apple Siliconバイナリで起動される。このあたりの理路整然としたシステムデザインが、Rosetta 2を空気のような存在たらしめているのかもしれない。

  • Rosetta 2経由で起動されたプロセスは、子プロセスもRosetta 2経由となる

  • Rosetta 2経由で実行された「machine」や「uname」の戻り値に注目

SSDの接続は「Apple Fabric」

11月のイベントでは「(前世代の)最大2倍速い」とされていたSSDだが、高速化の理由にM1のストレージコントローラと最新のフラッシュテクノロジーが挙げられていたものの、その実態はよくわからなかった。しかし、実機を入手して「ディスクユーティリティ」や「システム情報」の情報を確認すると、接続形式に「Apple Fabric」とある。

前世代のMacBookシリーズはSSDの接続プロトコルにPCI-Expressを採用していたが、今度のApple Fabricは名前のとおりApple独自のもの。AppleのWEBサイトに掲載されているM1の(かなりおおまかな)ブロック図を見てみると、CPUと直結かつキャッシュやDRAMの前段に「Fabric」とあり、これがApple Fabricを指しているのだろう。

詳細は不明だが、物理ドライブの装置名に「APPLE SSD AP0256Q」とあることからもわかるように、SSD側にも独自の仕様が設けられている可能性も高い。何が内蔵ストレージのRead/Writeを"最大2倍速く"しているのか、要因分析にはさらなる情報を待たねばならないが、M1というプロセッサの底力というか底知れなさを見る気持ちだ。

  • 内蔵SSDの接続には「Apple Fabric」が用いられている

  • M1のブロック図には「Fabric」の文字が