This will get you a TF / MicroSD card with preconfigured headless Raspberry Pi OS with:
- hostname configured
- user account and password configured
- wifi network and credentials to connect to Wi-Fi
- SSH enabled
- keyboard layout & timezone set (locale)
This will also work on non-ChromeOS platforms so you don't have to use the Raspberry Pi Imager (e.g. dd on Linux).
You do not need to install the Linux dev environment on ChromeOS to get a preconfigured headless RPi.
- Download the applicable image, e.g.
2025-05-13-raspios-bookworm-arm64-lite.img.xz - extract the download by double-clicking (ChromeOS will extract .xz files)
- copy & paste the
<YYYY-MM-DD>-raspios-<release>-arm64-lite.imgfile back out your Downloads - change the extension from
.imgto.bin - launch the Chromebook Recovery Utility
- click the gear icon -> "Use local image" and select the
.binfile - write the image
- when complete, the storage volumes
bootfs(R/W) androotfs(RO) will be in the ChromeOS file manager
- edit custom.toml for your desired settings for:
- Wi-Fi
- region / locale
- SSH
- account
- hostname
- save
custom.tomlto the root of the bootfs partition (it is a FAT32 partition that's R/W on ChromeOS)
- shell script
/usr/lib/raspberrypi-sys-mods/firstbootis executed fromcommmandline.txton the bootfs partition - it will call Python script
/usr/lib/raspberrypi-sys-mods/init_configto readcustom.tomlfrom the root of the bootfs partition - Raspberry Pi will be configured with your settings
The config can contain encrypted or unencrypted passwords for the user account and WiFi, set the flag password_encrypted=false for cleartext.
It's up to you. I found it ridiculous that you need to use the Raspberry Pi Imager to get a basic RPi headless installation going. It's a GUI utility and nameless binary you're expected to download and just execute.
There's a lot of misinformation on the internet about the usage of wpa_supplicant.conf and a blank ssh file being created and placed on the boot partition to preconfigure the install. This doesn't work on Raspberry Pi OS after Bullseye. I spent days flashing 10+ times trying to figure this out.
Then I discovered that the Raspberry Pi Imager in GUI mode won't let you output a preconfigured RPi image to disk so that you can then use the ChromeOS Recovery Utility to write it. This isn't useful for Chrome OS because block devices are not exposed in the Linux environement on ChromeOS.
Considering that raspberry Pi is often used in education where ChromeOS is prevalent, there is currently no documented, easy way to quickly set up a headless RPi. Which is crazy.