https://github.com/Atmosphere-NX/Atmosphere/releases
また、fincs氏がSwitchでnro形式のHomebrewを起動するための nx-hbloader v2.0.0 をリリースしていました。
https://github.com/switchbrew/nx-hbloader/releases
(この記事でnx-hbloader v2.0.0のリリースを伝えたのはついでです。変更点は訳すのが面倒なので訳しません。)
7月,8月,9月、とリリース予定もとい見込みが延びに延びていたAtmosphereがついにリリースされました。
まず最初に書いておくと、バックアップ起動目的でCFWを触っている方は、"今の所は"乗り換える必要はありません。
リリースされた物にはESパッチやFSパッチが付属していません。また、もちろんXCIもサポートされていません。
(ESパッチ及びFSパッチに関しては後述)
(XCIに関しては、当初よりAtmosphereではサポートされる予定では無かったので、サポートされていないのは当然です。)
Atmosphereが目指し実現したのはSwitchのシステムモジュール等への単純なパッチではなく、再実装です。
よってその点では、開発中だったAtmosphereをベースにしたRajNXや、Atmosphereをベースにしたと言われているSX OSは、
(バックアップ起動の事を抜きして)Atmosphere 0.7.0の機能と比べると、Atmosphereには劣っていると言えます。
ReiNXはオプションのKIP以外はAtmosphereと同じではないらしいので、0.7.0と比べるのは少々難しいかもしれません。
(source)
リリースページに書かれた内容に関しては、この記事の最後に雑な訳を置いておきます。
今回リリースされたのはAtmosphere(CFW)とAtmosphereのブートローダー(ペイロード)です。
CFW側は、Atmosphereを動作させるために必要な物のみが入っています。
ペイロード側は、同じくブートローダーなhekateとは違い、Atmosphere専用です。
ips/ips32でkipへのパッチとカーネルへのパッチを適用できる事がhekateとの違いです。
SciresM氏はhekateを「代替となるブートローダー」と表現しており、hekateでもAtmosphereを起動可能とされています。
しかしながら、「今回リリースされたファイル」ではhekateで起動出来ません。
(fusee-primary.binをペイロードとして使用するならhekateでもAtmosphere 0.7.0は起動可能)
というのも、KIP等のファイルがfusee-secondary.binというファイルにまとめられた状態でリリースされています。
hekateがサポートしているのはKIPなため、hekateで起動するためにはKIPとしてコンパイルしなければいけません。
上記の事が理由で、fusee-primary.binではHomebrewのNSPやXCIからNSPに変換した物は、起動もインストールも出来ません。
それらを実現するにはFSパッチが必要となりますが、AtmosphereはFSパッチに関してはhekateに依存している状態です。
ipsの形でFSパッチが実現するならfusee-primary.binでも良いのかもしれませんが、現状そういった話は聞きません。
記事の最初でバックアップ起動について書いた理由がこれです。
ESパッチに関しては、rajkosto氏がRajNXに採用しtumGER氏がSDFilesSwitchに採用したrajkosto氏のパッチが使用可能です。
(Signature Patches by Rajkosto)
つまりESパッチに関しては心配する必要は無く、eショップのコンテンツから作成したNSPやアプデから作成したNSPは使用可能です。
個人的にはSDFilesSwitchなんかが更新されるのを待った方が良い気がしますが、一応、今試したい方向けに
簡単な手順を書いておきます。(RCMに関しての解説は割愛します。ググって。)
事前に "sd:/atmosphere/titles/" にある0100000000000032や010000000000100Dは削除してください。
意識して整理していない方は残っているでしょう。多分。
(010000000000100Dに関しては削除しなくても良いですけど、まあ念のため。)
それらを削除する理由は、0.7.0の機能と競合する可能性があるためです。
で、ここからが手順です。
●手順
1、atmosphere-0.7.0.zip を解凍し、microSDカードにルートにコピー
2、hbl.nspを "sd:/atmosphere/" にコピー
3、hbmenu.nroをmicroSDカードのルートにコピー
(4、(任意)、SDFilesSwitch v9.0.4のexefs_patchesを流用する)
5、SwitchをRCMで起動
6、fusee-primary.bin を実行
ファイルの配置に問題が無ければ起動します。
ペイロード実行時にエラーが発生する場合は、BCT.iniやfusee-secondary.binがルートにある事を確認してください。
以下はくっそ雑な訳です。
以前リリース予告として公開された内容から少し加筆されたようです。
予告では0.8.0以降の計画も書かれていました。そちらに興味があるなら以下の記事も合わせてご参照ください。
・[SWITCH] CFW "Atmosphère" のリリースプランが公開 - 8月中に最初の正式リリースが来る見込み
0.7.0はAtmosphereの最初の正式リリースです。
以下の機能がサポートされています。
■Fusée, カスタムブートローダー
・SDカードから任意のKIPのロード/カスタマイズをサポート
・SDカードからのカスタムカーネルのロードをサポート ("/atmosphere/kernel.bin")
・コンパイル時点で定義されているカーネルパッチを各FW毎にサポート
・"/atmosphere/kip_patches/<user-defined patch name>/<SHA256 of KIP>.ips"の全パッチは適切なKIPに適用されるため、
複数のバージョンをサポートしたパッチを容易に配布可能です。IPSとIPS32がサポートされています。
・"/atmosphere/kernel_patches/<user-defined patch name>/<SHA256 of Kernel>.ips"の全パッチはカーネルに適用されるため、
複数のバージョンをサポートしたパッチを容易に配布可能です。IPSとIPS32がサポートされています。
・SDカードに配置したBCT.iniを編集して設定可能で、Atmosphèreは代替となるブートローダーであるhekateでも起動可能です。
■Exosphère, 全機能を有したカスタムセキュリティモニター
Exosphereは任天堂のTrustZoneファームウェアの再実装で、全機能を完全に再現しています。
加えて、Homebrew開発者のためにAtmosphere APIバージョンを提供するよう拡張しました。
■Stratosphère, カスタムシステムモジュールのセット
▲loaderシステムモジュール
任天堂のローダーを再実装し、オリジナルの機能を完全に再現しています。
"/atmosphere/loader.ini" を編集する事で設定可能
・HBL(Homebrew loade)rはファーストクラス扱いでサポートされています。
HBLは特定のタイトルのexefsの代わりにexefsのNSP(デフォルトは"/atmosphere/hbl.nsp")が使用されます。
デフォルトではHBLはアルバムアプレットを置き換えますが、特定のアプリケーションもサポートされています。
・SDカードへ任意の実行可能なコンテンツをリダイレクトするように拡張しました。
ファイルが "/atmosphere/titles/タイトルID/exefs/" に存在すればそちらが優先的にロードされます。
.stubファイルを作成する事でexefsのそのファイルをスタブとして扱う事が可能です。
もし "/atmosphere/titles/<titleid>/exefs.nsp" としてPFS0が存在する場合は、オリジナルのexefsを完全に置き換えます。
リダイレクトは特定のボタンを押し続ける事でトグル可能になります
(デフォルトでは、Rボタンを押しながらのタイトル起動でリダイレクトが無効になります)
・NSOコンテンツへのパッチ機能を完全サポート
"/atmosphere/exefs_patches/<user-defined patch name>/<Hex Build-ID for NSO to patch>.ips"の全パッチが適用されるため、
複数のFWバージョン及びタイトルをサポートしたパッチを容易に配布可能です。IPSとIPS32がサポートされています。
・ 正式なインストール無しに実行可能なファイルからコンテンツの起動をサポート
これは起動時にFsStorageId_Noneを指定する事で可能です。
▲service managerシステムモジュール
任天堂のサービスマネージャを再実装し、オリジナルの機能を完全に再現しています。
コンパイル時にsmhaxの再導入をサポート。クライアントはイニシャライズをスキップしてサービス検証をスキップ可能です。
任天堂のオリジナルと比べ、Homebrewが特権サービスのハンドルを増やせるように拡張
MITMリスナーを任意のサービスにインストールするための新たなAPIを追加
APIはサービスが副作用無し, ノンブロッキングで登録されているかどうかを検出可能です。APIのドキュメントも公開します。
▲process managerシステムモジュール
任天堂のプロセスマネージャを再実装し、オリジナルの機能を完全に再現しています。
Homebrewが任意のプロセスに対するハンドルを取得し、実行を妨げる事無くシステムメモリを読み書き出来るように拡張
Homeberwがシステムリソースの制限に関する情報を読み取れるように拡張
任天堂のboot2システムモジュールの拡張実装を組み込んで拡張しました。
microSDカードへのアクセス許可を高速化するためにタイトルの起動順序を最適化しました。
エラー収集システムモジュールを起動しないようにしたため、多くのシステムテレメトリエラーレポートは全く生成されません。
ユーザーはmicroSDカードに "/atmosphere/titles/タイトルID/boot2.flag" を作成することで、独自のカスタムシステムモジュールを
microSDカードに配置してboot2の起動にフラグを立てることが可能です。
▲カスタムfs.mitmシステムモジュール
AtmosphèreのMITM APIを使用してユーザーがゲームコンテンツを簡単に変更出来るようにします。
ゲームによって送信される全てのFSコマンドをインターセプトし、RomFS/DLCをマウントするコマンドを利用することで、
ゲーム/DLCのMODを簡単に作成/配布する事が可能です。
fs.mitmはベースRomFSイメージを解析し、"/atmosphere/titles/タイトルID/romfs.bin" と
"/atmosphere/titles/タイトルID/romfs/" の全ファイルを1つのRomFSイメージとしてマージします。
マージする際にはromfs.binよりもromfsフォルダ内のファイルが優先され、romfs.binはベースRomFSよりも優先されます。
加えて、microSDカードに "/atmosphere/titles/タイトルID/fsmitm.flag" を作成する事で、microSDカードが有効になる前に
起動された物を除く任意のタイトルよって送信されるコマンドをインターセプトするために使用可能です。
リダイレクトは特定のボタンを押し続ける事でトグル可能になります
(デフォルトでは、Rボタンを押しながらのタイトル起動でリダイレクトが無効になります)
▲カスタムcrash reportシステムモジュール
任天堂のcreportシステムモジュールの代替として働きます。
"/atmosphere/crash_reports/<timestamp>_タイトルID.log" としてシステムクラッシュのレポートを人間が読める形で生成します。
レポートはerpt sysmoduleに送信されないため、クラッシュレポートに関する全テレメトリが無効になります。
■ユーザーエクスペリエンスを高めるための一般的なシステムの安定性の改善
以下の機能がサポートされています。
■Fusée, カスタムブートローダー
・SDカードから任意のKIPのロード/カスタマイズをサポート
・SDカードからのカスタムカーネルのロードをサポート ("/atmosphere/kernel.bin")
・コンパイル時点で定義されているカーネルパッチを各FW毎にサポート
・"/atmosphere/kip_patches/<user-defined patch name>/<SHA256 of KIP>.ips"の全パッチは適切なKIPに適用されるため、
複数のバージョンをサポートしたパッチを容易に配布可能です。IPSとIPS32がサポートされています。
・"/atmosphere/kernel_patches/<user-defined patch name>/<SHA256 of Kernel>.ips"の全パッチはカーネルに適用されるため、
複数のバージョンをサポートしたパッチを容易に配布可能です。IPSとIPS32がサポートされています。
・SDカードに配置したBCT.iniを編集して設定可能で、Atmosphèreは代替となるブートローダーであるhekateでも起動可能です。
■Exosphère, 全機能を有したカスタムセキュリティモニター
Exosphereは任天堂のTrustZoneファームウェアの再実装で、全機能を完全に再現しています。
加えて、Homebrew開発者のためにAtmosphere APIバージョンを提供するよう拡張しました。
■Stratosphère, カスタムシステムモジュールのセット
▲loaderシステムモジュール
任天堂のローダーを再実装し、オリジナルの機能を完全に再現しています。
"/atmosphere/loader.ini" を編集する事で設定可能
・HBL(Homebrew loade)rはファーストクラス扱いでサポートされています。
HBLは特定のタイトルのexefsの代わりにexefsのNSP(デフォルトは"/atmosphere/hbl.nsp")が使用されます。
デフォルトではHBLはアルバムアプレットを置き換えますが、特定のアプリケーションもサポートされています。
・SDカードへ任意の実行可能なコンテンツをリダイレクトするように拡張しました。
ファイルが "/atmosphere/titles/タイトルID/exefs/" に存在すればそちらが優先的にロードされます。
.stubファイルを作成する事でexefsのそのファイルをスタブとして扱う事が可能です。
もし "/atmosphere/titles/<titleid>/exefs.nsp" としてPFS0が存在する場合は、オリジナルのexefsを完全に置き換えます。
リダイレクトは特定のボタンを押し続ける事でトグル可能になります
(デフォルトでは、Rボタンを押しながらのタイトル起動でリダイレクトが無効になります)
・NSOコンテンツへのパッチ機能を完全サポート
"/atmosphere/exefs_patches/<user-defined patch name>/<Hex Build-ID for NSO to patch>.ips"の全パッチが適用されるため、
複数のFWバージョン及びタイトルをサポートしたパッチを容易に配布可能です。IPSとIPS32がサポートされています。
・ 正式なインストール無しに実行可能なファイルからコンテンツの起動をサポート
これは起動時にFsStorageId_Noneを指定する事で可能です。
▲service managerシステムモジュール
任天堂のサービスマネージャを再実装し、オリジナルの機能を完全に再現しています。
コンパイル時にsmhaxの再導入をサポート。クライアントはイニシャライズをスキップしてサービス検証をスキップ可能です。
任天堂のオリジナルと比べ、Homebrewが特権サービスのハンドルを増やせるように拡張
MITMリスナーを任意のサービスにインストールするための新たなAPIを追加
APIはサービスが副作用無し, ノンブロッキングで登録されているかどうかを検出可能です。APIのドキュメントも公開します。
▲process managerシステムモジュール
任天堂のプロセスマネージャを再実装し、オリジナルの機能を完全に再現しています。
Homebrewが任意のプロセスに対するハンドルを取得し、実行を妨げる事無くシステムメモリを読み書き出来るように拡張
Homeberwがシステムリソースの制限に関する情報を読み取れるように拡張
任天堂のboot2システムモジュールの拡張実装を組み込んで拡張しました。
microSDカードへのアクセス許可を高速化するためにタイトルの起動順序を最適化しました。
エラー収集システムモジュールを起動しないようにしたため、多くのシステムテレメトリエラーレポートは全く生成されません。
ユーザーはmicroSDカードに "/atmosphere/titles/タイトルID/boot2.flag" を作成することで、独自のカスタムシステムモジュールを
microSDカードに配置してboot2の起動にフラグを立てることが可能です。
▲カスタムfs.mitmシステムモジュール
AtmosphèreのMITM APIを使用してユーザーがゲームコンテンツを簡単に変更出来るようにします。
ゲームによって送信される全てのFSコマンドをインターセプトし、RomFS/DLCをマウントするコマンドを利用することで、
ゲーム/DLCのMODを簡単に作成/配布する事が可能です。
fs.mitmはベースRomFSイメージを解析し、"/atmosphere/titles/タイトルID/romfs.bin" と
"/atmosphere/titles/タイトルID/romfs/" の全ファイルを1つのRomFSイメージとしてマージします。
マージする際にはromfs.binよりもromfsフォルダ内のファイルが優先され、romfs.binはベースRomFSよりも優先されます。
加えて、microSDカードに "/atmosphere/titles/タイトルID/fsmitm.flag" を作成する事で、microSDカードが有効になる前に
起動された物を除く任意のタイトルよって送信されるコマンドをインターセプトするために使用可能です。
リダイレクトは特定のボタンを押し続ける事でトグル可能になります
(デフォルトでは、Rボタンを押しながらのタイトル起動でリダイレクトが無効になります)
▲カスタムcrash reportシステムモジュール
任天堂のcreportシステムモジュールの代替として働きます。
"/atmosphere/crash_reports/<timestamp>_タイトルID.log" としてシステムクラッシュのレポートを人間が読める形で生成します。
レポートはerpt sysmoduleに送信されないため、クラッシュレポートに関する全テレメトリが無効になります。
■ユーザーエクスペリエンスを高めるための一般的なシステムの安定性の改善