Diederik de Haas
When the image was build also determines which package versions got installed in the generated image and could help explain why a user has problems with the downloaded image. Signed-off-by: Diederik de Haas <email@example.com>
|7 months ago|
|debos||2 years ago|
|rootfs||12 months ago|
|.gitignore||1 year ago|
|.gitmodules||3 years ago|
|LICENSE||5 years ago|
|Makefile||9 months ago|
|README.md||8 months ago|
|compress.sh||5 years ago|
|generate-recipe.py||7 months ago|
|raspi_master.yaml||7 months ago|
Raspberry Pi image specs
This repository contains the files with which the images referenced at https://wiki.debian.org/RaspberryPiImages have been built.
Option 1: Downloading an image
See https://wiki.debian.org/RaspberryPiImages for where to obtain the latest pre-built image.
Option 2: Building your own image
If you prefer, you can build a Debian Raspberry Pi image yourself. If you are reading this document online, you should first clone this repository:
git clone --recursive https://salsa.debian.org/raspi-team/image-specs.git cd image-specs
For this you will first need to install the following packages on a Debian Bullseye (11) or higher system:
- fakemachine (optional, only available on amd64)
- vmdb2 (>= 0.17)
To install these (as root):
apt install -y vmdb2 dosfstools qemu-utils qemu-user-static debootstrap binfmt-support time kpartx bmap-tools python3 apt install -y fakemachine
If debootstrap still fails with exec format error, try
dpkg-reconfigure qemu-user-static. This calls
/var/lib/dpkg/info/qemu-user-static.postinst which uses binfmt-support
to register the executable format with /usr/bin/qemu-$fmt-static
This repository includes a master YAML recipe (which is basically a configuration file) for all of the generated images, diverting as little as possible in a parametrized way. The master recipe is raspi_master.yaml.
A Makefile is supplied to drive the build of the recipes into images.
fakemachine is installed, it can be run as an unprivileged user.
Otherwise, because some steps of building the image require root privileges,
you'll need to execute
make as root.
The argument to
make is constructed as follows:
Whereby <model> is one of
4, <release> is either
bookworm; and <result-type> is
1 should be used for the Raspberry Pi 0, 0w and 1, models A and
2 for the Raspberry Pi 2 models A and B. Model
3 for all
models of the Raspberry Pi 3 and model
4 for all models of the
Raspberry Pi 4.
So if you want to build the default image for a Raspberry Pi 3B+ with
Bullseye, you can just issue:
This will first create a
raspi_3_bullseye.yaml file and then use that
yaml recipe to build the image with
You can also edit the
yaml file to customize the built image. If you
want to start from the platform-specific recipe, you can issue:
Copy the generated file to a name descriptive enough for you (say,
my_raspi_bullseye.yaml). Once you have edited the recipe for your
specific needs, you can generate the image by issuing the following (as
vmdb2 --rootfs-tarball=my_raspi_bullseye.tar.gz --output \ my_raspi_bullseye.img my_raspi_bullseye.yaml --log my_raspi_bullseye.log
This is, just follow what is done by the
_build_img target of the
Installing the image onto the Raspberry Pi
Plug an SD card which you would like to entirely overwrite into your SD card reader.
Assuming your SD card reader provides the device
(Beware If you choose the wrong device, you might overwrite
important parts of your system. Double check it's the correct
device!), copy the image onto the SD card:
bmaptool copy raspi_3_bullseye.img.xz /dev/mmcblk0
Alternatively, if you don't have
bmap-tools installed, you can use
dd with the compressed image:
xzcat raspi_3_bullseye.img | dd of=/dev/mmcblk0 bs=64k oflag=dsync status=progress
Or with the uncompressed image:
dd if=raspi_3_bullseye.img of=/dev/mmcblk0 bs=64k oflag=dsync status=progress
Then, plug the SD card into the Raspberry Pi, and power it up.
The image uses the hostname
rpi4 depending on the
target build. The provided image will allow you to log in with the
root account with no password set, but only logging in at the
physical console (be it serial or by USB keyboard and HDMI monitor).