Skip to content

Commit 7214ba6

Browse files
committed
doc: Cross-architecture builds do work
perform_update.sh pulls with --platform and unpacks the export into the BTRFS subvolume; nothing from the target rootfs is executed, so the build host's architecture does not matter. Only the LXC path runs a script inside the container and needs emulation. Signed-off-by: Simon Walz <contact@simonwalz.de>
1 parent 8e70326 commit 7214ba6

1 file changed

Lines changed: 7 additions & 2 deletions

File tree

‎docs/common/building-images.md‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,13 @@ Which platforms exist and how well each is supported is in
4040
[Platform support](./platform-support.md). Two constraints that affect what you
4141
can build:
4242

43-
- **Cross-architecture builds are not supported.** Build ARM images on an ARM
44-
machine.
43+
- **Cross-architecture builds work.** The OS image is pulled with `--platform`,
44+
then `docker export`ed and unpacked into the BTRFS subvolume
45+
(`updater/perform_update.sh`). Nothing from the target rootfs is executed, so
46+
the build host's architecture does not matter. The LXC target is the
47+
exception: it runs `first-run.sh` inside the container
48+
(`image-factory/create_image.sh`), which needs binfmt/QEMU emulation for a
49+
foreign architecture.
4550
- **The OS image is chosen per platform.** A configuration can carry
4651
`os_image` plus `<platform>_image` variants — `rpi-arm64_image`,
4752
`lxc_image`, and so on — each with its own `_version` and `_digest`. The

0 commit comments

Comments
 (0)