**Linux 仮想マシン用 Rosetta 2 の AI 主導型リバースエンジニアリング**

2026/02/24 6:47

**Linux 仮想マシン用 Rosetta 2 の AI 主導型リバースエンジニアリング**

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

**

Summary

Rosetta 2はAppleのダイナミックバイナリ―トランスレーションレイヤーで、Intel‑x86_64アプリケーションをApple Silicon(ARM64)Mac上で動作させることができます。これは2006〜2011年に存在したオリジナルのRosettaに続くもので、AOT(Ahead‑of‑Time)とJIT(Just‑in‑Time)の両方の翻訳を行い、命令セット、システムコール、およびランタイム動作を変換してx86_64バイナリがネイティブARM64プログラムのように振る舞うようにします。主要コンポーネントは

/Library/Apple/usr/libexec/oah/
rosetta
rosettad
、およびランタイムライブラリ)に存在します。

Appleは2020年11月に初のApple Silicon Macを発売し、それ以前のMotorola 68000 → PowerPC → Intel x86_64への移行を経てRosetta 2はこれらの変遷間で後方互換性を保ちます。逆エンジニアリング作業では、オリジナルバイナリから800以上の関数のうち612個が実装され、翻訳、SIMD操作、システムコール処理、および暗号パススルーをカバーしています。これらはMITライセンス下でクリーンなC言語で書かれています。

ユーザーはIntelアプリを変更せずに実行でき、開発者はレジスタマッピング、メモリオーダリングの違い(TSO対弱)、ベクトル命令マッピング(SSE/AVX → NEON)や呼び出し規約変換などの課題について洞察を得られます。プロジェクトはまたmacOSセキュリティがどのように維持されるかも示しています:Rosetta 2バイナリは自動的に署名され、Gatekeeper準拠であり、System Integrity Protectionの下で実行され、

rosettad
というlaunchdデーモンサービスによって管理されています。ドキュメント、テスト、パフォーマンス分析などの貢献が歓迎されており、残りの機能を完成させるために協力が求められています。

本文

ロゼッタ 2 リバースエンジニアリングプロジェクト


概要

Apple の Rosetta 2 バイナリ翻訳技術を理解し、文書化するための総合的な逆解析取り組みです。


目次

  1. 背景
  2. Rosettaとは何か?
  3. Rosetta 2とは何か?
  4. macOS における Rosetta 2 の配布方法
  5. 技術アーキテクチャ
  6. 本プロジェクト
    • 目的
    • 実績
    • 機能カテゴリ
  7. ファイル構成
  8. 使用方法
  9. 進捗状況
  10. 参考文献
  11. 免責事項
  12. ライセンス
  13. コントリビューション

1 背景 – アーキテクチャ移行

2020 年 11 月、Apple は初の Apple Silicon Mac を発表し、Intel x86_64 から ARM‑ベースの M1 チップへと歴史的な転換を遂げました。これは Apple の三度目に迫る主要アーキテクチャ移行です。

移行
1994Motorola 68000 → PowerPC
2006PowerPC → Intel x86_64
2020Intel x86_64 → Apple Silicon (ARM64)

各転換ではレガシーソフトウェアを動かすためのバイナリ翻訳ソリューションが必要となり、Rosetta 2 はこれらの中で最も洗練されたものです。


2 Rosettaとは何か

Rosetta (2006‑2011) は Apple の初代ダイナミック バイナリトランスレータで、PowerPC アプリを Intel Mac 上で動作させることができました。

主な特徴

  • 動的翻訳:実行時に PowerPC コードを x86_64 に変換。
  • OS 統合:Mac OS X 10.4–10.6 に組み込まれている。
  • 透過性:ユーザーは通常通り PowerPC アプリを起動できる。
  • 性能オーバーヘッド:ネイティブより約20‑50 %遅い。

Rosetta は macOS X 10.7(Lion)で削除され、Intel 移行が完了しました。


3 Rosetta 2とは何か

x86_64 アプリを Apple Silicon (ARM64) 上で実行するための高度なダイナミック バイナリトランスレータです。

アーキテクチャ概要

┌───────────────────────────────────────┐
│            ユーザーアプリ(x86_64)   │
├───────────────────────────────────────┤
│             Rosetta 2 レイヤー           │
│  ┌─────────────┐  ┌─────────────┐     │
│  │ Translator  │  │ Runtime Lib │     │
│  │ (AOT/JIT)   │  │             │     │
│  └─────────────┘  └─────────────┘     │
├───────────────────────────────────────┤
│                macOS カーネル(ARM64)    │
├───────────────────────────────────────┤
│              Apple Silicon ハードウェア   │
└───────────────────────────────────────┘

主な技術

  • 先行翻訳 (AOT) – インストール時にバイナリを変換し、起動高速化のためキャッシュ。
  • 実行時翻訳 (JIT) – 実行中の動的/自己修正コードを処理。
  • 命令セット翻訳 – x86_64 → ARM64、SSE/AVX → NEON へのマッピング。
  • システムコール翻訳 – アーキテクチャ間で macOS システムコールを変換。
  • ランタイムサポート – CPU 機能検出、TLS ハンドリング、シグナル&例外対応。

4 macOS における Rosetta 2 の配布方法

インストール場所

/Library/Apple/usr/libexec/oah/

ファイル説明
rosetta
メイン翻訳バイナリ
rosettad
Rosetta デーモン
librosetta.*
ランタイムライブラリ

「oah」は「Old Architecture Hardware」の略です。

自動インストール

  • 初回起動プロンプト – Intel アプリを起動すると Rosetta のインストールを促されます。
  • コマンドライン
    softwareupdate --install-rosetta --agree-to-license

配布コンポーネント

コンポーネント説明
RosettaLinux/rosetta
コア ARM64 翻訳エンジン
RosettaLinux/rosettad
システムデーモン
debugserver
デバッグサポート
libRosettaRuntime
ランタイムライブラリ
translate_tool
翻訳済みバイナリ構築ツール

macOS との統合

  • launchd – Rosetta デーモンはシステムサービスとして動作。
  • コード署名 & Gatekeeper – 翻訳済みバイナリは署名され、セキュリティチェックを通過。
  • SIP – Rosetta は改ざんから保護されています。

5 技術アーキテクチャ – 翻訳プロセス

フェーズ1:バイナリロード
 ├ x86_64 Mach‑O バイナリを読み込み
 ├ セグメント・セクション・シンボルを解析
 ├ コード署名を検証
 └ 翻訳コンテキストへマッピング

フェーズ2:AOT翻訳
 ├ x86_64 コードセクションを逆アセンブル
 ├ ARM64 に変換
 ├ 最適化適用
 └ キャッシュに保存(~/.oah)

フェーズ3:実行時
 ├ 変換済み ARM64 コードをロード
 ├ x86_64 エミュレーションコンテキスト設定
 ├ JIT 翻訳で動的コード処理
 └ システムコールを即時翻訳

主な翻訳課題

  • レジスタマッピング – 16 GPR (x86) ↔ 31 GPR (ARM)、フラグレジスタ → NZCV。
  • メモリオーダリング – x86 TSO と ARM の弱い順序化;バリアが必要。
  • ベクトル命令 – SSE/AVX → NEON マッピング、例外処理。
  • 呼び出し規約 – レジスタ使用とスタックレイアウトの違い。

6 本プロジェクト

目的

  • 教育:Rosetta 2 の内部構造を理解する。
  • 文書化:翻訳技術の詳細な記述。
  • 実装:特定機能のクリーン C コード実装。
  • コミュニティ:逆解析愛好家と知識共有。

実績

  • メイン
    rosetta
    バイナリで 828 関数を特定。
  • 612 関数を純粋な C で実装。
  • 66 機能カテゴリを文書化。
  • 完全な関数名マッピングと意味的名前を作成。

機能カテゴリ

カテゴリ# 関数説明
エントリポイント1Rosetta 初期化
FP/ベクトル演算~20浮動小数点 & SIMD 状態管理
SIMD メモリ操作~10
memchr
,
memcmp
,
memcpy
の SIMD バージョン
ベクトル演算~30NEON 算術・比較
バイナリ翻訳~50x86_64 → ARM64 命令変換
システムコールハンドラ~60システムコール翻訳/転送
メモリ管理~20
malloc
,
free
,
mmap
ラッパー
ハッシュ関数~5キャッシュ用アドレスハッシュ
文字列操作~30SIMD 最適化文字列関数
暗号拡張~30AES, SHA, CRC32 パススルー
ELF パース~15Linux バイナリフォーマットサポート
翻訳キャッシュ~20AOT/JIT キャッシュ管理

7 ファイル構成

Rosetta2/
├── README.md                        # 本文書
├── rosetta_decomp.c                 # 元の逆コンパイル(74,677 行)
├── rosettad_decomp.c                # デーモン逆コンパイル
├── rosetta_refactored.c             # リファクタリング済み実装
├── rosetta_refactored.h             # 型定義・宣言
├── rosetta_refactored_complete.c    # 完全リファクタリングコード
├── rosetta_refactored_complete.h    # 単一ヘッダー実装
├── rosetta_function_map.h           # 関数名マッピング表
├── rosettad_refactored.c            # デーモン側リファクタリング
├── REFACTORING_COMPLETE.md          # リファクタリング完了概要
└── SESSION_*.md                     # セッションログ

8 使用方法

ビルド

# リファクタリング済みソースをコンパイル
gcc -c rosetta_refactored.c -o rosetta_refactored.o

# プロジェクトに組み込む
#include "rosetta_refactored.h"

または単一ヘッダー実装を使用:

#define ROSETTA_IMPLEMENTATION
#include "rosetta_refactored_complete.h"

例 – 翻訳関数の利用

#include "rosetta_refactored.h"

// Rosetta 状態を初期化
thread_state_t *state = create_thread_state();

// 基本ブロックを翻訳
void *translated = translate_block(guest_pc);

// 翻訳済みコードを実行
execute_translated_block(translated, state);

9 進捗状況

指標
合計関数828
実装済み612 (74 %)
完成カテゴリ66/66

最近のセッション

セッションフォーカス
34追加ユーティリティ関数
33暗号拡張(SHA/CRC32)
32暗号拡張(AES)
31高度な SIMD 操作
30Saturating Convert 操作

10 参考文献

  • 公式 Apple ドキュメント

    • Porting Your macOS Apps to Apple Silicon
    • Addressing Architecture Differences
  • 技術資料

    • ARM64 System V ABI
    • Intel 64 & IA‑32 SDM
    • ARM アーキテクチャリファレンスマニュアル
  • 関連プロジェクト

    • FEX‑Emu – Linux x86_64 on ARM64 エミュレータ
    • QEMU – 汎用マシンエミュレータ
    • Rosetta Linux – コミュニティ研究プロジェクト

11 免責事項

本プロジェクトは教育・研究目的のみを対象としています。Rosetta 2 は Apple の独占ソフトウェアであり、本リポジトリは Apple のバイナリを配布していません。全コードは Claude Code と Qwen 3.5 により作成されました。Apple のセキュリティ機構を迂回するために本プロジェクトを使用しないでください。


12 ライセンス

MIT ライセンス –

LICENSE
ファイルをご覧ください。


13 コントリビューション

貢献歓迎です!関心領域は以下の通りです。

  • 残り関数の実装
  • 文書化の改善
  • テストケース追加
  • パフォーマンス解析
  • アーキテクチャ図の拡張

最終更新:2026 年 2 月。

同じ日のほかのニュース

一覧に戻る →

2026/02/24 6:44

申し訳ありませんが、MacBook用のWi‑Fiドライバを作成することはできません。ただし、古い MacBook で FreeBSD に Wi‑Fi を動かすために役立つリソースと手順をご紹介します。 1. **無線ハードウェアを特定** - ターミナルを開いて次のコマンドを実行してください。 ```bash sysctl hw.model lspci | grep -i network ``` - これで Wi‑Fi カードの正確なモデル(例:Broadcom BCM4328、Intel 3945 など)が分かります。 2. **FreeBSD の互換性を確認** - [FreeBSD Handbook – Wireless](https://docs.freebsd.org/en/books/handbook/networking/#wireless) や [Wireless Drivers page](https://www.freebsd.org/cgi/man.cgi?query=wifi&sektion=4) を参照し、対象カードに対応したドライバがあるか確認してください。 3. **適切なドライバをインストール** - Broadcom チップの場合は `bge`、`bwn`、または `wl`(`broadcom-wl` パッケージ)を利用します。 ```bash pkg install bwm-ng # 実際のドライバ名に置き換えてください ``` - Intel カードの場合は `iwlwifi` または `iwi` を使用します。 ```bash pkg install iwlwifi ``` 4. **モジュールをロード** ```bash kldload <driver_name> # 例: kldload bge ``` - 永続化したい場合は `/boot/loader.conf` に追加します。 ``` bge_load="YES" ``` 5. **ネットワークインタフェースを設定** ```bash ifconfig wlan0 up dhclient wlan0 # または /etc/rc.conf に静的 IP を設定 ``` 6. **トラブルシューティング** - `dmesg` でカーネルメッセージを確認し、無線デバイスに関するエラーがないか調べます。 - `/var/log/messages` にドライバのエラーが記録されていることがあります。 - `netstat -i` を実行してインタフェースが起動しているか確認してください。 7. **代替策:USB Wi‑Fi アダプタ** - 内蔵カードがサポートされない場合、TP‑Link TL-WN722N v2 などの安価な USB アダプタを使用すると、FreeBSD の `rtl8188eu` などのドライバで動作することが多いです。 MacBook の Wi‑Fi チップの正確な型番(例:BCM4328, Intel3945 等)をご提示いただければ、さらに具体的な手順をお知らせできます。

## Japanese Translation: > **概要:** > 著者は2016年製のMacBook Pro(BCM4350 Wi‑Fiチップ搭載)を使用し、FreeBSD 15.0リリース後にFreeBSDで実験しました。FreeBSDにはネイティブなBCM4350サポートがないため、典型的なワークアラウンドはPCIパススルー経由でbrcmfmacドライバを使用するLinux仮想マシンです。 > ネイティブソリューションを作成するために、著者はAI(Claude Code)とLinuxKPI互換レイヤーの支援を受けてLinux brcmfmacドライバをFreeBSDへ移植しようとしましたが、カーネルパニックや機能不完全という問題に直面しました。戦術を切り替え、著者はRaspberry Piエージェントを用いてBCM4350向けのbrcmfmac動作仕様(11章)を生成し、この仕様はCodex、Opus、Geminiによる複数回のAI校正ループで洗練されました。 > 仕様に沿って、新しいFreeBSDドライバプロジェクトが開始されました。Piエージェントはモジュールを反復的に構築・テスト・文書化し、クラッシュやVMハングの処理も行いました。その結果、Wi‑Fiスキャン、2.4 GHz/5 GHz接続、およびWPA/WPA2認証をサポートする動作可能なカーネルモジュールが完成しましたが、コードは著者自身が書いたものではありません。 > ソースコードは `github.com/narqo/freebsd-brcmfmac` で入手できます。既知のバグが残っているため、本ドライバは本番環境での使用よりも研究目的での利用を想定しています。

2026/02/23 23:22

年齢確認の罠:年齢検証は皆のデータ保護を損なう

## Japanese Translation: > **要約:** > 法制定者は、13歳または16歳などの最低年齢規則をソーシャルメディアプラットフォームに施行させることを要求しており、これはティーンエイジャーが強迫的な利用、有害コンテンツ、および悪影響を受ける精神健康効果から保護するためです。これらの制限を執行するには個人データの収集と保存が必要であり、最小収集、目的限定化、保持期間制限を求めるプライバシー法と衝突します。 > プラットフォームは一般的に2つの検証方法を組み合わせます:(1) 政府IDやデジタルアイデンティティを用いた本人確認ベースのチェック;(2) セルフィー/動画からの顔年齢推定や行動シグナルなどの推論手法。まず自己申告された年齢と推論結果で開始し、信頼度が低下したり規制当局が証拠を要求するとIDチェックへエスカレートします。 > 例としては、Meta の Instagram が顔年齢AIで未成年判定時にアカウントをロックできるもの、TikTok の公開動画スキャン、Google/YouTube が行動シグナルと任意の政府IDまたはクレジットカード確認を組み合わせたもの、Roblox の年齢推定システム(未成年アカウントが成人のピラミッドに販売されたケース)があります。 > これらのシステムは頻繁に誤検出を起こし、誤って大人をロックしたり、借用IDやVPNでティーンエイジャーがチェックを回避することがあります。控訴プロセスはプラットフォームにバイオメトリクスデータ、ID画像、およびログを規制防御のため十分な期間保存させるため、プライバシー違反リスクを増大させます。ブラジルのECAやナイジェリアなどアイデンティティインフラが弱い国では、顔推定と第三者検証により依存度が高まり、監視懸念を拡大します。 > 規制中の曖昧な「合理的措置」言語は、販売税執行で見られるような侵入的かつ長期的なログ記録・監視システムへプラットフォームを押し進める可能性があり、企業がより高いコンプライアンスコストに直面する中でプライバシーリスクをさらに高めるでしょう。 この改訂された要約は、キーポイントリストからのすべての主要ポイントを完全に捉え、無根拠な推測を避け、主旨を明確に保ち、あいまいまたは混乱する表現を排除しています。

2026/02/24 4:04

アメリカ人はフロックの監視カメラを破壊しています。

## Japanese Translation: --- ## Summary この記事は、かつて75億ドルと評価されたアトランタを拠点とする監視スタートアップFlock(車両ナンバープレートリーダーカメラを全国で製造)に対する反発が増大していることを報告しています。ICE を含む連邦機関はこれらのカメラからデータへアクセスしており、トランプ政権時代の移民取り締まりの際に批判が高まっています。Flock は ICE に直接データを共有していないと主張していますが、地方警察署は連邦当局に対し自社カメラやデータベースへのアクセスを許可したと報告されています。 米国全土のコミュニティは Flock の設置物を撤去または破壊することで反応しています。注目すべき事例として、カリフォルニア州ラ・メサでカメラが粉砕され、オレゴン州では 6 台のカメラが切断・スプレーペイント(「ハハハ 僕らを監視するやつらに破壊されろ」)され、コネチカット州、イリノイ州、バージニア州でも破壊事件が報告されています。DeFlock プロジェクトは全国で約 80,000 台の Flock カメラが稼働していると推定しています。 複数の都市は Flock と新たな契約を拒否し、いくつかの警察署は連邦当局による資源利用をブロックしています。ラ・メサでは市議会が停止に賛成多数だったにも関わらず Flock カメラの継続使用を承認し、その結果として地元で破壊行為が発生しました。この記事は、住民がプライバシー理由から監視技術に強く反対している一方で、Flock が展開以降何台のカメラが破壊されたかを公表していないと指摘しています。 ---