docs: README and install process for debug.ini and backup
All checks were successful
Build / Build (push) Successful in 17s

- Link DEBUG_INI.md; describe clean install backup (dbi.config, prod.keys)
- Update INSTALLATION_PROCESS backup/restore steps

Made-with: Cursor
This commit is contained in:
2026-04-12 16:22:45 +02:00
parent 21f8e0e38a
commit dce11538d1
2 changed files with 181 additions and 194 deletions

View File

@@ -2,6 +2,8 @@
This document provides a detailed, step-by-step breakdown of everything that is checked and done during the OmniNX installation/update process. This document provides a detailed, step-by-step breakdown of everything that is checked and done during the OmniNX installation/update process.
For **optional debug step skips** (`sd:/config/omninx/debug.ini`), see **[DEBUG_INI.md](DEBUG_INI.md)**.
## Overview ## Overview
The OmniNX Installer Payload operates in two modes: The OmniNX Installer Payload operates in two modes:
@@ -305,17 +307,12 @@ channel_pack={variant} # Same as current_pack
#### 32. Create Backup Directory #### 32. Create Backup Directory
- Creates `sd:/temp_backup/` directory - Creates `sd:/temp_backup/` directory
#### 33. Backup DBI #### 33. Backup DBI settings
- **Source**: `sd:/switch/DBI/` - **Source**: `sd:/switch/DBI/dbi.config` (file only, not the whole `DBI` tree)
- **Destination**: `sd:/temp_backup/DBI/` - **Destination**: `sd:/temp_backup/dbi.config`
- Only if source exists - Only if the source file exists
#### 34. Backup Tinfoil #### 34. Backup prod.keys
- **Source**: `sd:/switch/tinfoil/`
- **Destination**: `sd:/temp_backup/tinfoil/`
- Only if source exists
#### 35. Backup prod.keys
- **Source**: `sd:/switch/prod.keys` - **Source**: `sd:/switch/prod.keys`
- **Destination**: `sd:/temp_backup/prod.keys` - **Destination**: `sd:/temp_backup/prod.keys`
- Only if source exists - Only if source exists
@@ -325,22 +322,22 @@ channel_pack={variant} # Same as current_pack
### Step 2: Wipe Directories ### Step 2: Wipe Directories
**Location**: `install.c:543-602` **Location**: `install.c:543-602`
#### 36. Delete Entire Directories #### 35. Delete Entire Directories
Recursively deletes (if they exist): Recursively deletes (if they exist):
- `sd:/atmosphere/` (entire directory tree) - `sd:/atmosphere/` (entire directory tree)
- `sd:/bootloader/` (entire directory tree) - `sd:/bootloader/` (entire directory tree)
- `sd:/config/` (entire directory tree) - `sd:/config/` (entire directory tree)
- `sd:/switch/` (entire directory tree) - `sd:/switch/` (entire directory tree)
#### 37. Delete Root Files #### 36. Delete Root Files
- Uses same deletion list as update mode (Step 19) - Uses same deletion list as update mode (Step 19)
- Deletes `boot.dat`, `boot.ini`, `exosphere.ini`, etc. - Deletes `boot.dat`, `boot.ini`, `exosphere.ini`, etc.
#### 38. Delete Miscellaneous Items #### 37. Delete Miscellaneous Items
- Uses same deletion lists as update mode (Steps 20-21) - Uses same deletion lists as update mode (Steps 20-21)
- Deletes `argon/`, `games/`, `SaltySD/`, etc. - Deletes `argon/`, `games/`, `SaltySD/`, etc.
#### 39. Recreate Switch Directory #### 38. Recreate Switch Directory
- Creates empty `sd:/switch/` directory for restoration - Creates empty `sd:/switch/` directory for restoration
--- ---
@@ -348,27 +345,17 @@ Recursively deletes (if they exist):
### Step 3: Restore User Data ### Step 3: Restore User Data
**Location**: `backup.c:55-95` **Location**: `backup.c:55-95`
#### 40. Restore DBI #### 39. Restore DBI settings
- **Source**: `sd:/temp_backup/DBI/` - **Source**: `sd:/temp_backup/dbi.config`
- **Destination**: `sd:/switch/DBI/` - **Destination**: `sd:/switch/DBI/dbi.config` (creates `sd:/switch/DBI/` if needed)
- **Cleanup**: After restoration, deletes old DBI NRO files: - No longer copies the full `DBI` folder; old `.nro` cleanup is unnecessary
- `sd:/switch/DBI/DBI_810_EN.nro`
- `sd:/switch/DBI/DBI_810_DE.nro`
- `sd:/switch/DBI/DBI_845_EN.nro`
- `sd:/switch/DBI/DBI_845_DE.nro`
- `sd:/switch/DBI/DBI.nro`
#### 41. Restore Tinfoil #### 40. Restore prod.keys
- **Source**: `sd:/temp_backup/tinfoil/`
- **Destination**: `sd:/switch/tinfoil/`
- **Cleanup**: After restoration, deletes `sd:/switch/tinfoil/tinfoil.nro`
#### 42. Restore prod.keys
- **Source**: `sd:/temp_backup/prod.keys` - **Source**: `sd:/temp_backup/prod.keys`
- **Destination**: `sd:/switch/prod.keys` - **Destination**: `sd:/switch/prod.keys`
#### 43. Cleanup Backup Directory #### 41. Cleanup Backup Directory
**Location**: `backup.c:98-103` **Location**: `backup.c` (`cleanup_backup`)
- Deletes `sd:/temp_backup/` directory after restoration - Deletes `sd:/temp_backup/` directory after restoration
--- ---

326
README.md
View File

@@ -1,163 +1,163 @@
# OmniNX Installer Payload # OmniNX Installer Payload
> **To properly use this payload, download the latest OmniNX Release:** [https://git.niklascfw.de/OmniNX/OmniNX/releases](https://git.niklascfw.de/OmniNX/OmniNX/releases) > **To properly use this payload, download the latest OmniNX Release:** [https://git.niklascfw.de/OmniNX/OmniNX/releases](https://git.niklascfw.de/OmniNX/OmniNX/releases)
A minimal payload for installing OmniNX CFW Pack files on Nintendo Switch outside of Horizon OS. A minimal payload for installing OmniNX CFW Pack files on Nintendo Switch outside of Horizon OS.
Based on [TegraExplorer](https://github.com/shchmue/TegraExplorer) and [hekate](https://github.com/CTCaer/hekate) by CTCaer, naehrwert, and shchmue. Based on [TegraExplorer](https://github.com/shchmue/TegraExplorer) and [hekate](https://github.com/CTCaer/hekate) by CTCaer, naehrwert, and shchmue.
Based on [HATS-Installer-Payload](https://github.com/sthetix/HATS-Installer-Payload) by sthetix. Based on [HATS-Installer-Payload](https://github.com/sthetix/HATS-Installer-Payload) by sthetix.
## Features ## Features
- **Automatic Variant Detection**: Detects which OmniNX pack variant is present (Standard/Light/OC) - **Automatic Variant Detection**: Detects which OmniNX pack variant is present (Standard/Light/OC)
- **Smart Installation Modes**: - **Smart Installation Modes**:
- **Update Mode**: Selective deletion when OmniNX is already installed - **Update Mode**: Selective deletion when OmniNX is already installed
- **Clean Install**: Full wipe with backup/restore of user data (DBI, Tinfoil, prod.keys) - **Clean Install**: Full wipe with backup/restore of user data (DBI `dbi.config`, prod.keys)
- **Version Detection**: Detects installed OmniNX version via marker files (`1.0.0s`, `1.0.0l`, `1.0.0oc`) - **Version Detection**: Detects installed OmniNX version via marker files (`1.0.0s`, `1.0.0l`, `1.0.0oc`)
- **Progress Display**: Visual status messages during installation - **Progress Display**: Visual status messages during installation
- **Error Handling**: Detailed error reporting on screen - **Error Handling**: Detailed error reporting on screen
- **Payload Chaining**: Automatically launch hekate after installation - **Payload Chaining**: Automatically launch hekate after installation
## Documentation ## Documentation
For detailed information about the installation process, see: For detailed information about the installation process, see:
- **[INSTALLATION_PROCESS.md](INSTALLATION_PROCESS.md)** - Complete step-by-step breakdown of everything checked and done during installation/update - **[INSTALLATION_PROCESS.md](INSTALLATION_PROCESS.md)** - Complete step-by-step breakdown of everything checked and done during installation/update
- **[DEBUG_INI.md](DEBUG_INI.md)** - Optional `sd:/config/omninx/debug.ini` parameters to skip install steps (for testing)
## Installation Modes
## Installation Modes
### Update Mode (OmniNX Detected)
- Detected when version marker files (`1.0.0s`, `1.0.0l`, or `1.0.0oc`) are found ### Update Mode (OmniNX Detected)
- Performs selective deletion of specific directories/files - Detected when version marker files (`1.0.0s`, `1.0.0l`, or `1.0.0oc`) are found
- Preserves user data, savegames, and installed games - Performs selective deletion of specific directories/files
- Updates only necessary CFW components - Preserves user data, savegames, and installed games
- Updates only necessary CFW components
### Clean Install (No OmniNX Detected)
- Detected when no version marker files are found ### Clean Install (No OmniNX Detected)
- Performs full wipe of `/atmosphere`, `/bootloader`, `/config`, and `/switch` - Detected when no version marker files are found
- **Backs up and restores**: - Performs full wipe of `/atmosphere`, `/bootloader`, `/config`, and `/switch`
- `sd:/switch/DBI` → preserved - **Backs up and restores**:
- `sd:/switch/tinfoil` → preserved - `sd:/switch/DBI/dbi.config` → preserved (not the whole `DBI` folder)
- `sd:/switch/prod.keys` → preserved - `sd:/switch/prod.keys` → preserved
- Fresh installation of all CFW components - Fresh installation of all CFW components
## Building ## Building
### Prerequisites ### Prerequisites
- **devkitARM** - ARM toolchain for Nintendo Switch development - **devkitARM** - ARM toolchain for Nintendo Switch development
- **BDK** - Blue Development Kit (included in this repo) - **BDK** - Blue Development Kit (included in this repo)
### Build Commands ### Build Commands
```bash ```bash
make clean make clean
make make
``` ```
The built payload will be output to `output/OmniNX-Installer.bin`. The built payload will be output to `output/OmniNX-Installer.bin`.
### CI / GitHub Actions ### CI / GitHub Actions
Every push triggers a build. The `.bin` file is produced and attached as a workflow artifact (Actions tab → select run → Artifacts). Every push triggers a build. The `.bin` file is produced and attached as a workflow artifact (Actions tab → select run → Artifacts).
## Usage ## Usage
### 1. Extract OmniNX Pack to SD Card ### 1. Extract OmniNX Pack to SD Card
Extract the OmniNX pack zip file directly to your SD card. The pack should contain one of: Extract the OmniNX pack zip file directly to your SD card. The pack should contain one of:
``` ```
sd:/OmniNX Standard/ sd:/OmniNX Standard/
├── atmosphere/ ├── atmosphere/
├── bootloader/ ├── bootloader/
├── config/ ├── config/
├── switch/ ├── switch/
├── TegraExplorer/ ├── TegraExplorer/
├── warmboot_mariko/ ├── warmboot_mariko/
├── boot.dat ├── boot.dat
├── boot.ini ├── boot.ini
├── exosphere.ini ├── exosphere.ini
├── hbmenu.nro ├── hbmenu.nro
├── loader.bin ├── loader.bin
├── payload.bin ├── payload.bin
└── 1.0.0s └── 1.0.0s
``` ```
Or `sd:/OmniNX Light/` or `sd:/OmniNX OC/` for other variants. Or `sd:/OmniNX Light/` or `sd:/OmniNX OC/` for other variants.
**Important**: Extract both the OmniNX pack zip AND this payload to your SD card. **Important**: Extract both the OmniNX pack zip AND this payload to your SD card.
### 2. Launch Payload ### 2. Launch Payload
Use hekate or another bootloader to launch the payload: Use hekate or another bootloader to launch the payload:
1. Place `omninx-installer.bin` in `sd:/bootloader/payloads/` 1. Place `omninx-installer.bin` in `sd:/bootloader/payloads/`
2. Launch the payload from hekate's payload menu 2. Launch the payload from hekate's payload menu
3. The payload will automatically: 3. The payload will automatically:
- Detect which pack variant is present - Detect which pack variant is present
- Detect if OmniNX is already installed - Detect if OmniNX is already installed
- Perform appropriate installation (update or clean) - Perform appropriate installation (update or clean)
- Launch hekate after completion - Launch hekate after completion
### 3. What Happens ### 3. What Happens
1. Payload mounts the SD card 1. Payload mounts the SD card
2. Detects current OmniNX installation (if any) 2. Detects current OmniNX installation (if any)
3. Detects which pack variant is on SD card 3. Detects which pack variant is on SD card
4. Determines installation mode (update vs clean) 4. Determines installation mode (update vs clean)
5. Performs cleanup based on mode: 5. Performs cleanup based on mode:
- **Update**: Selective deletion of specific paths - **Update**: Selective deletion of specific paths
- **Clean**: Full wipe with backup/restore - **Clean**: Full wipe with backup/restore
6. Copies files from pack directory to SD root 6. Copies files from pack directory to SD root
7. Creates version marker file 7. Creates version marker file
8. Cleans up old version markers 8. Cleans up old version markers
9. Launches hekate (`sd:/bootloader/update.bin`) 9. Launches hekate (`sd:/bootloader/update.bin`)
## Variant Support ## Variant Support
The payload supports three OmniNX variants: The payload supports three OmniNX variants:
- **Standard** `sd:/OmniNX Standard/` - **Standard** `sd:/OmniNX Standard/`
- **Light** `sd:/OmniNX Light/` - **Light** `sd:/OmniNX Light/`
- **OC** `sd:/OmniNX OC/` - **OC** `sd:/OmniNX OC/`
The payload detects the pack variant from the staging directory presence and detects the current installation (variant + version) from `sd:/config/omninx/manifest.ini` (`current_pack` and `version` keys). The payload detects the pack variant from the staging directory presence and detects the current installation (variant + version) from `sd:/config/omninx/manifest.ini` (`current_pack` and `version` keys).
## Project Structure ## Project Structure
``` ```
OmniNX-Installer-Payload/ OmniNX-Installer-Payload/
├── source/ # Main source code ├── source/ # Main source code
│ ├── main.c # Entry point and main flow │ ├── main.c # Entry point and main flow
│ ├── version.c # Version/variant detection │ ├── version.c # Version/variant detection
│ ├── version.h │ ├── version.h
│ ├── install.c # Installation logic │ ├── install.c # Installation logic
│ ├── install.h │ ├── install.h
│ ├── backup.c # Backup/restore operations │ ├── backup.c # Backup/restore operations
│ ├── backup.h │ ├── backup.h
│ ├── deletion_lists.h # Arrays of paths to delete │ ├── deletion_lists.h # Arrays of paths to delete
│ ├── fs.c # File system operations │ ├── fs.c # File system operations
│ ├── fs.h │ ├── fs.h
│ ├── gfx.c # Graphics utilities │ ├── gfx.c # Graphics utilities
│ ├── gfx.h │ ├── gfx.h
│ ├── nx_sd.c # SD card operations │ ├── nx_sd.c # SD card operations
│ ├── nx_sd.h │ ├── nx_sd.h
│ ├── link.ld # Linker script │ ├── link.ld # Linker script
│ └── start.S # Startup assembly │ └── start.S # Startup assembly
├── bdk/ # Blue Development Kit ├── bdk/ # Blue Development Kit
├── Makefile # Build configuration ├── Makefile # Build configuration
├── VERSION # Version file ├── VERSION # Version file
└── README.md # This file └── README.md # This file
``` ```
## License ## License
This project is based on TegraExplorer and hekate. Please refer to those projects for their respective licenses. This project is based on TegraExplorer and hekate. Please refer to those projects for their respective licenses.
## Credits ## Credits
- **CTCaer** - [hekate](https://github.com/CTCaer/hekate) - **CTCaer** - [hekate](https://github.com/CTCaer/hekate)
- **naehrwert** - Tegra exploration work - **naehrwert** - Tegra exploration work
- **shchmue** - [TegraExplorer](https://github.com/shchmue/TegraExplorer) - **shchmue** - [TegraExplorer](https://github.com/shchmue/TegraExplorer)
- **sthetix** - [HATS-Installer-Payload](https://github.com/sthetix/HATS-Installer-Payload) (inspiration and base structure) - **sthetix** - [HATS-Installer-Payload](https://github.com/sthetix/HATS-Installer-Payload) (inspiration and base structure)
- **Woody2408** - OmniNX CFW Pack creator - **Woody2408** - OmniNX CFW Pack creator