Lo sviluppatore SciresM ha rilasciato un nuovo aggiornamento di Atmosphère con la nuova versione 1.2.0 pre-release. Atmosphère è composto da più componenti, ognuno dei quali sostituisce/modifica un diverso componente del sistema:
- Fusée: First-stage Loader, responsabile del caricamento e della convalida della fase 2 (TrustZone personalizzato) più pacchetto2 (Kernel/FIRM sysmodules) e dell’applicazione delle patch necessarie. Sostituisce tutte le funzionalità normalmente in Package1loader/NX Bootloader.
- Sept: Payload utilizzato per abilitare il supporto per la derivazione della chiave di runtime su 7.0.0.
- Exosphère: TrustZone personalizzato, per eseguire un Secure Monitor personalizzato
- Thermosphère: supporto EL2 EmuNAND, ovvero backup e utilizzo di immagini NAND virtualizzate/reindirizzate
- Stratosphère: Custom Sysmodule(s), sia in stile Rosalina per estendere il kernel/fornire nuove funzionalità, sia dello stile di reimplementazione del loader per agganciare importanti azioni di sistema
- Troposphère: patch del sistema operativo Horizon a livello di applicazione, utilizzate per implementare le funzionalità CFW desiderabili
Qui sotto il changelog completo.
Changelog
Nota : Atmosphère 1.2.0 è attualmente in pre-release e potrebbero essere riscontrati problemi che devono essere risolti prima del rilascio completo.
- Se vengono segnalati bug mentre Atmosphère è in pre-release, verranno corretti e la build verrà aggiornata.
- 1.2.0 passerà al rilascio dopo che è trascorso un breve periodo di tempo senza premere segnalazioni di bug.
Grazie al team @switchbrew , Atmosphère 1.2.0 è in bundle con hbl 2.4.1 e hbmenu 3.4.1.
Quanto segue è stato modificato rispetto all’ultima versione:
boot
è stato aggiornato per riflettere l’ultimo comportamento ufficiale per la gestione del display/della batteria.- Questo dovrebbe risolvere eventuali problemi che potrebbero derivare dall’esecuzione di versioni precedenti sul modello OLED, se in qualche modo sei in grado di farlo.
- Il sistema del “firmware di destinazione” è stato modificato per consentire al bootloader di specificare un’approssimazione, anziché il vero firmware di destinazione.
- In precedenza ci aspettavamo che i bootloader conformi ispezionassero SYSTEM:/ per determinare il firmware di destinazione specifico.
- Ora, abbiamo solo bisogno di una versione approssimativa, con versione principale == vera versione principale e versione approssimativa <= versione vera.
- Ciò semplifica notevolmente i requisiti del bootloader e, di conseguenza, tutto il codice per l’accesso a SYSTEM è stato rimosso da fusee.
- Ciò dovrebbe comportare una notevole accelerazione all’avvio di emummc con fusee, poiché gli accessi al SISTEMA erano la cosa più costosa fatta in precedenza.
- Questo dovrebbe risolvere qualsiasi incoerenza nel rilevamento del firmware durante l’avvio tramite fusee vs hekate.
- Ciò dovrebbe anche migliorare la nostra compatibilità con le versioni del micro firmware, rendendo più probabile che atmosphere “funzioni” se non è cambiato nulla di importante.
- La logica di determinazione del limite dinamico delle risorse è stata implementata in modo
pm
da corrispondere al comportamento ufficiale più recente.- Ciò semplifica notevolmente/rende coerenti anche i limiti delle risorse sui firmware più vecchi.
- Sotto il cofano è stata eseguita un’enorme quantità di refactoring, tra cui:
- Nota : se sei uno sviluppatore che utilizza Atmosphere-libs, una serie di modifiche qui si stanno interrompendo.
- Non esitare a contattare SciresM#524 per assistenza nell’aggiornamento del programma.
- Lo spazio dei nomi del sistema operativo aveva molte primitive implementate/rese più accurate.
- Poiché la mesosfera ora è sempre attiva, os::LightEvent (che richiedeva SVC più recenti) è ora utilizzabile a livello globale (e utilizzato dalla stratosfera ove pertinente).
- Le asserzioni ora sono vere no-op quando si compila per il rilascio.
- Stratosphere è ora costruito con -Wextra/-Werror.
- La maggior parte della logica “comune” nei file main.cpp del modulo di sistema è stata spostata in libstratosphere.
- Nota : i file main.cpp per le precedenti librerie di atmosfera non funzioneranno più, per un numero davvero elevato di motivi.
- Sono stati corretti numerosi problemi di stile del codice di vecchia data.
- Mesosphere ora utilizza util::BitFlagSet per i permessi SVC.
- Mesosphere ora inserisce la sua tabella di rilocazione all’interno di .bss, che consente di recuperare quella memoria dopo che sono state eseguite le rilocazioni.
- Queste modifiche salvano ~16KB di memoria nel kernel, tutto detto e fatto.
- Un certo numero di luoghi nella stratosfera in cui è possibile salvare la memoria sono stati individuati e sfruttati, portando a ~ 150-200 KB di memoria salvata.
- Il modulo di sistema
spl
eloader
è stato rifattorizzato per riflettere meglio la logica ufficiale. sf
Il codice del server ipc è stato aggiornato per emettere solo la logica mitm/defer quando tale logica è effettivamente richiesta da qualche parte nel processo.tipc
Il codice del server ipc è stato aggiornato per riflettere le modifiche alla logica ufficiale apportate in 13.0.0.- Molte, molte altre modifiche minori, per favore parla con SciresM#524 o leggi i commit rilevanti se vuoi saperne di più.
- Nota : se sei uno sviluppatore che utilizza Atmosphere-libs, una serie di modifiche qui si stanno interrompendo.
- Sono stati risolti alcuni problemi minori, tra cui:
- La gestione da parte di Mesosphere dei permessi SVC su thread pin/unpin è stata aggiornata per riflettere il comportamento ufficiale del kernel.
- util::CountTrailingZeroes() è stato corretto per calcolare il valore corretto quando utilizzato in fase di compilazione.
- Miglioramenti generali della stabilità del sistema per migliorare l’esperienza dell’utente.