6 Commits

Author SHA1 Message Date
Richard Oliver
2e5d13e1b9 export-image: generate bmap file if bmaptool is available 2025-03-14 14:33:23 +00:00
Jonathan Bell
f621f9e279 Align partition start boundaries to 8M
Higher-capacity cards (particularly Raspberry Pi 128GB A2) have an 8MB
preferred erase size, which is a good indication of the flash block size.

Other large cards may also benefit.

Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
2025-03-13 15:58:40 +00:00
Stefan Becker
e071d0de36 Switch docker build to Debian Bookworm 2025-01-22 13:55:04 +00:00
Stefan Becker
fb5180d3de Dockerfile: fix ENV warning (#791)
Newer versions of docker generate the following warning

   - LegacyKeyValueFormat: "ENV key=value" should be used instead of
     legacy "ENV key value" format (line 4)
2025-01-02 13:26:42 +00:00
Serge Schneider
fc280356b1 Escape the ? expression in sed
Fixes #817, fixes #820
2025-01-02 09:27:21 +00:00
marcone
ca08900c66 README.md: Fix typo (#813) 2024-11-28 11:05:29 +00:00
6 changed files with 19 additions and 9 deletions

View File

@@ -1,7 +1,7 @@
ARG BASE_IMAGE=debian:bullseye
FROM ${BASE_IMAGE}
ENV DEBIAN_FRONTEND noninteractive
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get -y update && \
apt-get -y install --no-install-recommends \

View File

@@ -22,7 +22,7 @@ To install the required dependencies for `pi-gen` you should run:
```bash
apt-get install coreutils quilt parted qemu-user-static debootstrap zerofree zip \
dosfstools libarchive-tools libcap2-bin grep rsync xz-utils file git curl bc \
gpg pigz xxd arch-test
gpg pigz xxd arch-test bmap-tools
```
The file `depends` contains a list of tools needed. The format of this
@@ -423,7 +423,7 @@ work from a Raspberry Pi with a 64-bit capable processor (i.e. Raspberry Pi Zero
## `binfmt_misc`
Linux is able execute binaries from other architectures, meaning that it should be
Linux is able to execute binaries from other architectures, meaning that it should be
possible to make use of `pi-gen` on an x86_64 system, even though it will be running
ARM binaries. This requires support from the [`binfmt_misc`](https://en.wikipedia.org/wiki/Binfmt_misc)
kernel module.

View File

@@ -85,10 +85,10 @@ BUILD_OPTS="$(echo "${BUILD_OPTS:-}" | sed -E 's@\-c\s?([^ ]+)@-c /config@')"
# Check the arch of the machine we're running on. If it's 64-bit, use a 32-bit base image instead
case "$(uname -m)" in
x86_64|aarch64)
BASE_IMAGE=i386/debian:bullseye
BASE_IMAGE=i386/debian:bookworm
;;
*)
BASE_IMAGE=debian:bullseye
BASE_IMAGE=debian:bookworm
;;
esac
${DOCKER} build --build-arg BASE_IMAGE=${BASE_IMAGE} -t pi-gen "${DIR}"
@@ -151,7 +151,7 @@ time ${DOCKER} run \
pi-gen \
bash -e -o pipefail -c "
dpkg-reconfigure qemu-user-static &&
# binfmt_misc is sometimes not mounted with debian bullseye image
# binfmt_misc is sometimes not mounted with debian bookworm image
(mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc || true) &&
cd /pi-gen; ./build.sh ${BUILD_OPTS} &&
rsync -av work/*/build.log deploy/

View File

@@ -3,6 +3,7 @@
IMG_FILE="${STAGE_WORK_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.img"
INFO_FILE="${STAGE_WORK_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.info"
SBOM_FILE="${STAGE_WORK_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.sbom"
BMAP_FILE="${STAGE_WORK_DIR}/${IMG_FILENAME}${IMG_SUFFIX}.bmap"
on_chroot << EOF
update-initramfs -k all -c
@@ -100,6 +101,12 @@ zerofree "${ROOT_DEV}"
unmount_image "${IMG_FILE}"
if hash bmaptool 2>/dev/null; then
bmaptool create \
-o "${BMAP_FILE}" \
"${IMG_FILE}"
fi
mkdir -p "${DEPLOY_DIR}"
rm -f "${DEPLOY_DIR}/${ARCHIVE_FILENAME}${IMG_SUFFIX}.*"
@@ -128,4 +135,7 @@ esac
if [ -f "${SBOM_FILE}" ]; then
xz -c "${SBOM_FILE}" > "$DEPLOY_DIR/image_$(basename "${SBOM_FILE}").xz"
fi
if [ -f "${BMAP_FILE}" ]; then
xz -c "${BMAP_FILE}" > "$DEPLOY_DIR/image_$(basename "${BMAP_FILE}").xz"
fi
cp "$INFO_FILE" "$DEPLOY_DIR/"

View File

@@ -13,7 +13,7 @@ BOOT_SIZE="$((512 * 1024 * 1024))"
ROOT_SIZE=$(du -x --apparent-size -s "${EXPORT_ROOTFS_DIR}" --exclude var/cache/apt/archives --exclude boot/firmware --block-size=1 | cut -f 1)
# All partition sizes and starts will be aligned to this size
ALIGN="$((4 * 1024 * 1024))"
ALIGN="$((8 * 1024 * 1024))"
# Add this much space to the calculated file size. This allows for
# some overhead (since actual space usage is usually rounded up to the
# filesystem block size) and gives some free space on the resulting

View File

@@ -71,8 +71,8 @@ on_chroot << EOF
DEBIAN_FRONTEND=noninteractive dpkg-reconfigure keyboard-configuration
EOF
sed -i 's/^#?Storage=.*/Storage=volatile/' "${ROOTFS_DIR}/etc/systemd/journald.conf"
sed -i 's/^#\?Storage=.*/Storage=volatile/' "${ROOTFS_DIR}/etc/systemd/journald.conf"
if [ -e "${ROOTFS_DIR}/etc/avahi/avahi-daemon.conf" ]; then
sed -i 's/^#?publish-workstation=.*/publish-workstation=yes/' "${ROOTFS_DIR}/etc/avahi/avahi-daemon.conf"
sed -i 's/^#\?publish-workstation=.*/publish-workstation=yes/' "${ROOTFS_DIR}/etc/avahi/avahi-daemon.conf"
fi