Mac controls Jetson boot order by relaying the Jetson's USB APX recovery traffic into a Linux flashing container and flashing only the QSPI boot-order overlay. The scripts do not create a Jetson rootfs image; they separate boot-order control from rootfs migration.
Target board: Jetson Orin Nano Super 8GB.
makemake produces the host-side tools under bin/:
bin/apx-relayd: macOS USB APX relay server.bin/qemu-i386-apxproxy: Linux amd64 QEMU user-mode binary patched to proxy usbfs APX access throughapx-relayd.
The QEMU proxy build runs in Docker and downloads official QEMU source from https://download.qemu.org/. To use a specific source tarball:
QEMU_URL=https://download.qemu.org/qemu-8.2.7.tar.xz make qemu-proxyboot.sh is the Mac-side boot-order controller. Its input is the preferred boot-device order, and its output is a QSPI-only flash that changes Jetson UEFI DefaultBootPriority.
./boot.sh sd ssd
./boot.sh ssd sdBehavior:
sd ssdflashes SD/eMMC before NVMe.ssd sdflashes NVMe before SD/eMMC.- The script starts
bin/apx-relaydon macOS. - Docker runs the official Jetson Linux
flash.shfromL4T_DIR. - The container uses
bin/qemu-i386-apxproxyto turn Linux usbfs APX calls into relay RPCs. flash.shis called with--no-systemimg --qspi-only, so rootfs contents are not reflashed.
Required inputs:
- Jetson in APX/recovery mode over USB.
- Docker on macOS.
L4T_DIRpointing at an officialLinux_for_Tegratree. Default:$HOME/jetson-flash/Linux_for_Tegra.
Dry-run:
BOOT_SH_DRY_RUN=1 ./boot.sh sd ssdto_ssd.sh is the Mac-side SSD migration launcher. It copies an embedded migration script over SSH, prompts for the Jetson sudo password on macOS, feeds that password to Jetson sudo, and stages SD rootfs to the NVMe SSD.
./to_ssd.sh <jetson-user> <jetson-host>Behavior on the Jetson:
- Verifies it is currently booted from SD/eMMC.
- Repairs and expands the NVMe root partition.
- Copies
/to the NVMe root partition withrsync. - Rewrites
/boot/extlinux/extlinux.confto use the NVMe partition UUID. - Copies the patched boot config to the NVMe filesystem.
- Disables the old
setssdroot.servicepath if present. - Leaves reboot to the operator.
The Jetson-side migration script must run as root. The macOS wrapper reads the Jetson sudo password with hidden input and does not accept passwords as command-line arguments.
Print only the Jetson-side script:
./to_ssd.sh --print-jetson-scriptOpen a manual serial console helper:
./to_ssd.sh --serial [device]