Atmosphère: Unterschied zwischen den Versionen

1.565 Bytes hinzugefügt ,  26. September 2020
→‎Komponenten: Neue Komponenten-Übersicht
(→‎Komponenten: Neue Komponenten-Übersicht)
Zeile 17: Zeile 17:


== Komponenten ==
== Komponenten ==
Atmosphère zielt darauf ab, fast alle System-Komponenten der Switch zu reimplementieren und dabei zu erweitern. Sie heißen dabei:
Atmosphère zielt darauf ab, alle System-Komponenten der Switch zu reimplementieren und dabei zu erweitern.
 
=== Hauptkomponenten ===
* {{Anker|Fusee}}'''Fusée''': Bootloader, verifiziert und startet Exosphère und Package2 (Kernel/FIRM-Systemmodule) und patcht diese, falls nötig.
* {{Anker|Fusee}}'''Fusée''': Bootloader, verifiziert und startet Exosphère und Package2 (Kernel/FIRM-Systemmodule) und patcht diese, falls nötig.
** '''Sept''': Payload zur Schlüsselableitung auf allen Firmware-Versionen >= [[Nintendo-Switch-Firmware 7.0.0#Technische Informationen|7.0.0]]. Ein Teil von sept ist signiert/verschlüsselt, weshalb es ohne Keys nicht möglich ist, sept selbstständig zu bauen.
** '''Sept''': Payload zur Schlüsselableitung auf allen Firmware-Versionen >= [[Nintendo-Switch-Firmware 7.0.0#Technische Informationen|7.0.0]]. Ein Teil von sept ist signiert/verschlüsselt, weshalb es ohne Keys nicht möglich ist, sept selbstständig zu bauen.
Zeile 23: Zeile 25:
* '''Thermosphère''': EmuMMC, lädt den MMC von der SD-Karte um so eine getrennte Umgebung für bspw. Homebrew zu schaffen.
* '''Thermosphère''': EmuMMC, lädt den MMC von der SD-Karte um so eine getrennte Umgebung für bspw. Homebrew zu schaffen.
* {{Anker|Stratosphere}}'''Stratosphère''': Eigene Systemmodule mit neuen Features und zur Erweiterung bestehender.
* {{Anker|Stratosphere}}'''Stratosphère''': Eigene Systemmodule mit neuen Features und zur Erweiterung bestehender.
** '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/ams_mitm.md ams_mitm]''': Neues Systemmodul zum on-the-fly Patchen von Dateien und Titeln.
* '''Mesosphère''': Reimplementierung von Nintendos Kernel.
*** '''bpc_mitm''': Ermöglicht das [[#Reboot-Payload|Neustarten in einen Payload]] (bspw. wieder Atmosphère) und das vollständige Herunterfahren, wenn AutoRCM aktiviert ist (siehe [[AutoRCM#Herunterfahren]]). Überschreibt den [https://switchbrew.org/wiki/PCV_services#bpc bpc PCV-Service] von Nintendo.
* '''Troposphère''': HorizonOS-Patches für Applikationen. Dies ist noch nicht in Atmosphère implementiert.<ref>https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/troposphere.md</ref>
*** '''fs_mitm''': Kann Dateien von Titeln mit denen auf der SD-Karte ersetzen, auch bekannt als "'''LayeredFS'''".
 
*** {{Anker|hid_mitm}}'''hid_mitm''': Mit der [[Nintendo-Switch-Firmware 9.0.0|Firmware 9.0.0]] wurden die HID-Komponenten für Controller so sehr geändert, dass libnx (die Bibliothek zum Bauen von Switch-Homebrews) keine Controller-Eingaben mehr erkennt. Dieses Problem wurde zwar in neueren libnx-Versionen behoben, allerdings müssen Homebrews mit der neuen libnx-Version neu gebaut werden. Da nicht jede Homebrew sofort aktualisiert wird/werden kann, wurde als Übergang ein temporäres Modul eingeführt, welches das Problem behebt.<ref>[https://github.com/Atmosphere-NX/Atmosphere/releases/tag/0.9.4 Atmosphère v0.9.4]</ref> Da es somit nicht mehr möglich ist, das HID-Modul selbst zu überschreiben, wird dieser Workaround in Zukunft entfernt. Mit Atmosphère v0.10.2 wurde es per Standard deaktiviert.<ref>[https://github.com/Atmosphere-NX/Atmosphere/releases/tag/0.10.2 Atmosphère v0.10.2]</ref> Siehe auch [[#enable_deprecated_hid_mitm|enable_deprecated_hid_mitm]]. Sollte es in Zukunft entfernt werden, wird SciresM aber einen separaten Download anbieten.<ref>https://arch.b4k.co/vg/thread/276990665/#277109730 "If it's ever removed (and I don't actually have plans to do so, I just wanted to explicitly reserve that right), I will publish a hid-compat-mitm sysmodule on my personal GitHub that can be used as a standalone.
==== Systemmodule ====
{| class="wikitable" border="1" width="100%"
|-
! Name
! Beschreibung
! Reimplementiert
! Erweiterungen/Änderungen
|-
| '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/ams_mitm.md ams_mitm]'''
| Neues Systemmodul zum on-the-fly Patchen von Dateien und Titeln
|
|
|-
| '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/boot.md boot]'''
| Initialisiert die Hardware und startet das System.
| [https://switchbrew.org/wiki/Boot boot]
| Atmosphère zeigt seinen eigenen schwarz/weißen Bootscreen und Akku-Icons an.
|-
| '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/boot2.md boot2]'''
| Lädt alle weiteren Module nach dem Start.
| [https://switchbrew.org/wiki/Boot2 boot2]
| Mithilfe von [[#Flags|Flags]] lassen sich eigene Systemmodule direkt nach dem Start ausführen.
|-
| '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/creport.md creport]'''
| Dient der Verwaltung von Absturzberichten.
| [https://switchbrew.org/wiki/Creport creport]
| Generiert Absturzberichte auf der SD-Karte und verhindert das Senden dieser an Nintendo. Außerdem wird bei einem Absturz ein Screenshot erstellt (nur auf >= 10.0.0).
|-
| '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/dmnt.md dmnt]'''
| Stellt einen Debug-Monitor zur Verfügung. "dmnt" steht für "Debug Monitor".
| [https://switchbrew.org/wiki/Debug_Monitor_services dmnt]
| Cheat-Code-Support, inklusive Kompatibilität zu [[SX OS|Gateshark]].
|-
| '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/eclct.stub.md eclct.stub]'''
| Sammelt Fehlerberichte.
| [https://switchbrew.org/wiki/System_Settings#eclct eclct]
| Diese Reimplementation ist ein Stub und verhindert das Senden weiterer Telemetrie-Daten an Nintendo.
|-
| [[#erpt|erpt]]
| Verwaltet Fehlerberichte.
| [https://switchbrew.org/wiki/Error_Report_services erpt]
| Verhindert das Anlegen von berichten im MMC und leitet diese stattdessen auf die SD-Karte weiter.
|-
| [[#fatal|fatal]]
| Verwaltet Absturzberichte.
| [https://switchbrew.org/wiki/Fatal_services fatal]
| Zeigt einen umfangreichen Fehlerbildschirm bei einem fatalen (deshalb der Name) Absturz an. Auch kann die Konsole mit den Lautstärketasten direkt neu gestartet werden.
|-
| '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/jpegdec.md jpegdec]'''
| Dient der Dekodierung von JPEGs in Verbindung mit den [https://switchbrew.org/wiki/Capture_services Capture-Services]
| [https://switchbrew.org/wiki/Jpegdec_services jpegdec]
| Erlaubt zwei Sessions anstatt einer, damit Homebrews JPEGs per Software parallel zum OS dekodieren können.
|-
| '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/loader.md loader]'''
| Erstellt Prozesse von ausführbaren NSOs und kontrolliert ihre Zugriffe
| [https://switchbrew.org/wiki/Loader_services loader]
| Ermöglicht das [[#ExeFS|Ersetzen von Dateien im ExeFS]], das [[#NSO-Patches|Patchen von NSOs]], sowie [[#Button Overrides|Button Overrides]] (bspw.: "R" gedrückt halten, während ein Spiel startet, startet das Homebrew Menu mit vollem RAM-Zugriff).
|-
| '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/ncm.md ncm]'''
| Dient der Verwaltung von Inhalten (bspw. NAND-Speicherständen). "ncm" steht für "Nintendo Content Manager".
| [https://switchbrew.org/wiki/NCM_services ncm]
| Zurzeit noch [[#enable_ncm|optional]].
|-
| [https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/pgl.md pgl]
| Startet Programme; nur ab [[Nintendo-Switch-Firmware 10.0.0|10.0.0]] vorhanden. "pgl" steht für "Program Launcher".
| [https://switchbrew.org/wiki/PGL_services pgl]
| Atmosphères Reimplementation ist ebenfalls nur ab 10.0.0 verfügbar und wurde (noch) nicht zurückportiert.
|-
| [https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/pm.md pm]
| Verwaltet Ressourcenlimits und überwacht laufende Prozesse. "pm" steht für "Process Manager".
| [https://switchbrew.org/wiki/Process_Manager_services pm]
| Der APPLET Speicher-Pool wurde um 24 MiB gesenkt und gibt diesem somit dem SYSTEM-Pool zurück. Damit lassen sich mehr Custom-Systemmodule ausführen.
|-
| '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/ro.md ro]'''
| Lädt dynamische Bibliotheken und wurde mit der [[Nintendo-Switch-Firmware 3.0.0|Firmware 3.0.0]] eingeführt.
| [https://switchbrew.org/wiki/RO_services ro]
| Portiert die Funktionalitäten auf < 3.0.0 zurück, bei denen noch "loader" zuständig war. Ermöglicht außerdem [[#NRO-Patches|NRO-Patches]].
|-
| '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/sm.md sm]'''
| Verwaltet Dienste. "sm" steht für "Service Manager".
| [https://switchbrew.org/wiki/Services_API sm]
| Dieser ist für Entwickler interessant, da so u.a. ein eigener MitM-Service registriert werden kann. Patcht per Standard auch "smhax"<ref>[https://switchbrew.org/wiki/Switch_System_Flaws#FIRM-package_System_Modules Switch System Flaws#FIRM-package System Modules] unter "Service access control bypass"</ref><ref>[https://wiidatabase.de/switch-firmware-3-0-1-fixt-grossen-bug-update-nicht-empfohlen/ Switch-Firmware 3.0.1 fixt "großen Bug" – Update nicht empfohlen]</ref> auf der Firmware < [[Nintendo-Switch-Firmware 3.0.1|3.0.1]].
|-
| '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/spl.md spl]'''
| Ist u.a. für kryptographische Operationen notwendig. "spl" steht für "Secure Platform".
| [https://switchbrew.org/wiki/SPL_services spl]
|}
 
===== ams_mitm =====
Das Systemmodul '''ams_mitm''' fügt einige neue Funktionen hinzu, die in mehrere Teile aufgegliedert sind.
 
{| class="wikitable" border="1" width="100%"
|-
! Name
! Beschreibung
|-
| '''bpc_mitm'''
| Ermöglicht das [[#Reboot-Payload|Neustarten in einen Payload]] (bspw. wieder Atmosphère) und das vollständige Herunterfahren, wenn AutoRCM aktiviert ist (siehe [[AutoRCM#Herunterfahren]]). Überschreibt den [https://switchbrew.org/wiki/PCV_services#bpc bpc PCV-Service] von Nintendo.
|-
| '''fs_mitm'''
| Kann Dateien von Titeln mit denen auf der SD-Karte ersetzen, auch bekannt als "'''LayeredFS'''".
|-
| {{Anker|hid_mitm}}'''hid_mitm'''
| Mit der [[Nintendo-Switch-Firmware 9.0.0|Firmware 9.0.0]] wurden die HID-Komponenten für Controller so sehr geändert, dass libnx (die Bibliothek zum Bauen von Switch-Homebrews) keine Controller-Eingaben mehr erkennt. Dieses Problem wurde zwar in neueren libnx-Versionen behoben, allerdings müssen Homebrews mit der neuen libnx-Version neu gebaut werden. Da nicht jede Homebrew sofort aktualisiert wird/werden kann, wurde als Übergang ein temporäres Modul eingeführt, welches das Problem behebt.<ref>[https://github.com/Atmosphere-NX/Atmosphere/releases/tag/0.9.4 Atmosphère v0.9.4]</ref> Da es somit nicht mehr möglich ist, das HID-Modul selbst zu überschreiben, wird dieser Workaround in Zukunft entfernt. Mit Atmosphère v0.10.2 wurde es per Standard deaktiviert.<ref>[https://github.com/Atmosphere-NX/Atmosphere/releases/tag/0.10.2 Atmosphère v0.10.2]</ref> Siehe auch [[#enable_deprecated_hid_mitm|enable_deprecated_hid_mitm]]. Sollte es in Zukunft entfernt werden, wird SciresM aber einen separaten Download anbieten.<ref>https://arch.b4k.co/vg/thread/276990665/#277109730 "If it's ever removed (and I don't actually have plans to do so, I just wanted to explicitly reserve that right), I will publish a hid-compat-mitm sysmodule on my personal GitHub that can be used as a standalone.


Don't worry, I don't want to leave people without an option. It just kinda sucks that people not using it are paying memory costs equivalent to the whole sm sysmodule."</ref>
Don't worry, I don't want to leave people without an option. It just kinda sucks that people not using it are paying memory costs equivalent to the whole sm sysmodule."</ref>
*** '''ns_mitm''': Ermöglicht die Verwendung von Web-Applets im Homebrew Menu, wenn eine Anwendung überschrieben wird, da diese erst prüfen, ob es HTML-Inhalte in der Anwendung gibt.
|-
*** '''set_mitm''': Verändert die Anzeige der Systemversion ([https://switchbrew.org/wiki/Settings_services#GetFirmwareVersion GetFirmwareVersion]) ([[:Datei:Atmosphere Systemversion.jpg|siehe Bild]]) und liest weitere Einstellungen aus einer INI-Datei. Dabei wird der [https://switchbrew.org/wiki/Settings_services System-Settings-Service] abgefangen.
| '''ns_mitm'''
** '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/boot.md boot]''': Reimplementierung von Nintendos "[https://switchbrew.org/wiki/Boot boot]"; initialisiert die Hardware und startet das System.
| Ermöglicht die Verwendung von Web-Applets im Homebrew Menu, wenn eine Anwendung überschrieben wird, da diese erst prüfen, ob es HTML-Inhalte in der Anwendung gibt.
** '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/boot2.md boot2]''': Reimplementierung von Nintendos "[https://switchbrew.org/wiki/Boot2 boot2]"; lädt weitere Prozesse.
|-
** '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/creport.md creport]''': Generiert Absturzberichte auf der SD-Karte und verhindert das Senden dieser an Nintendo. Außerdem wird bei einem Absturz ein Screenshot erstellt (nur auf >= 10.0.0).
| '''set_mitm'''
** '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/dmnt.md dmnt]''': Cheat-Code-Support, inklusive Kompatibilität zu [[SX OS|Gateshark]]. "dmnt" steht dabei für "Debug Monitor".
| Verändert die Anzeige der Systemversion ([https://switchbrew.org/wiki/Settings_services#GetFirmwareVersion GetFirmwareVersion]) ([[:Datei:Atmosphere Systemversion.jpg|siehe Bild]]) und liest weitere Einstellungen aus einer INI-Datei. Dabei wird der [https://switchbrew.org/wiki/Settings_services System-Settings-Service] abgefangen.
** '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/eclct.stub.md eclct.stub]''': Deaktiviert weitere [https://switchbrew.org/wiki/System_Settings#eclct Telemetrie-Dienste] von Nintendo.
|-
** '''[[#erpt|erpt]]''': Reimplementiert Nintendos [https://switchbrew.org/wiki/Error_Upload_services Error Report Service] und verhindert das Anlegen von Crash Reports im MMC
|}
** '''[[#fatal|fatal]]''': Reimplementiert Nintendos [https://switchbrew.org/wiki/Fatal_services fatal] und zeigt einen umfangreichen Fehlerbildschirm bei einem fatalen (deshalb der Name) Absturz an. Auch kann die Konsole mit den Lautstärketasten direkt neu gestartet werden.
** '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/jpegdec.md jpegdec]''': Reimplementierung von [https://switchbrew.org/wiki/Jpegdec_services Nintendos JPEG-Decoder], damit Homebrews Bilder per Software dekodieren können
** '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/loader.md loader]''': Reimplementiert Nintendos "[https://switchbrew.org/wiki/Loader_services loader]" und ermöglicht das Ersetzen von Dateien im ExeFS, das Patchen von NSOs, sowie [[#Button Overrides|Button Overrides]] (bspw.: "R" gedrückt halten, während ein Spiel startet, startet das Homebrew Menu mit vollem RAM-Zugriff).
** '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/ncm.md ncm]''': Reimplementierung von [https://switchbrew.org/wiki/NCM_services Nintendos Content Manager].
** '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/pgl.md pgl]''': Reimplementierung von Nintendos [https://switchbrew.org/wiki/PGL_services Program Launcher]. Ermöglicht es, Systemmodulen und Homebrews Aktionen auszuführen, wenn Applikationen abstürzen, gestartet oder geschlossen werden. Nur ab [[Nintendo-Switch-Firmware 10.0.0|10.0.0]].
** '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/pm.md pm]''': Reimplementierung von Nintendos "[https://switchbrew.org/wiki/Process_Manager_services Process Manager]", gibt u.a. mehr Speicher für Systemmodule frei.
** '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/ro.md ro]''': Reimplementierung von Nintendos [https://switchbrew.org/wiki/RO_services RO-Services].
** '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/sm.md sm]''': Reimplementierung von Nintendos "[https://switchbrew.org/wiki/Services_API Service Manager]". Dieser ist für Entwickler interessant, da so u.a. ein eigener MitM-Service registriert werden kann. Patcht per Standard auch "smhax"<ref>[https://switchbrew.org/wiki/Switch_System_Flaws#FIRM-package_System_Modules Switch System Flaws#FIRM-package System Modules] unter "Service access control bypass"</ref><ref>[https://wiidatabase.de/switch-firmware-3-0-1-fixt-grossen-bug-update-nicht-empfohlen/ Switch-Firmware 3.0.1 fixt "großen Bug" – Update nicht empfohlen]</ref> auf der Firmware < [[Nintendo-Switch-Firmware 3.0.1|3.0.1]].
** '''[https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/modules/spl.md spl]''': Reimplementierung von Nintendos "[https://switchbrew.org/wiki/SPL_services Secure Platform Services]".
* '''Mesosphère''': Reimplementierung von Nintendos Kernel.
* '''Troposphère''': HorizonOS-Patches für Applikationen. Dies ist noch nicht in Atmosphère implementiert.<ref>https://github.com/Atmosphere-NX/Atmosphere/blob/master/docs/components/troposphere.md</ref>


=== Ordnerstruktur ===
=== Ordnerstruktur ===