Skip to content

boot_folder: explain how to use firstboot #1701

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions configuration/boot_folder.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,14 @@ When this file is present, SSH will be enabled on boot. The contents don't matte

This is the file to configure wireless network settings (if the hardware is capable of it). Edit the country code and the network part to fit your case. More information on how to use this file can be found in [the `wireless/headless` section](./wireless/headless.md).

### run_once

If a `/boot/run_once` executable exists at boot time, Raspberry Pi OS executes it on the first boot. It may contain bash, python, or any executable ARM binary. After execution, `run_once` will be renamed to `run_once.XXX`. Later reboots will know `run_once.XXX` was already executed.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess technically it's "executes it on the next boot" rather than just "first boot" ? (I think there's nothing which means it only runs programs on first boot?)


Use it to provision your Raspberry Pi using simple scripts or initializing configuration management like cloud-init, puppet or ansible.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Slight grammar inconsistency between "provision" and "initializing".


Once the system has booted, view status and script output with `systemctl status run_once` and `journalctl -u run_once`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would probably be clearer if this was more verbose: "view status with systemctl status run_once and view script output with journalctl -u run_once." ?

And perhaps "script output" isn't the right terminology, as earlier on you say "or any executable ARM binary" ?


### Device Tree files

There are various Device Tree blob files, which have the extension `.dtb`. These contain the hardware definitions of the various models of Raspberry Pi, and are used on boot to set up the kernel according to which Pi model is detected. More [details here](device-tree.md#part3.1).
Expand Down