OpenCore Legacy Patcher、Apple Siliconサポートを開発中:Rosetta 2やARM対応を強化

OpenCore Legacy Patcher、Apple Siliconサポートを開発中:Rosetta 2やARM対応を強化

ありがとうございます!

ツイートする

OpenCore Legacy Patcher (OCLP)は、サポートが終了した古いMacに最新のmacOSをインストールすることを可能にするプロジェクトです。この度、OCLPはApple Silicon(Mシリーズチップ)への対応を示唆する変更が加えられ、さらに進化しています。この記事では、今回加えられた変更点をダイジェスト版でお伝えします。

この記事は「おんかぼ」のダイジェスト版です。
この記事の内容をより詳細に確認したい場合には「あのかぼ」の「OpenCore Legacy Patcher、Apple Siliconのサポートを開発中か Rosetta 2やARMへの対応を追加」をご覧ください。

OpenCore Legacy Patcher(OCLP)とは?

OpenCore Legacy Patcherは、Intel CPUを搭載したMacにmacOS Big Sur以降の最新バージョンのmacOSをインストールできるようにするためのツールです。

従来の対象はIntel Macのみでしたが、Apple Siliconへの対応を進めることで、さらに広範なMacユーザに最新のmacOSを提供できるようになります。

OpenCore Legacy Patcherを使用したmacOSのインストール方法は以下の記事で詳しく紹介しております。

Apple Siliconサポートの詳細

OCLPのGitHubリポジトリには、Apple Siliconサポートを示唆するコミットが複数確認されています。特に注目すべきは、5月11日と5月21日に行われた以下の2つのコミットです。

  1. Add backend support for Apple Silicon root patching」(5月11日)
    • このコミットでは、Apple Siliconデバイスに対するルートパッチの基礎部分が整備されました。具体的には、Rosetta 2の状態に応じてスナップショットの作成方法や管理方法を調整できるようになりました。
  2. sys_patch_mount.py: Fix mount variable invocation」(5月21日)
    • ルートボリュームのマウントおよびスナップショット処理に関連する変数呼び出しの修正が行われました。この修正により、動的に決定されるマウントポイントが正確に使用されるようになっています。

Rosetta 2のサポート

Rosetta 2は、Apple Silicon上でx86アプリケーションを動作させるエミュレーションレイヤーです。OCLPの5月11日のコミットでは、Rosetta 2の状態に応じてスナップショットの作成方法が異なるように調整されました。例えば、create_snapshotメソッドでは、Rosetta 2の状態に応じて異なる引数をblessコマンドに渡すようになっています。

    def create_snapshot(self) -> bool:
        """
        Create APFS snapshot of the root volume.
        """
        if self.xnu_major < os_data.os_data.big_sur.value:
            return True

        args = ["/usr/sbin/bless"]
        if platform.machine() == "arm64" or self.rosetta_status is True:
            args += ["--mount", "/System/Volumes/Update/mnt1", "--create-snapshot"]
        else:
            args += ["--folder", "/System/Volumes/Update/mnt1/System/Library/CoreServices", "--bootefi", "--create-snapshot"]


        result = subprocess_wrapper.run_as_root(args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
        if result.returncode != 0:
            logging.error("Failed to create APFS snapshot")
            subprocess_wrapper.log(result)
            if "Can't use last-sealed-snapshot or create-snapshot on non system volume" in result.stdout.decode():
                logging.info("- This is an APFS bug with Monterey and newer! Perform a clean installation to ensure your APFS volume is built correctly")

            return False

        return True

ルートボリュームのマウントとスナップショットの管理

OCLPには、ルートボリュームのマウントとアンマウント、APFSスナップショットの作成およびリバート機能が追加されました。これにより、パッチ適用後に問題が発生した場合でも元の状態に戻すことが可能です。

特にこれらの操作に特化したSysPatchMountクラスが用意され、ルートボリュームのマウントとアンマウントを管理し、APFSスナップショットの作成とリバート(元に戻す作業)がApple Siliconを搭載するMacでサポートしました。

SysPatchMountクラスにある主要なメソッドと目的は以下の通りです。

  • SysPatchMountクラス
    • _mount_root_volume
      • ルートボリュームをマウント
    • _unmount_root_volume
      • ルートボリュームをアンマウント
    • create_snapshot
      • APFSスナップショットを作成
    • revert_snapshot
      • APFSスナップショットをリバート

今後の課題と期待

OCLPがApple Siliconを完全にサポートするためには、OpenCorePkgがARMをサポートする必要があります。現時点では、ARMサポートの開発はまだ初期段階であり、多くの技術的課題が残っています。Apple Siliconの仕様が独自にカスタマイズされているため、従来のアプローチでは対応が難しい点も課題です。

しかし、OCLPの開発チームは積極的に対応を進めており、今後の進展が期待されます。次期macOSのリリースやApple Siliconのサポートに関する情報がさらに明らかになることで、古いMacユーザーにとっても大きな利便性が提供されるでしょう。

まとめ

OpenCore Legacy Patcherは、Apple Siliconサポートに向けた初期段階の変更が加えられ、今後の発展が期待されます。古いMacユーザーにとって、最新のmacOSを利用できる可能性が広がることは大きな利点です。

現在ご覧いただいている記事は「おんかぼ」で提供しておりますが、OpenCore Legacy Patcherに関するより詳しい情報をお探しの場合は、「あのかぼ」もぜひご覧ください。「あのかぼ」では、さらに詳しい解説記事を豊富に掲載しております。

「あのかぼ」のURL: https://blog.kabocy.com

また、筆者のTwitterアカウントでは最新の更新情報や追加情報も発信していますので、フォローしていただけると嬉しいです。

今後とも「おんかぼ」および「あのかぼ」をどうぞよろしくお願いいたします。