Downloads · Writing an image
From download to first boot.
Every airOS image, ISO or SD, is written the same way: the whole file, byte for byte, onto the whole USB stick or SD card. Check the download first and, where you can, the copy afterwards.
Before you start
- A USB stick or SD card of 8 GB or more. Writing erases everything on it.
- The ISO images (x86-64 and ARM64) go on a USB stick; the Pi 4 and Cubie A7S images go on an SD card and boot directly.
- Download the image and its SHA-256 file from the downloads page into the same folder. If your browser renamed the image, such as
airos-rpi4(1).img.xz, an older download is in the folder: remove it so you don’t write the wrong file. - Check the download. Each command should report
OKor print the hash in the SHA-256 file.
# Linux
sha256sum -c airos-x86_64.iso.xz.sha256
# macOS
shasum -a 256 -c airos-x86_64.iso.xz.sha256
# Windows (PowerShell)
Get-FileHash .\airos-x86_64.iso.xzReplace airos-x86_64.iso.xz with the image you downloaded throughout this guide.
Linux
- Insert the stick or card and find its device name. Match the size and model: USB devices are
/dev/sdX, built-in card readers/dev/mmcblkN.
lsblk -o NAME,SIZE,MODEL,TRAN- Unmount any of its partitions your desktop mounted (ignore “not mounted” messages), then decompress and write the image to the whole device, not a partition such as
sdX1:
sudo umount /dev/sdX?*
xz -dc airos-x86_64.iso.xz | sudo dd of=/dev/sdX bs=4M conv=fsync oflag=direct status=progress
syncDouble-check the device name: dd overwrites whatever disk you give it without asking. Don’t remove the stick until the prompt returns after sync.
macOS
- macOS doesn’t include
xz. Install it with Homebrew (brew install xz), or extract the image with an archive app such as Keka or The Unarchiver and useif=airos-x86_64.isoin step 3 instead of the pipe. - Insert the stick or card, find its disk number by its size, and unmount it:
diskutil list external
diskutil unmountDisk /dev/diskN- Write to the raw device
/dev/rdiskN(faster than/dev/diskN). Press Ctrl-T to see progress.
xz -dc airos-x86_64.iso.xz | sudo dd of=/dev/rdiskN bs=4m
diskutil eject /dev/diskNIf macOS says the disk isn’t readable, choose Ignore or Eject, never Initialize: macOS can’t read Haiku’s file system, and the disk is fine.
Windows
- Extract the image with 7-Zip: right-click the
.xzfile and choose 7-Zip → Extract Here. You getairos-x86_64.isoor an.imgfile. - Run Rufus and choose the stick or card under Device. Rufus lists USB devices, including SD cards in a USB reader.
- Click Select and open the extracted file. Leave the other settings alone.
- Click Start. If Rufus asks how to write the image, choose Write in DD Image mode. ISO Image mode copies files onto a new FAT partition and the stick won’t boot.
- Confirm that the device will be erased and wait for Ready. If Windows then offers to format the disk, click Cancel: Windows can’t read Haiku’s file system, and formatting would erase the image.
Check the copy
A corrupted write can still look normal, so on Linux and macOS read the image back from the device and compare it with the build. Open the image’s Build manifest on the downloads page: image_bytes is the image’s uncompressed size and image_sha256 its uncompressed hash.
# Linux
sudo head -c IMAGE_BYTES /dev/sdX | sha256sum
# macOS (insert the disk again if you ejected it)
sudo head -c IMAGE_BYTES /dev/diskN | shasum -a 256The printed hash must equal image_sha256. If it doesn’t, write the image again, and try another stick or card if it still differs.
If it doesn’t boot
- PCs: turn off Secure Boot in the firmware settings. The airOS boot loader isn’t signed.
- “No boot volume found” after the boot loader appears usually means the copy is damaged. Check it as above and rewrite it with
ddor Rufus. - Pi 4 and Cubie A7S: use the SD image for that board; the ARM64 ISO doesn’t boot either one. The hardware notes list what each board supports.
