我正在尝试在 Docker 容器(运行 Ubuntu 20.04 x64)内构建自定义 NVIDIA Jetson Nano 映像(aarch64 架构)。我跳过了 NVIDIA 工具部分,因为在创建证明时我被困在第一部分。我正在使用以下命令:
apt-get update
apt-get install --no-install-recommends -q -y ca-certificates curl dialog apt-utils bzip2 python gdisk binfmt-support qemu qemu-user-static debootstrap
mkdir -p rootfs
qemu-debootstrap --arch=arm64 --variant=minbase --keyring=/usr/share/keyrings/ubuntu-archive-keyring.gpg focal rootfs
我也试过
debootstrap --arch=arm64 --foreign --variant=minbase --keyring=/usr/share/keyrings/ubuntu-archive-keyring.gpg focal rootfs
chroot rootfs qemu-aarch64-static /bin/bash -c '/debootstrap/debootstrap --second-stage'
但是在使用 GitLab CI 执行此操作时,我总是会收到以下错误。
I: Running command: chroot test /debootstrap/debootstrap --second-stage
chroot: failed to run command '/debootstrap/debootstrap': Exec format error
ERROR: Job failed: exit code 1
当我在 WSL 甚至本地 Docker 容器中本地运行它时,它可以工作。
我还尝试了 Ubuntu 18.04.4 或完全跳过“自定义 rootfs”部分。但是,无论如何我都需要仿真部分,因为 NVIDIA 工具无论如何都在执行 aarch64 二进制文件。
Installing BSP Debian packages in /builds/richardds/jetson-nano-image/build/rootfs
chroot: failed to run command 'dpkg': Exec format error
ERROR: Job failed: exit code 1
您能否推荐我如何修复它或在 GitLab-CI 环境(运行 Docker 容器)中创建自定义 aarch64 rootfs 的任何其他工作方式?
运行 Docker 守护程序的主机操作系统必须安装
binfmt-support
包并binfmt_misc
加载模块。