尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Atmosphère 构建与配置完整指南:从零搭建到金手指的 Switch 自定义固件

Atmosphère 构建与配置完整指南:从零搭建到金手指的 Switch 自定义固件 Atmosphère 构建与配置完整指南从零搭建到金手指的 Switch 自定义固件【免费下载链接】AtmosphereAtmosphère is a work-in-progress customized firmware for the Nintendo Switch.项目地址: https://gitcode.com/GitHub_Trending/at/AtmosphereAtmosphèreAtmosphere是一款仍在持续开发中的任天堂 Switch 自定义固件它用分层的方式替换了系统从底层引导加载器到应用层的各个组件。这份指南面向两种人想从源码亲手构建 Atmosphere 的开发者以及想让主机运行更稳、功能更多的进阶玩家。你可以把它当成一本操作手册先认识各部分再动手搭建然后调配置最后排错和进阶。一、先认识 Atmosphere六个层级各管一段这一节解决它到底是什么、每一部分负责什么的问题。只有先看清分工后面改配置、查故障才有的放矢。六个核心组件对应系统不同深度Atmosphère 的名字取自地球大气层组件也按层来命名每一层替换系统的一个环节fusée第一级引导加载器bootloader。它是 Atmosphere 在硬件上运行的第一段代码负责底层硬件初始化、搭建加密体系、挂载或模拟 eMMC、注入并修补系统模块最后拉起 exosphère。它通常经由 RCMRecovery Mode恢复模式注入运行。exosphère自定义的 Secure Monitor安全监视器也就是 TrustZone 的实现。它运行在主处理器最高特权级 EL3掌管系统所有敏感加密操作和每颗 CPU 的电源管理。thermosphère运行在 EL2 的虚拟化层用来实现 EmuNAND——备份并使用被重定向的虚拟 NAND 镜像。mesosphère自定义内核承接更底层的调度与内存管理逻辑。stratosphère自定义系统模块sysmodule。一部分是扩展内核、提供新特性风格另一部分是重新实现加载器、钩住关键系统动作风格。troposphère应用层的 Horizon OS 补丁用来实现各种期望的 CFW 功能比如内置的reboot_to_payload重启样例应用。两个辅助组件emummc 和 librariesemummc提供虚拟 eMMC 的完整实现让你在 SD 卡上维护独立的系统镜像而不必动真机存储。libraries一套可复用的开发库包括面向安全监视器 API 的libexosphere、内核扩展的libmesosphere、系统模块的libstratosphere以及libvapours等。这些库是 stratosphère 各模块能工作的前提。为什么要这么分层把替换系统这件事拆到不同深度是为了让每一层只负责自己的事底层换引导和监视器中层换内核和虚拟化上层换系统模块和应用行为。这样某一层出问题定位范围很小也方便单独更新。二、从零搭建构建环境这一节解决怎么把它从源码编译出来。整个过程几乎全部依赖 devkitPro 提供的工具链路径很固定。先装好依赖工具链编译 Atmosphere 需要以下几类依赖交叉编译工具链devkitA64与devkitARMPython 环境构建脚本主要按 Python 2 编写Python 3 可能可用但不保证压缩库LZ4可选的PyCryptodome处理 NRO 等格式的hactool安装构建所需的包在装好 devkitPro 基础环境后用包管理器一次装齐构建包再单独装 LZ4 的 Python 绑定dkp-pacman -S switch-dev switch-glm switch-libjpeg-turbo devkitARM devkitarm-rules hactool pip install lz4第一条命令把交叉编译相关的开发包全部装上第二条为 exosphere 提供 LZ4 支持。克隆仓库并执行 make最后一步把仓库克隆下来在根目录跑一次make即可。构建说明的完整内容见docs/building.md。git clone https://gitcode.com/GitHub_Trending/at/Atmosphere cd Atmosphere make如果make中途报错多数情况是上面某个包没装齐或 Python 版本不对回到前两步核对即可。三、把配置调成你想要的样子这一节解决改哪里、怎么改、改完有什么后果。Atmosphere 的配置分散在几个.ini文件里模板都放在/atmosphere/config_templates/下你可以先复制一份再改。四个核心配置文件的位置exosphere.ini放在 SD 卡根目录由 exosphère 读取控制安全监视器行为。stratosphere.ini放在/atmosphere/config/由 fusée 读取配置用户态系统模块。override_config.ini放在/atmosphere/config/用于把特定按键绑定到功能上。system_settings.ini放在/atmosphere/config/用来覆盖系统的调试设置。exosphere.ini控制调试与系统行为这个文件最关键默认值直接决定系统能否正常运行。建议先保持默认理解含义后再动[exosphere] debugmode 1 # 内核调试模式默认开启关闭会导致 Atmosphere 失效 debugmode_user 0 # 用户态调试模式默认关闭几个容易踩坑的项disable_user_exception_handlers关闭它能让系统出错时不再优雅降级官方明确不建议动除非你很清楚后果。blank_prodinfo_sysmmc/blank_prodinfo_emummc把出厂校准数据PRODINFO在真实或虚拟 eMMC 里抹空官方不鼓励使用因为数据可能在系统其他位置有缓存。log_port、log_baud_rate、log_inverted配置 exosphere 串口日志的端口、波特率和极性方便你抓启动日志。system_settings.ini用类型前缀覆盖系统设置这个文件覆盖系统的调试设置写法是名称!键取值必须带类型前缀比如u8!0x1。常见项举例[atmosphere] dmnt_cheats_enabled_by_default u8!0x1 # 金手指默认开启 power_menu_reboot_function str!payload # 电源菜单重启改为重启到 payload支持三类取值字符串str、整型u8/u16/u32/u64、原始字节hex/bytes长度必须为偶数。注意值写错会在启动时直接致命报错所以改完先确认格式再开机。用 override_config.ini 绑定按键这个文件默认不启用可以用来把某个按键绑定成进 Homebrew 菜单或启用金手指。通过修改override_key即可可识别的按键名包括A、B、X、Y、LS、RS、L、R、ZL、ZR、PLUS、MINUS、方向键等。在按键名前加感叹号可反转逻辑例如override_key!R表示按住 R 启动时才进 Homebrew 菜单否则直接进游戏。四、常见报错速查启动失败与功能异常这一节解决出了问题怎么快速定位。遇到问题时先确认文件结构、格式再逐项核对配置不要一次改多处。黑屏无法启动如果开机黑屏按顺序排查确认 SD 卡是FAT32格式文件结构完整/atmosphere/、/atmosphere/config/等目录都在。检查启动所需的引导文件是否完整有无损坏。回想最近是否改过exosphere.ini尤其是debugmode被误关或system_settings.ini里写了非法值导致致命报错——这两项都会在启动阶段直接把系统卡住。遇到卡死在开机画面时可以先恢复默认配置再逐项启用用二分法缩小范围。金手指没生效金手指cheat没加载通常是下面几处之一路径不对金手指文件必须放在/atmosphere/contents/program_id/cheats/下文件名是主可执行文件 build id 前 8 字节的十六进制即build_id.txt。按键条件没满足默认要求不按 L 键才加载金手指可用cheat_enable_key修改。进程不是真实应用系统会过滤避免把金手指挂到 Homebrew 加载器上。改了配置反而起不来如果某次改完配置后系统异常优先怀疑system_settings.ini里的值格式其次是exosphere.ini里被误动的默认项。建议养成习惯一次只改一项改完验证再改下一项这样出问题能立刻回退。五、进阶玩法金手指、EmuNAND 与自定义系统调用这一节解决熟悉之后还能折腾什么。以下内容适合已经能正常开机、想进一步挖掘功能的读者。金手指加载、开关与格式Atmosphere 支持 Action-Replay 风格的金手指代码从 SD 卡加载。它内置一个自定义虚拟机来执行代码并且刻意保持了与旧格式的向后兼容还修掉了一批旧实现里的 bug比如条件块检测、越界读取、加载画面卡顿。指令集从往内存写静态值到寄存器运算按键条件块等都有覆盖详细编码见docs/features/cheats.md。运行期你还能通过金手指管理器的服务 API 动态开关ForceOpenCheatProcess可强制附加到进程ForceCloseCheatProcess可强制脱离。想改变默认全开的行为改system_settings.ini里的dmnt_cheats_enabled_by_default即可。EmuNAND跑一套虚拟系统环境thermosphère 和 emummc 组件配合让你在 SD 卡上维护一个虚拟 NAND 镜像好处是可以搭一套独立系统、保护原始系统不被改动、多套系统之间切换。相关配置放在/emuMMC/下的emummc.ini细节较多建议参照 emummc 项目的说明来配。自定义 SMC 与系统调用扩展exosphère 在原有安全监视器的基础上额外提供了面向自制软件生态的自定义 SMC安全监视器调用例如smc_ams_iram_copy在 DRAM 与 IRAM 之间拷贝最多一页数据。smc_ams_write_address向 DRAM 页写入一个值。smc_ams_get_emummc_config读取当前 emummc 上下文的配置路径等。它还提供了一批自定义配置项如CONFIGITEM_EXOSPHERE_VERSION、CONFIGITEM_NEEDS_REBOOT等用于查询版本、触发重启到 RCM 或 warmboot payload、判断是否应抹空 PRODINFO 等。此外还有几个内置的小 payloadlp0fw负责 warm boot 唤醒、sc7fw负责休眠、rebootstub负责重启到任意指定 payload。这些接口是你在应用层做深度定制时的底层抓手。写到这里你应该已经掌握了 Atmosphere 的整体结构、构建方式、关键配置和常见排错路径。最后给三条稳妥建议改动前备份 NAND 或 eMMC一次只验证一项配置遇到拿不准的默认值就先保持原样。把这些做到位Atmosphere 会更稳定也更可控。【免费下载链接】AtmosphereAtmosphère is a work-in-progress customized firmware for the Nintendo Switch.项目地址: https://gitcode.com/GitHub_Trending/at/Atmosphere创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表