This is experimental at this moment. Horrible hacks are included.
This is a bootc-powered Fedora base image compatible with Raspberry Pi. See https://docs.fedoraproject.org/en-US/bootc/ for more information about bootc and Fedora.
The main difference between the base Fedora image and this repository is that this repository's Containerfile patches bootupd so it can handle Raspberry Pi-specific bootloader and firmware files under /boot/efi that are needed to successfully boot a Pi. See coreos/bootupd#651 for more information about what's needed in bootupd.
Clone this repository on an aarch64 machine and run:
sudo podman build -t localhost/fedora-bootc-raspi:40 .
mkdir output
sudo podman run \
--rm \
-it \
--privileged \
--pull=newer \
--security-opt label=type:unconfined_t \
-v $(pwd)/output:/output \
-v /var/lib/containers/storage:/var/lib/containers/storage \
quay.io/centos-bootc/bootc-image-builder:latest \
--type raw \
--local \
--rootfs ext4 \
localhost/fedora-bootc-raspi:40
# arm-image-installer can deal only deal with xz archives, let's deal with that
xz -v -0 -T0 output/raw/disk.raw
# substitute $DISK with the location of Raspberry Pi disk
sudo arm-image-installer --target=rpi4 --media=$DISK --image output/raw/disk.raw.xz --resizefs
If you want a user inside the image, add -v $(pwd)/config.toml:/config.toml
to podman-run
and create the following blueprint in config.toml
:
[[customizations.user]]
name = "alice"
password = "$6$..."
key = "ssh-ed25519 AAAA..."
groups = ["wheel"]
Alternatively, just add a layer with a user.
The horrible bootupd hack currently cannot update the Raspberry Pi specific firmware and bootloader. This means that you are stuck with their versions from the initial disk image, unless you manually update them.