|
| 1 | +# -- 1st stage: builder_A, run with host arch |
| 2 | +FROM debian:bookworm as builder_A |
| 3 | +ARG MODEL |
| 4 | +ARG KERNEL_FW_URL |
| 5 | +ARG KERNEL_FW_SHA256 |
| 6 | +ARG RELEASE_URL |
| 7 | +WORKDIR /root |
| 8 | +ADD env.sh tools.sh ./ |
| 9 | +COPY common/files files/ |
| 10 | +RUN mkdir steps |
| 11 | +ADD steps/init_builder_A.sh steps/ |
| 12 | +RUN sh steps/init_builder_A.sh |
| 13 | +ADD steps/download.sh steps/ |
| 14 | +RUN sh steps/download.sh "${KERNEL_FW_URL}" "${KERNEL_FW_SHA256}" |
| 15 | +RUN sh steps/download.sh "${RELEASE_URL}/rk3568-nanopi-${MODEL}.dtb" |
| 16 | +ADD steps/configure_files.sh steps/ |
| 17 | +RUN sh steps/configure_files.sh "${MODEL}" |
| 18 | +ADD steps/install_firmware.sh steps/ |
| 19 | +RUN sh steps/install_firmware.sh |
| 20 | +ADD steps/install_rootfs_1st_stage.sh steps/ |
| 21 | +RUN sh steps/install_rootfs_1st_stage.sh |
| 22 | + |
| 23 | +# -- 2nd stage: finalize rootfs, run with arm64 arch transparently emulated by qemu |
| 24 | +FROM --platform=linux/arm64/v8 scratch as rootfs_finalizer |
| 25 | +COPY --from=builder_A /root/rootfs / |
| 26 | +RUN /debootstrap/debootstrap --second-stage |
| 27 | +WORKDIR /root |
| 28 | +ADD env.sh tools.sh ./ |
| 29 | +RUN mkdir steps |
| 30 | +ADD steps/create_user.sh steps/ |
| 31 | +RUN sh steps/create_user.sh |
| 32 | +RUN rm -rf env.sh tools.sh steps # cleanup |
| 33 | +RUN rm -rf /var/cache/* /var/lib/apt/lists/* # discard the cache |
| 34 | + |
| 35 | +# -- 3rd stage: builder_B, run with host arch |
| 36 | +FROM debian:bookworm as builder_B |
| 37 | +ARG MODEL |
| 38 | +ARG PARAMS |
| 39 | +ARG RELEASE_URL |
| 40 | +COPY --from=rootfs_finalizer / /root/rootfs |
| 41 | +WORKDIR /root |
| 42 | +COPY nanopi-${MODEL}/files files/ |
| 43 | +ADD env.sh tools.sh ./ |
| 44 | +RUN mkdir steps |
| 45 | +ADD steps/init_builder_B.sh steps/ |
| 46 | +RUN sh steps/init_builder_B.sh |
| 47 | +ADD steps/download.sh steps/ |
| 48 | +RUN sh steps/download.sh "${RELEASE_URL}/idbloader-${MODEL}.img" |
| 49 | +RUN sh steps/download.sh "${RELEASE_URL}/u-boot-${MODEL}.itb" |
| 50 | +ADD steps/finalize_rootfs.sh steps/ |
| 51 | +RUN sh steps/finalize_rootfs.sh ${MODEL} ${PARAMS} |
| 52 | +COPY --from=builder_A /root/fs.uuid /root/ |
| 53 | +ADD steps/build_image.sh steps/ |
| 54 | +RUN sh steps/build_image.sh |
0 commit comments