# Running This document walks through one boot of the installed macOS on the A16, driven from the Mac with `tools/cycle.py`. Placeholders are in angle brackets. > Read the warning in the [README](../README.md) first. A run programs the GPU, > clocks and memory-bandwidth votes, and the guest writes the internal SSD. ## Before the first run - q1n1 is installed on the A16 as a UEFI boot entry, and macOS 27 is installed on the internal NVMe. See q1n1's `docs/A16-INSTALL.md` and [FULL-INSTALL.md](FULL-INSTALL.md). - The Apple inputs are extracted and the components are built ([BUILDING.md](BUILDING.md)). - The A16 is connected to the Mac by USB-C, and preferably on AC power. Every hardware mode refuses to start below the battery threshold (`--battery-minimum` can raise it, never lower it). - Find the Mac-side network interface that q1n1's USB NCM link created (for example with `ifconfig`). Pass it to every hardware command as `--device udp://`. The name changes with the USB port. - Create `tools/cycle_lib/pins.json` from `tools/cycle_lib/pins.example.json` and fill in the device and stage hashes ([BUILDING.md](BUILDING.md)). ## The cycle `tools/cycle.py` runs one boot as a fixed sequence. Each mode records what it did under `build/*`, checks the records of the previous step, and refuses when the machine is not in the state that step expects. Every mode has an offline `--check` that validates everything without touching hardware. At any point, ```sh python3 tools/cycle.py next ``` prints the exact next command for the current records. ### 1. Cold boot into q1n1 Power the A16 on into q1n1, or from the Mac: ```sh python3 ../q1n1/tools/a16ctl.py boot q1n1 python3 tools/cycle.py status ``` `status` makes one read-only proxy query: the generation, the exception level, the image base, any SError, and the battery. ### 2. Move to an idle, chainloaded generation A boot runs on a freshly chainloaded q1n1 generation, never on the cold-booted one: ```sh python3 tools/cycle.py retire --idle --prefix