見出し画像

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コーディング

いいなと思ったら応援しよう!

YaroTech|生成AIの傾奇者 記事がお役に立てたなら嬉しいです! いただいたチップは、新しいMCPツールの検証や、より深い実践実験の資金として大切に使わせていただきます。 あなたの応援が次の「AI活用の感動」を生み出す原動力になります✨ 一緒に羽ばたき続けましょう!