Burn scripts enable you to do updates that are specific to a single system as you burn the media for it. An obvious use case for burn scripts is for use with scripted burning of IMGs. For instance sdm-gburn
uses burn scripts to programmatically perform per-destination custom updates.
For more general use, Plugins are a better solution. Plugins can be used during IMG customization, and hence available to all systems burned from that IMG, or burning an IMG and only available on that particular burn target.
There are cases where it is desirable to do per-system customization on the SD Card or burn image after it has been burned. Examples include:
- Copy additional files onto the SD Card
- Configuration file customizations for a specific system
- Apps installed for a specific system
If the only differences between your "standard" image and per-device customizations are relatively modest (from your perspective), you can use Burn Scripts to implement these customizations on the burn output device or file.
In the first case (copying additional files), your script will need access to both the host system and the SD Card. --b0script
should be used for this. The execution environment for --b0script
is the same as Phase 0 (see Custom Phase Script), and should follow the guidelines for a Custom Phase Script Phase 0. sdm will invoke the procedure do_b0script
in the b0script file.
In the second and third cases, your script wants to do things in the context of the newly-created system. Use --b1script
for that. sdm will nspawn into the SD Card, so your script should follow the guidelines for a Custom Phase Script Phase 1.
The argument to both switches is a /complete/path/to/script.
- For
--b0script
: Uselogtoboth "string to log"
in your--b0script
- For
--b1script
:source /etc/sdm/sdm-readparams
at the top of your script, then uselogtoboth "string to log"
The --b1script
script will be copied to /etc/sdm/assets on the SD Card/image before the nspawn, and is not deleted.
See Example Burn Scripts for examples of b0script and b1script
These switches can be used with --burn
and --burnfile
. When used this way, they affect only the output IMG/SSD/SD Card, and not the source IMG file.
--autologin
--b0script
--b1script
--bootscripts
--burn-plugin
--expand-root
--no-expand-root
--hostname
--noreboot
and--norestart
--nowait-timesync
--plugin
--plugin-debug
--reboot
--redact
--regen-ssh-host-keys
--update-plugins
In addition to the above switches, any plugin can be run from the --burn
or --burnfile
command line, exactly as you can when customizing an IMG.