Repolode
ish-app

ish-app/ish

脱獄不要で、ユーザーモードエミュレーションとシステムコール変換によりiOS上でx86 Linuxユーザーランドを動かすシェル。

スター
20,677
フォーク
1,600
未解決の Issue
647
最終コミット
15 日前

これは何?

iSHは、iOSにLinuxシェルをもたらすプロジェクトです。ユーザーモードでx86命令をエミュレートし、LinuxのシステムコールをiOS相当のものに変換することで、通常のiOSアプリ内でx86 Linuxユーザーランドのプログラムを実行します。

このプロジェクトには、マシンコードを生成する代わりに、連結した関数ポインター(「gadgets」)を通じてエミュレートした命令を振り分ける独自のインタープリターが含まれています。作者によると、単純なswitchベースのディスパッチと比べて約3〜5倍高速で、gadgetsの大半はアセンブリで書かれています。

iOSアプリに加えて、リポジトリには他のプラットフォームでのテストに使えるコマンドライン版のビルドも用意されています。単体で完結したAlpine Linuxのルートファイルシステムを利用でき、strace風のシステムコールログや命令単位のトレースなど、ログ出力先を設定できます。

主な機能

  • 01ユーザーモードエミュレーションにより、iOS上でx86 Linuxユーザーランドのプログラムを実行します。
  • 02LinuxのシステムコールをiOS相当のものに変換します。
  • 03スレッドコード方式のインタープリターで、命令のディスパッチを高速化します。
  • 04単体で完結したAlpine Linuxのファイルシステムを実行できます。
  • 05システムコールのトレースなど、ビルド時に設定できるログ出力先を備えています。

ユースケース

  • iPhoneやiPadでLinuxのコマンドラインツールを実行する。
  • x86エミュレーションやシステムコール変換の仕組みを学ぶ。
  • iOS上でポータブルなAlpine Linux環境を試す。

クイックスタート

  1. 1

    git submoduleも含めてリポジトリをcloneします

    git submodule update --init
  2. 2

    ビルドツールのMesonをインストールします

    pip3 install meson
  3. 3

    Mesonでビルドディレクトリを作成します

    meson build
  4. 4

    ビルドディレクトリでNinjaを使ってコマンドラインツールをビルドします

    ninja

使う前に知っておきたいこと

  • メインアプリの対象はiOSです。デバイス向けにビルドするには、XcodeとAppleの開発環境が必要です。
  • メタデータには明確なライセンスが記載されておらず(NOASSERTION)、再利用の条件が不明です。

トピック

よくある質問

ish とは?
脱獄不要で、ユーザーモードエミュレーションとシステムコール変換によりiOS上でx86 Linuxユーザーランドを動かすシェル。 iSHは、iOSにLinuxシェルをもたらすプロジェクトです。ユーザーモードでx86命令をエミュレートし、LinuxのシステムコールをiOS相当のものに変換することで、通常のiOSアプリ内でx86 Linuxユーザーランドのプログラムを実行します。
ish は無料で使えますか?ライセンスは?
ish は Other ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
ish は今もメンテナンスされていますか?
活発にメンテナンス中。ish の最終コミットは 2026年10月24日 です。
ish は何に使えますか?
iPhoneやiPadでLinuxのコマンドラインツールを実行する。 x86エミュレーションやシステムコール変換の仕組みを学ぶ。 iOS上でポータブルなAlpine Linux環境を試す。
ish のインストール方法は?
git submoduleも含めてリポジトリをcloneします: git submodule update --init ビルドツールのMesonをインストールします: pip3 install meson Mesonでビルドディレクトリを作成します: meson build ビルドディレクトリでNinjaを使ってコマンドラインツールをビルドします: ninja
ish はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/ish-app/ish

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト