Hi all,
I’m trying to generate a PYNQ image v3.1 for the Pynq-Z1 using Docker. In the future I’ll target a different custom board.
I followed this tutorial: https://pynq.readthedocs.io/en/latest/pynq_sd_card.html
Host setup
- Host: WSL Ubuntu 22.04 LTS
- Tools installed: Vitis, Vivado, Petalinux 2024.1
Docker: build and run
Repository and build:
git clone --recursive https://github.com/Xilinx/PYNQ.git PYNQ
cd PYNQ/sdbuild
docker build \
--build-arg USERNAME=$(whoami) \
--build-arg USER_UID=$(id -u) \
--build-arg USER_GID=$(id -g) \
-t pynqdock:latest .
Run container:
docker run --init --rm -it \
-v /tools/Xilinx:/tools/Xilinx \
-v /home/xilinx/petalinux_projects:/home/xilinx/petalinux_projects \
--name pynq-sdbuild-env \
--privileged pynqdock:latest /bin/bash
Build output (hardware/XSA)
INFO: [Project 1-1941] Successfully created Hardware Platform: /home/xilinx/petalinux_projects/PYNQ/sdbuild/build/Pynq-Z1/petalinux_bsp/hardware_project/pynqz1.xsa
INFO: [Hsi 55-2053] elapsed time for repository (/tools/Xilinx/Vivado/2024.1/data/embeddedsw) loading 0 seconds
INFO: [Vivado 12-12082] Found metadata file: xsa.json
INFO: [Vivado 12-6078] Validating platform properties...
INFO: [Vivado 12-6079] Validating unified platform...
INFO: [Vivado 12-6073] Validating 'pre_synth' platform state...
INFO: [Vivado 12-6077] Validating platform files...
INFO: [Vivado 12-6066] Finished running validate_hw_platform for file: './pynqz1.xsa'
INFO: [Common 17-206] Exiting Vivado at Mon Aug 11 09:59:05 2025...
Built pynqz1 successfully!
Build output (boot image)
[INFO] Successfully built bootloader
cd /home/xilinx/petalinux_projects/PYNQ/sdbuild/output/boot/Pynq-Z1 && petalinux-package --boot --fpga /home/xilinx/petalinux_projects/PYNQ/sdbuild/../boards/Pynq-Z1/base/base.bit --u-boot -p /home/xilinx/petalinux_projects/PYNQ/sdbuild/build/Pynq-Z1/petalinux_project --force
[NOTE] Argument: "--boot" has been deprecated. It is recommended to start using new python command line Argument.
[NOTE] Use: petalinux-package boot [OPTIONS]
[INFO] File in BOOT BIN: "/home/xilinx/petalinux_projects/PYNQ/sdbuild/build/Pynq-Z1/petalinux_project/images/linux/zynq_fsbl.elf"
[INFO] File in BOOT BIN: "/home/xilinx/petalinux_projects/PYNQ/sdbuild/build/Pynq-Z1/petalinux_project/images/linux/u-boot.elf"
[INFO] File in BOOT BIN: "/home/xilinx/petalinux_projects/PYNQ/sdbuild/build/Pynq-Z1/petalinux_project/images/linux/system.dtb"
[INFO] Generating zynq binary package BOOT.BIN...
[INFO]
****** Bootgen v2024.1
**** Build date : Apr 29 2024-12:18:25
** Copyright 1986-2022 Xilinx, Inc. All Rights Reserved.
** Copyright 2022-2024 Advanced Micro Devices, Inc. All Rights Reserved.
[INFO] : Bootimage generated successfully
Failure during RootFS generation
At some point (I believe during RootFS generation), it fails:
cp -f /home/xilinx/petalinux_projects/PYNQ/sdbuild/build/Pynq-Z1/petalinux_project/images/linux/BOOT.BIN /home/xilinx/petalinux_projects/PYNQ/sdbuild/output/boot/Pynq-Z1
PYNQ_BOARDNAME=Pynq-Z1 FPGA_MANAGER=1 petalinux-build -c u-boot-xlnx-scr -p /home/xilinx/petalinux_projects/PYNQ/sdbuild/build/Pynq-Z1/petalinux_project
[INFO] Building u-boot-xlnx-scr
...
NOTE: Tasks Summary: Attempted 789 tasks of which 771 didn't need to be rerun and all succeeded.
[INFO] Failed to copy built images to tftp dir: /tftpboot
[INFO] Successfully built u-boot-xlnx-scr
cp -f /home/xilinx/petalinux_projects/PYNQ/sdbuild/build/Pynq-Z1/petalinux_project/images/linux/boot.scr /home/xilinx/petalinux_projects/PYNQ/sdbuild/output/boot/Pynq-Z1/boot.scr
mkdir -p /home/xilinx/petalinux_projects/PYNQ/sdbuild/ccache
sudo rm -rf /home/xilinx/petalinux_projects/PYNQ/sdbuild/build/jammy.arm
mkdir /home/xilinx/petalinux_projects/PYNQ/sdbuild/build/jammy.arm
QEMU_EXE=/opt/qemu/bin/qemu-arm-static PYNQ_BOARD=Unknown ARCH=arm PYNQ_SDIST=/home/xilinx/petalinux_projects/PYNQ/sdbuild/prebuilt/pynq_sdist.tar.gz PYNQ_ROOTFS=/home/xilinx/petalinux_projects/PYNQ/sdbuild/prebuilt/pynq_rootfs.arm.tar.gz /home/xilinx/petalinux_projects/PYNQ/sdbuild/scripts/create_rootfs.sh /home/xilinx/petalinux_projects/PYNQ/sdbuild/build/jammy.arm /home/xilinx/petalinux_projects/PYNQ/sdbuild/ubuntu/jammy/arm
+ set -e
+ target=/home/xilinx/petalinux_projects/PYNQ/sdbuild/build/jammy.arm
+ SRCDIR=/home/xilinx/petalinux_projects/PYNQ/sdbuild/ubuntu/jammy/arm
+ ARCH=
+ fss='proc dev sys'
+ echo /opt/qemu/bin/qemu-arm-static
/opt/qemu/bin/qemu-arm-static
+ multistrap_conf=/home/xilinx/petalinux_projects/PYNQ/sdbuild/ubuntu/jammy/arm/multistrap.config
+ multistrap_opt=
+ '[' -n '' ']'
+ sudo -E multistrap -f /home/xilinx/petalinux_projects/PYNQ/sdbuild/ubuntu/jammy/arm/multistrap.config -d /home/xilinx/petalinux_projects/PYNQ/sdbuild/build/jammy.arm
multistrap 2.2.11 using /home/xilinx/petalinux_projects/PYNQ/sdbuild/ubuntu/jammy/arm/multistrap.config
multistrap 2.2.11 using /home/xilinx/petalinux_projects/PYNQ/sdbuild/ubuntu/jammy/arm/multistrap.config
Using foreign architecture: armhf
multistrap building armhf multistrap on 'amd64'
I: Setting /home/xilinx/petalinux_projects/PYNQ/sdbuild/build/jammy.arm/lib64 -> /home/xilinx/petalinux_projects/PYNQ/sdbuild/build/jammy.arm/lib symbolic link.
I: Downloading ubuntu-keyring
E: Can't find a source to download version '2021.03.26' of 'ubuntu-keyring:amd64'
multistrap: Unable to download keyring package: '/home/xilinx/petalinux_projects/PYNQ/sdbuild/build/jammy.arm/'
make: *** [Makefile:431: /home/xilinx/petalinux_projects/PYNQ/sdbuild/build/jammy.arm.stage1.tar.gz] Error 1
Any ideas on how to fix this multistrap/ubuntu-keyring issue for Jammy in this PYNQ v3.1 Docker flow? Thanks!