メインコンテンツへスキップ
見出し画像

WSL2でAntigravityは動くのか?ARM64環境で3つのエミュレータを試した40分間の記録

    こんにちは!YaroTechです。

    Day147でAntigravityを試した際、「WSL2内で動かせば完全に隔離できるのでは?」という疑問が浮かびました。

    ARM64版のSurface LaptopでWSL2(Ubuntu 24.04)を使い、x64版のAntigravityを動かそうとしたら...

    結論から言うと、現時点では不可能でした。

    でも、この「動かなかった」という結果こそが、ARM64ユーザーにとって最も価値のある情報だと思います。40分の検証で3つのアプローチを試し、なぜ動かないのかを技術的に明らかにしました。

    「自分も試してみよう」と思う前に、ぜひこの記事を読んでください。時間の節約になります!

    ※見出し画像のプロンプトは一番下におまけで公開中!


    🖥️ 実行環境

    検証PC:

    • Microsoft Surface Laptop 7th Edition

    • Snapdragon X Elite(ARM64)

    • Windows 11 Pro 25H2(ARM64)

    WSL2環境:

    • Ubuntu 24.04 LTS(ARM64)

    • WSLgによるGUI表示対応

    検証対象:

    • Antigravity(x64版 Electronアプリ)


    🎯 この記事で得られること

    • WSL2 ARM64でx64アプリを動かす3つのアプローチ

    • 各アプローチの失敗パターンと技術的原因

    • Electron/Chromiumアプリが動かない根本理由

    • 同様の検証を試みる際の時間節約


    🚨 この記事を読む前に

    この記事では、WSL2、エミュレータ、メモリ管理など専門的な用語が多数登場します。

    「SIGSEGV?TCMalloc?なにそれ?」という方は、先にこちらの用語解説記事を読むことをおすすめします:

    関連記事: 【用語解説】WSL2・エミュレータ・メモリ管理を5分で理解する|Day149の専門用語まとめ

    5分で読める補助資料です。この記事を読めば、Day149の技術的な内容もスムーズに理解できます!


    🔬 なぜWSL2で試したかったのか

    Day147でAntigravityを使った際、以下の課題がありました:

    1. UNCパス問題: `\wsl$...`での開発サーバー実行が不安定

    2. ファイル移動の手間: Windows↔WSL2間でrobocopyが必要

    3. セキュリティ懸念: AIエージェントがWindowsを直接操作する不安

    「WSL2内で完結すれば、これらすべて解決するのでは?」

    そう考えて検証を開始しました。


    📊 実験結果サマリー

    検証時間: 約40分

    | 試行 | 方法 | 結果 | エラー |
    |------|------|------|--------|
    | 1 | qemu-user-static | ❌ 失敗 | ライブラリ不足 → SIGSEGV |
    | 2 | box64 v0.3.9 | ❌ 失敗 | free(): invalid pointer → SIGABRT |
    | 3 | FEX-Emu + RootFS | ❌ 失敗 | 同じくfree(): invalid pointer |

    画像
    📊 実験結果サマリー

    3戦3敗でした。


    🧪 実験詳細

    試行1: qemu-user-static

    最初に試したのは、Linux標準のx64エミュレーション機能です。

    sudo apt install -y qemu-user-static
    ./Antigravity/antigravity

    結果(1回目): 共有ライブラリが見つからないエラー

    error while loading shared libraries: libglib-2.0.so.0: cannot open shared object file: No such file or directory
    画像
    試行1: qemu-user-staticのPowerShell実行結果

    ARM64環境にはx64用のライブラリがないため、まず起動できませんでした。

    そこで、x64用のライブラリを追加でインストール:

    sudo dpkg --add-architecture amd64
    sudo apt update
    sudo apt install -y libc6:amd64 libgtk-3-0:amd64 libglib2.0-0:amd64 ...

    今度は起動しましたが、サンドボックス関連のエラーが発生。chrome-sandboxの権限設定(`chown root:root` + `chmod 4755`)を行い、`--no-sandbox`オプションで再実行しました。

    結果(2回目): SIGSEGV(セグメンテーションフォルト)

    x86_64-binfmt-P: QEMU internal SIGSEGV {code=MAPERR, addr=0x20}
    Segmentation fault

    ライブラリを追加し、サンドボックス設定を調整しても、QEMUユーザーモードエミュレーションではElectronのような複雑なアプリは動作しませんでした。


    試行2: box64(ソースからビルド)

    次に、ARM64でx64バイナリを高速実行できるbox64を試しました。事前にDeepResearchで調査し、Electronアプリは厳しいかもしれないとの情報を得ていましたが、実際に試してみました。

    git clone https://github.com/ptitSeb/box64
    cd box64 && mkdir build && cd build
    cmake .. -DARM_DYNAREC=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo
    make -j$(nproc) && sudo make install

    ビルドは成功し、box64 v0.3.9(Dynarec有効)がインストールされました。

    画像
    PowerShellのbox64インストール実行結果
    cd ~/antigravity-wslg && BOX64_LOG=1 box64 ./Antigravity/antigravity --no-sandbox --disable-gpu

    結果: メモリ管理エラーで停止

    [BOX64] Warning: Weak Symbol OPENSSL_memory_alloc not found...
    [BOX64] Warning: Weak Symbol OPENSSL_memory_free not found...
    free(): invalid pointer
    Aborted (SIGABRT)
    画像
    PowerShellの実行結果

    多くのライブラリはネイティブラップに成功しましたが、最終的に`free(): invalid pointer`エラーでクラッシュしました。


    試行3: FEX-Emu + RootFS

    最後の手段として、より本格的なx64エミュレーション環境「FEX-Emu」を試しました。

    FEX-Emuは完全なx64 Linux環境(RootFS)を構築し、その中でx64バイナリを実行する仕組みです。

    # FEX-Emu + RootFS のセットアップ
    curl --silent https://raw.githubusercontent.com/FEX-Emu/FEX/main/Scripts/InstallFEX.py -o InstallFEX.py
    python3 InstallFEX.py
    FEXRootFSFetcher  # Ubuntu_24_04.sqshをダウンロード

    FEXInterpreterでAntigravityを実行:

    cd ~/antigravity-wslg && FEXInterpreter ./Antigravity/antigravity --no-sandbox --disable-gpu

    結果: box64が呼び出され、同じエラー

    ログを見ると、`FEXInterpreter`を実行したのにbox64が起動していることが分かりました:

    [BOX64] Box64 arm64 v0.3.9 056999e8 with Dynarec built on Dec  6 2025 10:57:31

    これはbox64がbinfmt_miscに登録されているため、x64バイナリが自動的にbox64で処理されてしまっています。

    最終的に、同じ`free(): invalid pointer`エラーで失敗しました。

    FEXBash(x64環境シェル)に入って`arch`コマンドを実行すると`x86_64`と表示されましたが、Antigravityを実行すると結果は変わりませんでした。


    🔍 なぜ動かないのか?技術的な分析

    根本原因: TCMallocとエミュレータの競合

    Antigravityの中核はElectron(Chromium)です。そしてChromiumは、独自のメモリ管理システム「TCMalloc」を使用しています。

    Chromium/Electron
        ↓
    TCMalloc(独自メモリ管理)
        ↓
    エミュレータ(box64/qemu)
        ↓
    ARM64ネイティブ

    この構造が問題です。TCMallocが行うメモリ操作が、エミュレータのメモリ管理と根本的に競合してしまいます。

    実は、これはAntigravity固有の問題ではありません。Discord、HTTP Toolkitなど、他のElectronアプリでも同様の報告があります(box64 GitHub Issue #3210 , #1478 )。

    つまり、Electronアプリ全般がWSL2 ARM64では動かないということです。


    💡 この検証から学んだこと

    1. 「エミュレータで何でも動く」は幻想

    box64やFEX-Emuは多くのx64アプリを動かせますが、Electronのような複雑なアプリは例外です。

    2. ARM64の「壁」は依然として存在する

    Day139のClaude Code on Desktop、Day115のGemini Computer Useに続き、今回もARM64の制約に直面しました。

    3. 40分で結論が出せた価値

    もし事前調査なしで試していたら、何時間も無駄にしていたかもしれません。「動かない」という情報も、立派な成果です。


    🛣️ 代替案:ARM64でAntigravityを使うには

    現時点で可能な方法:

    方法1: Windows上で直接実行(Day147の方法)

    • AntigravityはWindows ARM64版が存在

    • ネイティブで動作し、最も安定

    方法2: x64 PCを使用

    • メインPCやThinkPad X1(x64)で実行

    • WSL2内での実行も可能

    方法3: クラウド環境

    • GitHub Codespaces、AWS Cloud9など

    • x64インスタンスを利用

    WSL2 ARM64での実行は、現時点では諦めるしかありません。


    🔗 関連記事

    今回の内容に関連する過去記事もぜひご覧ください:


    📝 まとめ

    検証結果:

    • qemu-user-static: ❌ ライブラリ不足 → SIGSEGV

    • box64: ❌ free(): invalid pointer → SIGABRT

    • FEX-Emu: ❌ box64が処理し同じエラー

    根本原因:

    • Electron/ChromiumのTCMallocがエミュレータと競合

    • これはAntigravity固有ではなく、Electronアプリ全般の問題

    結論:

    • WSL2 ARM64でx64版Electronアプリは動かない

    • ARM64ユーザーは、ネイティブ版を使うか、x64環境を用意する

    この記事の価値:

    • 同じ検証をしようとしている人の時間を節約

    • 「動かなかった」という事実の共有も重要


    🚀 次回予告

    Day150は150日記念記事をお届けします!150日間の振り返りと、これからの展望をまとめる予定です。お楽しみに!


    🎨 おまけ:見出し画像作成プロンプト

    今日の見出し画像のベースはジミー(Gemini)に下記プロンプトで作成してもらいました!:

    詳細なアニメの美意識の画像を作成してください。表情豊かな瞳、なめらかな網掛けセルの色使い、はっきりした線画を使用します。アニメのシーンに典型的な身ぶりと雰囲気で、心情と登場人物の存在を強調してください。
    
    ## 🎨 見出し画像案
    
    ### デザインコンセプト
    - **背景**: 暗めの青→紫のグラデーション(夜・技術的な雰囲気)
    - **メインビジュアル**: 
      - 中央に「×」マーク3つ(3回の失敗を表現)
      - 左側にWSL2のペンギンアイコン(Linuxシンボル)
      - 右側にARMチップのイラスト
      - 下部に「40分」の時計アイコン
    - **テキスト要素**:
      - 上部: 「WSL2 × ARM64」(大きく・太字・白色)
      - 中央: 「3つのエミュレータで挑戦」(中サイズ・白色)
      - 下部: 「検証記録」(小サイズ・白色)
    - **装飾**: 回路基板パターン、エラーメッセージ風のテキスト
    
    ### 作成手順
    1. スライドサイズ(1536×1024px)の横長フォーマット
    2. 背景に暗い青→紫のグラデーション(技術的・夜の雰囲気)を設定
    3. 中央に大きな「×」マーク3つを配置(赤色、3回の失敗を象徴)
    4. 左側にLinuxペンギンアイコンを配置
    5. 右側にARMチップのイラストを配置
    6. 下部に「40min」と時計アイコンを小さく配置
    7. テキストを3段構成で追加
    8. 回路基板パターンを薄く背景に重ねる
    9. 右下に「YaroTech」のロゴを12ptで控えめに配置

    チャッピー(ChatGPT)が作ったのは下記でしたが、×が多いし、不採用です。

    画像
    チャッピー(ChatGPT)作の見出し画像

    #YaroTech #WSL2 #ARM64 #Antigravity #Electron #エミュレータ #box64 #検証記録 #生成AI #AIコーディング

     
     
    生成AIの感動を共有したいYaroTechです✨ 常識より実験。正解より行動。 生成AI時代を、先に試す傾奇者。 📝 470日間継続投稿中| 🎉 フォロワー1900名突破!🤝 質問大歓迎!みんなで「AIと共に羽ばたく」コミュニティを作りましょう🚀

    あなたへのおすすめ