JailbreakMeとして知られるユーザーランド脱獄アプリの開発者であるComex氏は、次期脱獄アプリのインストール時間を大幅に短縮する方法を開発しました。彼は、既存の「スタッシング」ファイルシステムのアプローチを放棄することで、Cydiaの「ファイルシステムを再編成しています」というメッセージを排除することに成功しました。
Comex のジェイルブレイクの進歩により、iDevice のジェイルブレイクに実際にかかる時間が大幅に短縮されると予想されます。
Comex氏は、この新しい手法について長々とした技術的な説明をツイートしました。彼は脱獄プロセス中にディレクトリ内のファイルを結合するためにunionfsを使用しています。
ご存知ない方のために説明すると、脱獄で長年使われてきたスタッシング方式(Cydiaの「ファイルシステム再編成」)では、いくつかの大きなディレクトリを小さな/パーティションから大きな/varパーティションに移動し、元の場所から新しい場所へのシンボリックリンクを作成します。これにより、パッケージによってこれらのディレクトリに追加されるすべてのファイルが/varパーティションに配置され、それらのディレクトリ外で作成されたファイルのために/パーティションのスペースが解放されます。しかし、このプロセスにはいくつかの問題があります。脱獄時に非常に時間がかかる(私は速度にかなりこだわります)、古いファイルを参照している実行中のアプリケーションがないことを確認するために、脱獄時にシステムを再起動する必要がある(速度についても同様です。私はstarのように、脱獄にリスプリングさえも不要であってほしいと思っていますが、starはスタッシングを使用していたため、再起動前にいくつかのわかりにくいことが問題を引き起こす可能性があります)、カーネル内のサンドボックスコードが深刻に混乱する(各アプリケーションには許可されたファイル名のリストを持つサンドボックスがありますが、シンボリックリンクがファイルを移動した後、ファイル名が一致しなくなったため、そのコードにパッチを当てる必要があります (最近は、調整はフックするアプリケーションのサンドボックス内で実行する必要があり、さまざまなディレクトリにアクセスする必要があるため、いずれにせよパッチを当てる必要がありますが、それでも、その場しのぎのトラブルを解消できたのは良い気分です)。
unionfs(元々はsaurikのアイデアでした)では、新しいファイルは/varパーティションに作成され、/パーティションの対応するディレクトリ内のファイルとマージされます。そのため、ファイルを移動する必要がなく、ディスクリプタが無効化されることもありません。サンドボックスのコードもこの変更に気付かないはずです。また、脱獄ファイルを破壊することなくベースOSをアップグレードすることも可能になります(iOS 5のデルタアップデートで既にこれが可能になっているかもしれませんが、まだ確認していません)。
私は文字通り 1 年前 (私が愚かだったので、unionfs ではなく nullfs が必要だと思ったため、nullfs チェックインの日付です) からこれをやりたいと思っていましたが、適切に動作させることができませんでした。
だから、私が unionfs のコードに干渉したことで発生したクラッシュを取り除き、iPad 2 用に修正できること (私がダンプした iPad 2 カーネルのコピーにはシンボルが含まれていません。別のデバイスのカーネルからシンボルをコピーする小さな BinDiff のようなツールを作成しましたが、完璧ではありません)、そしてパフォーマンス上の問題がないことを願っています。」
「日曜日は楽しい日」だと言い張っているので、Comexの脱獄ツールが本日リリースされたらお知らせします。JailbreakMe 3.0は今週中にリリースされる予定です。
[ブログdna]