Atmosphere 定制固件入门指南:从 0 到 1 跑通你的 Switch
【免费下载链接】AtmosphereAtmosphère is a work-in-progress customized firmware for the Nintendo Switch.项目地址: https://gitcode.com/GitHub_Trending/at/Atmosphere
Atmosphere 是一套面向任天堂 Switch 的定制固件,它把原系统逐层替换成自己的实现,并由此带来了虚拟 NAND、金手指、自制软件入口这些能力。读完这篇,你会知道怎么把项目编译出来、装到 SD 卡后先改哪几个参数,以及开机黑屏、中途崩溃时该怎么排查。
🧅 它到底在干什么
先建个直觉:它相当于给 Switch 换了一整套"洋葱式"的自定义系统——每一层都对应原机的一个组件,各管各的,一层一层往下套。
- fusée:开机后最先接手的部分,负责把控制权从漏洞环境安全地交给后面的每一层
- exosphère:接管最核心的安全部分(加密运算、CPU 电源管理),并给自制软件加了几个自定义安全调用
- thermosphère:负责 NAND 虚拟化,也就是让虚拟 NAND 能真正运转起来
- mesosphère:一个完全重写的内核
- stratosphère:整套重新实现的内核服务,替换系统自带的那些模块(文件、电源、显示等)
- troposphère:最外层的应用级补丁
另有两个辅助组件:emummc(虚拟 NAND 的具体实现)和 libraries(编译时用的一堆库)。这套名字都取自大气层,读文档时能对得上。
上面这张就是开机后你第一眼会看到的画面。看到它,说明前几层都顺利交接了。
🛠️ 从 0 到跑起来:编译四步走
这里有个坑先说在前面:它不是"下载个压缩包就完事"的项目,得自己编译,而编译依赖的是 devkitPro 的交叉编译工具链。先别急,跟着做就行。
第一步,把源码拿下来:
git clone https://gitcode.com/GitHub_Trending/at/Atmosphere cd Atmosphere第二步,装交叉编译工具链。前提是已经装好 devkitPro 的包管理器dkp-pacman(没有的话先去装它,这一步绕不过去),然后一条命令把编译器和相关库都装上:
dkp-pacman -S switch-dev switch-glm switch-libjpeg-turbo devkitARM devkitarm-rules hactoolswitch-dev是 Switch 的 A64 编译器,devkitARM负责 32 位部分,hactool是打包用的工具。
第三步,装 Python 压缩库,exosphere 构建时会用它做 LZ4 压缩:
pip install lz4第四步,编译:
make看到各组件依次构建完成、根目录出现release产物,就说明跑通了。构建细节如果想深挖,docs/building.md 里写得很清楚。
⚙️ 装完先动这三个地方
动配置前先备份原文件,改坏了直接还原比排查快。模板都放在 config_templates/,复制到 SD 卡对应位置后,普通用户真正需要关心的只有这三个参数:
| 参数 | 所在文件 | 默认值 | 改成什么 | 改完的影响 |
|---|---|---|---|---|
debugmode_user | exosphere.ini(SD 根目录) | 0 | 调试自制软件时改 1 | 开启用户空间调试,方便抓自制软件的崩溃;日常保持 0 |
nogc | stratosphere.ini(/atmosphere/config/) | 未设置(自动) | 1常关卡带读取器 /0常开 | 卡带读取器固件会被系统更新覆盖,设1可以彻底关掉它来防止这件事 |
override_key | override_config.ini | !L | 改成!R、!SL等 | 进自制菜单的按键。!L表示"按 A 启动游戏时不按住 L 就进自制菜单",前缀!就是"不按"的意思 |
改完记得重启。另外注意:debugmode千万别改成 0,文件注释里明说了改 0 会直接弄坏整个 Atmosphere。
🩺 翻车了?对照这里
黑屏不开机
- 先确认 SD 卡是 FAT32 格式,目录结构没缺东西(atmosphere 目录、package3、配置目录都要在)
- 怀疑二进制被拷坏了的话,重新解压一次完整产物再试,别只补拷单个文件
- 如果开了 emummc,检查 /emuMMC/ 里的配置(emummc.ini)和虚拟分区是否完整,虚拟分区损坏是黑屏的高频原因
运行中崩溃 / 重启
- 头号嫌疑是 system_settings.ini:它的值写错(类型标错、长度不合法)会在启动时直接报致命错误,先把它还原到模板状态
- 其次把 debugmode 相关参数恢复默认值再试,排除"自己改坏的"
- 还不行就看 docs/faq.md 和项目社区的历史 issue,带上你的配置截图去问
金手指不生效
- 查文件路径:必须是
/atmosphere/contents/<program_id>/cheats/<build_id>.txt,程序 ID 和 build ID 都要对得上 - build_id 是游戏主可执行文件前 8 字节的十六进制,游戏更新后它可能变了,旧的 cheats 文件自然匹配不上
- 查按键:金手指默认
cheat_enable_key是!L,即"不按 L"时才加载。你一直按着 L 进游戏,它当然不生效
🚀 想继续折腾?
- 自定义安全调用(如
smc_ams_iram_copy、smc_ams_write_address)给自制软件扩展底层能力,细节在 docs/components/exosphere.md - 金手指指令集有一套自定义虚拟机,格式和兼容性变化写在 docs/features/cheats.md
- libraries/ 下有三个开发库:libexosphere(安全监视器 API)、libmesosphere(内核扩展)、libstratosphere(系统模块库),写自制软件时按需引入
- 想换开机画面?图要是 1280x720 的,然后用 utilities/insert_splash_screen.py 把它塞进发布产物里
📌 动手前记住的事
- 改配置后一律重启生效,热插拔 SD 卡不算
- 一次只动一个参数,出了问题才知道是谁的锅
- 碰 PRODINFO 相关的开关(比如 blank_prodinfo)之前,先把校准数据备份到别的介质,这类操作没有后悔药
- 卡住了就去项目社区问,带上版本号和你的 ini 文件,比干瞪屏幕快得多
【免费下载链接】AtmosphereAtmosphère is a work-in-progress customized firmware for the Nintendo Switch.项目地址: https://gitcode.com/GitHub_Trending/at/Atmosphere
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考