◆ 커스텀 펌웨어에 대한 이해
안내: ASAP의 구성 요소를 기준으로 CFW (커스텀 펌웨어)를 설명합니다.
- Horizon (지평선, 수평선)
스위치의 펌웨어 즉, 시스템 OS를 Horizon OS (HOS) 라 지칭합니다.
커펌 시스템은 이를 기준으로 하여, 관련된 이름으로 작명된 것이 많습니다.
때문에, 단어의 뜻을 숙지 후 지구를 떠올리면 커스텀 펌웨어 구조에 대하여 쉽게 이해할 수 있습니다.
- Atmosphere (대기권)
각 기능에 대기를 이루는 여러 층의 이름이 부여되었으며, 이를 아울러 Atmosphere라 지칭합니다.
흔히 스위치 커펌이라 하면 이것을 말하며, Horizon 위에서 작동하기 때문에 이와 같은 이름이 붙었습니다.
· Troposphere (대류권) : Haze (안개), Daybreak (새벽)와 같은 앱이 이에 해당합니다.
· Stratosphere (성층권) : Horizon OS, Atmosphere를 위한 시스템 모듈 (boot, dmnt, loader 등).
· Mesosphere (중간권) : 시스템 제어 커널.
· Thermosphere (열 권) : 하이퍼 바이저 (가상화 소프트웨어).
· Exosphere (외기권) : 보안 모니터.
- Sphaira (지구)
Atmosphere로 부팅된 HOS 내부에서 운용 가능한 홈브류 관리 도구로,
Sphere의 어원, 그리스어로 구체, 지구의 의미를 갖는 Sphaira 라는 이름이 부여되었습니다.
- ATLAS
Hekate 위에서 실행 가능한 올인원 페이로드입니다.
스위치 시스템을 지원하기에 도구 앞 글자를 따와서, 그리스 신화의 하늘(Atmosphere)을 떠받드는 거인의 이름으로 설정했습니다.
· ASAP install supporter : 업데이트된 올인원 패키지 자동 설치 도구.
· TegraExplorer & Toolboxes : 낸드 저장소 관리 도구 & 모드칩 펌웨어 업데이트 도구.
· Lockpick RCM : 기기 고유 키파일 추출 도구.
· ASAP-Cleaner : ASAP 오류 앱 삭제/정리 및 초기화 도구.
· Scripts : 펌웨어 덤프/초기화/복구 및 낸드 덤프/복원, 조이콘 동기화 도구.
- Hekate (그믐달)
스위치 시스템과 상관없이 독립 실행 가능하며 Atmosphere, L4T, 페이로드 등을 실행하기 위한 도구로
기초 부팅 프로그램 (bootloader)라고도 합니다.
여러 OS 기동의 교차로 역할을 하기 때문에 달, 밤, 경계 (교차로), 주술을 관장하며 선(정펌)과 악(커펌)의
의미를 모두 가지고 있는 그리스 여신 헤카테의 이름이 부여되었습니다.
◆ 커펌 시스템에서의 스위치 구분
안내: 국내/외 구분 없이 글로벌로 사용되는 스위치의 구분 방법입니다.
- Erista Icosa : 18년 6월까지의 제조 모델, 흰색 배경의 박스
- Patched Erista Icosa : 18년 7월 이후의 제조 모델, 빨간 배경의 박스
- Mariko Iowa : 배터리 개선 모델
- Mariko Hoag : Lite 모델
- Mariko Aula : OLED 모델
◆ 낸드에 대한 이해
안내: 잘못 알고 있는 낸드에 대한 정보를 바로잡습니다.
- eMMC (시스템 낸드)
Embeded Multi-Media Card 의 약자로 낸드 플래시 메모리와 컨트롤러의 통합 칩입니다.
Horizon OS 가 ROM 파티션으로 설치되어 있으며, 스위치 메인 보드에 물리적으로 내장되어 있습니다.
스위치를 위한 시스템이 설치되어 있기 때문에 해당 파티션과 빈 낸드 공간 전체를 낸드 저장소 혹은 시스템 낸드 즉, 시스낸드라 부릅니다.
- Micro SD Card
메인 보드에 내장된 eMMC와는 별개로 확장 슬롯을 통하여 확장 가능한 외부 저장 장치입니다.
- emuMMC (=Emu NAND 에뮤낸드)
어떠한 OS의 설치를 위한 가상의 저장소로 에뮬레이션 낸드, 즉 에뮤낸드라 부릅니다.
스위치에서는 시스낸드의 롬을 SD 카드에 복제한 것 혹은 L4T를 위해 생성한 Ubuntu, Android 등이 이에 해당합니다.
- 낸드에 대한 오해
시스낸드 = eMMC에 설치된 기기 내장 OS + 저장 공간
에뮤낸드 = Micro SD Card에 설치된 스위치 복제 OS 혹은 L4T OS + 저장 공간
많은 유저들이 잘못 알고 있는 것 중 하나가 시스낸드, 에뮤낸드를 커펌으로 인식하고 있는 것입니다.
닌텐도 서버 차단, 시리얼 변조, 불법 게임을 설치하지 않는다면 에뮤낸드도 정펌과 동일하게 사용가능합니다.
커스텀 펌웨어는 앞서 말했듯, 각 낸드 위에서 실행되는 Atmosphere 혹은 L4T를 의미합니다.
◆ 파일 시스템과 파티션
안내: Fs와 파티션에 대한 이해
- 파일 시스템이란
시스템이 파일을 저장하고 정렬하는 방식을 의미하며 서로 다른 파일 시스템 간의 차이점은
데이터가 저장 매체에 저장되는 방식과 관련이 있으며, 파일 이름, 권한 및 속성에 영향을 미칩니다.
※ Mac과 같은 장치에서 사용된 적이 있는 저장소는 권한, 속성 문제로 커펌 파일에 영향을 줄 수 있습니다.
- 파티션 에뮤낸드
파티션이란 저장 매체의 저장소를 여러개의 별개 영역으로 분할하는 것을 의미합니다.
SD 카드 저장소를 다음 중 해당 파티션으로 분할하여 RAW 에뮤낸드 생성 혹은 L4T 설치 영역을 생성합니다.
· RAW 에뮤낸드 파티션 (스위치 시스템 복제 영역)
Horizon OS (약 2.4GB)와 세이브 데이터를 위한 넉넉한 공간 (약 9GB)를 더해 12GB가 권장됩니다.
· EXT4 에뮤낸드 파티션 (리눅스 우분투 영역)
원할한 운영을 위해 최소 32GB 이상의 용량이 권장됩니다.
· USER 에뮤낸드 파티션 (안드로이드 리니지 영역)
원할한 운영을 위해 최소 16GB 이상의 용량이 권장됩니다.
- 파일 에뮤낸드
SD 카드 저장소를 파티션 분할하지 않고 RAW 에뮤낸드를 파일 형식으로 생성합니다.
· RAW 에뮤낸드 파일 (스위치 시스템 복제 영역)
기종에 따라 시스낸드의 용량과 같은 32GB 혹은 64GB의 RAW 에뮤낸드 파일이 생성됩니다.
- FAT32
File Allocation Table 32의 약자로 오래된 FAT16을 대체하기 위해 만들어졌으며
대부분의 이동식 저장 장치에서 사용되는 시스템, 4GB 이상의 파일을 처리하지 못한다는 단점이 있습니다.
거의 모든 운영체제와 모바일 장치의 높은 호환성 + Horizon OS의 기본 환경이기 때문에 권장됩니다.
- exFAT
확장 파일 할당 테이블을 의미하며, FAT32를 대체하기 위해 만들어졌습니다.
PC 운영체제와의 높은 호환성과 4GB 이상의 파일을 처리하는 것이 장점입니다.
※ 커펌 시스템에서도 지원하지만 Atmosphere 및 L4T(switchroot)는 공식적으로 exFAT을 권장하지 않습니다.
◆ 글리칭에 대한 이해
안내: 스위치의 글리칭 프로세스와 이를 위한 도구에 대한 설명을 진행합니다.
- 글리칭이란?
시스템 소프트웨어 혹은 하드웨어의 물리적 결함 · 오류 · 버그를 글리치라하며
이를 의도적으로 실행하는 것을 글리칭이라 합니다.
- 지그, 로더란?
Erista 모델 스위치의 글리칭인 RCM (리커버리 모드) 진입을 위한 조이콘 레일의 클립과 페이로드 주입을 위한 기기.
- 모드칩이란?
글리칭을 위한 물리칩과 그 소프트웨어로 현재는 라즈베리 파이 2040 기반의 아두이노를 의미하며,
모드칩 펌웨어인 Picofly의 개발자 의도로는 WaveShare의 RP2040-one/zero/tiny가 이에 해당합니다.
※ 실루엣 처리된 칩은 Picofly 개발자의 동의 없이, 무단으로 불법 상업 이용된 중국발 복제칩입니다.
이로 인하여 개발자가 있는 피코플라이 메인 스레드에서는 이 칩을 인정하지 않으며 언급이 금지되오니 주의하십시오.
- 스위치의 부팅 구조
전원 입력 > 칩셋 코드 실행 > eMMC 부트로더 주입 > 서명 확인 > 통과 > 부팅
- Erista 모델 스위치의 글리칭 구조
지그 설치 > 전원 입력 > 칩셋 코드 실행 > RCM 진입 > 커스텀 로더 주입 > 서명 확인 > 스킵 > 부팅
- Patched Erista, Mariko 모델 스위치의 글리칭 구조
전원 입력 > 모드칩 기동 > CPU의 전압을 풀 다운 하여 처리 프로세스 스턴 > 칩셋 코드 실행 > eMMC의 부트로더 주입 타이밍 계산 >
계산된 타이밍에 eMMC 부트로더 대신 모드칩 로더를 주입하여 eMMC에서 주입된 것처럼 CPU를 속이기 > 서명 확인 > 통과 > 부팅
※ 이때, SD 카드에 커스텀 페이로드가 있으면 모드칩 로더 대신 주입됩니다.
※ OLED 도시바 낸드인 경우 타이밍 계산에 실패하거나 시간이 길어질 수 있습니다.
◆ efuse 와 warmboot
안내: 퓨즈와 콜드부트 및 웜부트 캐시에 대하여 설명합니다.
- efuse
스위치에는 혹여 하위 버전의 Horizon OS에서의 보안 취약점이 발견되어 악용되지 않도록
펌웨어의 다운그레이드 방지를 위한 보안 장치를 설계해 놓았으며 이것이 바로 efuse라는 전자 퓨즈 장치입니다.
업데이트시 손상되는 32다발의 물리 퓨즈로 각 버전에 해당하는 퓨즈 개수가 일치하지 않으면
스위치 시스템이 기동되지 않도록 디자인되어 있습니다.
- fusee (fusée)
Nvidia의 Tegra X1 칩셋의 보안 취약점 일명 Fusée Gelée (Frozen Rocket) 콜드 부팅 익스플로잇을 의미합니다.
Erista 기기는 콜드 부팅을 이용하기 때문에 휘발성이며, 이때 작명된 페이로드의 이름이 fusee.bin입니다, 또 퓨즈가 아닌 퓨제입니다.
※ 일부 몰상식 유저는 fusee 오류를 퓨즈 문제라 우기지만, fusee (fusée)와 fuse는 완전히 다른 것입니다 혼동하지 마십시오.
- warmboot cache
Patched Erista와 Mariko 시리즈는 콜드 부팅 익스플로잇을 방지하는 Tegra X1+을 사용하기 때문에
CPU를 속이는 작업을 통해 페이로드를 주입하는 모드칩이 필요하며 웜부팅입니다.
이 때문에 펌웨어가 업데이트 되면 이에 맞는 웜부트 캐시가 필요하며,
이는 펌웨어를 업데이트한 낸드를 한번 부팅하면 자동 생성됩니다, 이를 생성하지 않은 경유 퓨즈 매칭 에러가 발생합니다.
HOS 버전 | 연소 된 퓨즈 갯수 | 부팅에 필요한 warmboot mariko cache |
1.0.0 | 1 | X |
2.0.0 ~ 2.3.0 | 2 | X |
3.0.0 | 3 | X |
3.0.1 ~ 3.0.2 | 4 | X |
4.0.0 ~ 4.1.0 | 5 | X |
5.0.0 ~ 5.1.0 | 6 | X |
6.0.0 ~ 6.1.0 | 7 | X |
6.2.0 | 8 | X |
7.0.0 ~ 8.0.1 | 9 | X |
8.1.0 | 10 | X |
9.0.0 ~ 9.0.1 | 11 | X |
9.1.0 ~ 9.2.0 | 12 | wb_0c.bin |
10.0.0 ~10.2.0 | 13 | wb_0d.bin |
11.0.0 ~ 12.0.1 | 14 | wb_0e.bin |
12.0.2 ~ 13.1.0 | 15 | wb_0f.bin |
13.2.1 ~ 14.1.2 | 16 | wb_10.bin |
15.0.0 ~ 15.0.1 | 17 | wb_11.bin |
16.0.0 ~ 16.1.0 | 18 | wb_12.bin |
17.0.0 ~ 18.1.0 | 19 | wb_13.bin |
19.0.0 ~ 19.0.1 | 20 | wb_14.bin |
◆ 용어 정리집
안내: 나머지 개념 및 용어를 정리합니다.
- OFW (정식 펌웨어) : 이름 그대로 시스낸드 (Horizon OS)를 의미하지만, Atmosphere 없이 부팅된 상태를 의미합니다.
- Stock : 정펌처럼 사용 가능하지만 정펌이 아니며, 설정을 통해 KIP 패치 등을 적용 가능한 부팅 상태를 의미합니다.
- PRODINFO (CAL0) : 기기 고유 정보와 인증서를 의미하며, 훼손 및 분실시 닌텐도 서버와 관련된 모든 기능이 차단됩니다.
- BISKEY : 기기 고유 키로 암호화 및 해독에 필요한 정보 코드이며, 훼손 및 분실시 닌텐도 서버와 관련된 모든 기능이 차단됩니다.
- prod.keys : 기기의 권한 키 모음집입니다.
- title.keys : 설치된 앱의 티켓 키 모음집입니다.
- SX : SX OS 혹은 SX 모드칩에서만 운용되는 펌웨어와 페이로드를 의미하며 boot.dat, boot.ini 파일이 이것에 해당합니다.
- Spacecraft : SX 판매 종료 후 발매된 후속 모드칩과 그 펌웨어를 의미합니다.
- Hwfly : SX 모드칩의 복제 모드칩과 그 펌웨어를 의미합니다.
- INSTINCT : Hwfly 펌웨어를 복제하여 글리치 타이밍을 개선한 모드칩과 그 펌웨어를 의미합니다.
- Picofly : INSTINCT 로더를 복제하여 글리치 타이밍을 대폭 개선한 오픈 소스 펌웨어와 이를 설치한 RP2040 아두이노를 의미합니다.
- Applet Mode : 비공식 앱을 실행하기 위해 사용되는 메모리를 최소로 할당한 모드를 의미하며 공식 앱과의 메모리 충돌을 방지합니다.
- Full Memory Mode : 모든 사용 가능한 메모리를 할당하여 비공식 앱을 실행한 모드를 의미합니다.
- System module : Horizon OS의 기능 혹은 이를 stratosphere를 통해 기능 수정한 것을 의미합니다.
- Homebrew : 비공식 편의 기능 앱 및 오버레이 전반의 컨텐츠를 의미합니다, 주로 .nro 확장명을 갖습니다.
- Overlay : 앱으로 기동하는 것이 아닌 실행 중인 시스템 위에서 기동하는 컨텐츠를 오버레이라 합니다, 주로 .ovl의 확장명을 갖습니다.
- FTP : USB 입력이 필요 없는 무선 파일 전송 프로토콜입니다.
- MTP : USB 입력을 통한 유선 파일 전송 프로토콜입니다.
- 설치파일 확장자 : NSP, NSZ, XCI, XCZ
- Linux for Tegra (L4T) : Tegra 칩셋에서 사용가능하도록 제작된 OS 전반을 의미하며, Android, Ubuntu, Lakka가 이에 해당합니다.