diff options
-rw-r--r-- | Dockerfile.image | 34 | ||||
-rwxr-xr-x | docker-extras/disk_image (renamed from disk_image) | 57 | ||||
-rw-r--r-- | docker-extras/imagebuilder_sd | 9 | ||||
-rw-r--r-- | docker-extras/imagebuilder_tftp | 8 | ||||
-rw-r--r-- | docker-extras/uboot-script-gen (renamed from docker-extras/imagebuilder_run) | 23 |
5 files changed, 80 insertions, 51 deletions
diff --git a/Dockerfile.image b/Dockerfile.image index 489275b..32b7f61 100644 --- a/Dockerfile.image +++ b/Dockerfile.image @@ -1,9 +1,9 @@ -# FROM zynqmp-dt-config-package AS zynqmp-dt-config-package -# FROM zynqmp-xen-package AS zynqmp-xen-package -# FROM zynqmp-dom0-kernel-package AS zynqmp-dom0-kernel-package -# FROM zynqmp-dom0-ramdisk-package AS zynqmp-dom0-ramdisk-package -# FROM zynqmp-dom1-package AS zynqmp-dom1-package -# FROM zynqmp-dom2-package AS zynqmp-dom2-package +FROM zynqmp-dt-config-package AS zynqmp-dt-config-package +FROM zynqmp-xen-package AS zynqmp-xen-package +FROM zynqmp-dom0-kernel-package AS zynqmp-dom0-kernel-package +FROM zynqmp-dom0-ramdisk-package AS zynqmp-dom0-ramdisk-package +FROM zynqmp-dom1-package AS zynqmp-dom1-package +FROM zynqmp-dom2-package AS zynqmp-dom2-package FROM alpine:3.9 @@ -33,17 +33,23 @@ RUN \ uboot-tools && \ \ # Copy run file - cp /tmp/docker-build/imagebuilder_run /imagebuilder_run && \ - chmod 755 /imagebuilder_run && \ + cp /tmp/docker-build/imagebuilder_tftp /imagebuilder_tftp && \ + cp /tmp/docker-build/imagebuilder_sd /imagebuilder_sd && \ + cp /tmp/docker-build/uboot-script-gen /uboot-script-gen && \ + cp /tmp/docker-build/disk_image /disk_image && \ + chmod 755 /imagebuilder_tftp && \ + chmod 755 /imagebuilder_sd && \ + chmod 755 /uboot-script-gen && \ + chmod 755 /disk_image && \ \ # cleanup cd /root && \ rm -rf /tmp/* && \ rm -f /var/cache/apk/* -# COPY --from=zynqmp-dom0-kernel-package /home/builder/output-zynqmp-dom0-kernel/ /home/builder/output -# COPY --from=zynqmp-dom0-ramdisk-package /home/builder/output-zynqmp-dom0-ramdisk/ /home/builder/output -# COPY --from=zynqmp-dt-config-package /home/builder/output-zynqmp-dt-config/ /home/builder/output/ -# COPY --from=zynqmp-xen-package /home/builder/output-zynqmp-xen/ /home/builder/output -# COPY --from=zynqmp-dom1-package /home/builder/output-zynqmp-dom1/ /home/builder/output/zynqmp-dom1/ -# COPY --from=zynqmp-dom2-package /home/builder/output-zynqmp-dom2/ /home/builder/output/zynqmp-dom2/ +COPY --from=zynqmp-dom0-kernel-package /home/builder/output-zynqmp-dom0-kernel/ /home/builder/output +COPY --from=zynqmp-dom0-ramdisk-package /home/builder/output-zynqmp-dom0-ramdisk/ /home/builder/output +COPY --from=zynqmp-dt-config-package /home/builder/output-zynqmp-dt-config/ /home/builder/output/ +COPY --from=zynqmp-xen-package /home/builder/output-zynqmp-xen/ /home/builder/output +COPY --from=zynqmp-dom1-package /home/builder/output-zynqmp-dom1/ /home/builder/output/zynqmp-dom1/ +COPY --from=zynqmp-dom2-package /home/builder/output-zynqmp-dom2/ /home/builder/output/zynqmp-dom2/ diff --git a/disk_image b/docker-extras/disk_image index 3cb0394..2d70ad3 100755 --- a/disk_image +++ b/docker-extras/disk_image @@ -5,7 +5,7 @@ set -e -x # Used to maintain intermediary state. (Not currently used) DESTDIR="$(mktemp -d /tmp/imagebuilder-zynqmp.XXXXXX)" - +UBOOT_OUT="/tmp/output" OUTDIR="/tmp/img" mkdir ${OUTDIR} @@ -73,34 +73,33 @@ mkfs.ext4 -L vos_a -F /dev/mapper/diskimage1 # format vos_b partition mkfs.ext4 -L vos_b -F /dev/mapper/diskimage2 -# -# ** TODO ** -# -# # create mount point and mount vos_a -# mkdir -p ${DESTDIR}/part/vos_a -# mount -t ext4 /dev/mapper/diskimage2 $DESTDIR/part/vos_a -# -# # Extract rootfs cpio archive into `.../part/vos_a` -# $(cd ${DESTDIR}/part/vos_a; cpio -idm < ${DESTDIR}/output-dom0-builder/rootfs.cpio) -# -# # copy over files needed in `/boot` -# mkdir ${DESTDIR}/part/vos_a/boot -# # linux -# cp ${DESTDIR}/output-dom0-builder/initramfs-${_fullkver} ${DESTDIR}/part/vos_a/boot -# cp ${DESTDIR}/output-dom0-builder/modloop-${_fullkver} ${DESTDIR}/part/vos_a/boot -# cp ${DESTDIR}/output-dom0-builder/vmlinuz-${_fullkver} ${DESTDIR}/part/vos_a/boot -# # xen -# cp ${DESTDIR}/viryaos-xen/boot/xen-${_fullxenver} ${DESTDIR}/part/vos_a/boot -# # dtb -# cp ${DESTDIR}/viryaos.dtb ${DESTDIR}/part/vos_a/boot -# -# # unmount -# sync -# -# # This fails for some reason. It could work now because we are not using qemu-user -# # fstrim $DESTDIR/part/vos_a -# -# umount $DESTDIR/part/vos_a + +# create mount point and mount disk2 +mkdir -p ${DESTDIR}/part/disk2 +mount -t ext4 /dev/mapper/diskimage2 $DESTDIR/part/disk2 + +# Extract rootfs cpio archive into `.../part/vos_a` +cd ${DESTDIR}/part/disk2 +cat ${UBOOT_OUT}/dom0-ramdisk.cpio | gunzip | cpio -id +mv ${UBOOT_OUT}/dom0-ramdisk.cpio* /tmp + +# umount +sync +cd / +umount $DESTDIR/part/disk2 + +# create mount point and mount disk1 +mkdir -p ${DESTDIR}/part/disk1 +mount -t ext4 /dev/mapper/diskimage1 $DESTDIR/part/disk1 + +# copy over files needed +cp -r $UBOOT_OUT/* ${DESTDIR}/part/disk1/ + +# unmount +sync +# This fails for some reason. It could work now because we are not using qemu-user +# fstrim $DESTDIR/part/disk1 +umount $DESTDIR/part/disk1 kpartx -d /dev/mapper/diskimage dmsetup remove diskimage diff --git a/docker-extras/imagebuilder_sd b/docker-extras/imagebuilder_sd new file mode 100644 index 0000000..d3c98fb --- /dev/null +++ b/docker-extras/imagebuilder_sd @@ -0,0 +1,9 @@ +#!/bin/bash + +rm -rf /tmp/output +mkdir /tmp/output +cd /tmp/output +cp -r /home/builder/output/* . +export LOAD_CMD="load scsi 0:1" +bash /uboot-script-gen +bash /disk_image diff --git a/docker-extras/imagebuilder_tftp b/docker-extras/imagebuilder_tftp new file mode 100644 index 0000000..2bc12f2 --- /dev/null +++ b/docker-extras/imagebuilder_tftp @@ -0,0 +1,8 @@ +#!/bin/bash + +rm -rf /tmp/output +mkdir /tmp/output +cd /tmp/output +cp -r /home/builder/output/* . +export LOAD_CMD="tftpb" +bash /uboot-script-gen diff --git a/docker-extras/imagebuilder_run b/docker-extras/uboot-script-gen index ab0cbe4..ebb0f7a 100644 --- a/docker-extras/imagebuilder_run +++ b/docker-extras/uboot-script-gen @@ -1,5 +1,8 @@ #!/bin/bash +# LOAD_CMD="tftpb" +# LOAD_CMD="load scsi 0:1" + offset=$((2*1024*1024)) filesize=0 @@ -49,8 +52,12 @@ function device_tree_editing() echo "fdt mknod /chosen dom0" >> $UBOOT_SOURCE echo "fdt set /chosen/dom0 compatible \"xen,linux-zimage\" \"xen,multiboot-module\"" >> $UBOOT_SOURCE echo "fdt set /chosen/dom0 reg <0x0 "$dom0_kernel_addr" 0x0 "$dom0_kernel_size">" >> $UBOOT_SOURCE - echo "fdt set /chosen/dom0 bootargs \"console=hvc0 earlycon=xen earlyprintk=xen\"" >> $UBOOT_SOURCE - + if test "$LOAD_CMD" = "tftpb" + then + echo "fdt set /chosen/dom0 bootargs \"console=hvc0 earlycon=xen earlyprintk=xen\"" >> $UBOOT_SOURCE + else + echo "fdt set /chosen/dom0 bootargs \"console=hvc0 earlycon=xen earlyprintk=xen root=/dev/mmcblk0p2\"" >> $UBOOT_SOURCE + fi i=0 while test $i -lt $NUM_DOMUS do @@ -119,16 +126,17 @@ function check_compressed_file_type() check_file_type $filename "$type" } -rm -rf /tmp/output -mkdir /tmp/output -cd /tmp/output -cp -r /home/builder/output/* . . config rm -f $UBOOT_SOURCE $UBOOT_SCRIPT memaddr=$(( $MEMORY_START + $offset )) memaddr=`printf "0x%X\n" $memaddr` +if [[ $LOAD_CMD = *scsi* ]] +then + echo "scsi scan" >> $UBOOT_SOURCE +fi + check_compressed_file_type $XEN "MS-DOS executable" xen_addr=$memaddr mkimage -A arm64 -T kernel -C none -a $xen_addr -e $xen_addr -d $XEN "$XEN".uboot &> /dev/null @@ -139,7 +147,7 @@ dom0_kernel_addr=$memaddr load_file $DOM0_KERNEL dom0_kernel_size=$(( $memaddr - $dom0_kernel_addr )) -if test "$DOM0_RAMDISK" +if test "$DOM0_RAMDISK" && [[ $LOAD_CMD = "tftpb" ]] then check_compressed_file_type $DOM0_RAMDISK "cpio archive" dom0_ramdisk_addr=$memaddr @@ -191,5 +199,4 @@ memaddr=$(( $memaddr + $offset + $offset )) memaddr=`printf "0x%X\n" $memaddr` uboot_addr="$memaddr" mkimage -A arm64 -T script -C none -a $uboot_addr -e $uboot_addr -d $UBOOT_SOURCE "$UBOOT_SCRIPT" &> /dev/null -echo "Generated uboot script $UBOOT_SCRIPT, to be loaded at address $uboot_addr:" echo "$LOAD_CMD $uboot_addr $UBOOT_SCRIPT; source $uboot_addr" |