aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRajiv Ranganath2019-07-02 02:20:19 +0000
committerStefano Stabellini2019-08-01 14:57:24 -0700
commit83334cb46f749091c66fa426b6e6c0b758ac208a (patch)
tree217316cda01f1baaf27ef5805ae56d0f7eb90628
parent58abb0fde4e80227af85ecfb8a284d7d1bdf2e96 (diff)
Import a script to generate SD images.
Signed-off-by: Rajiv Ranganath <rajiv.ranganath@atihita.com>
-rw-r--r--Dockerfile.image29
-rw-r--r--README.md2
-rwxr-xr-xdisk_image107
3 files changed, 125 insertions, 13 deletions
diff --git a/Dockerfile.image b/Dockerfile.image
index 03f11ed..489275b 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
@@ -19,8 +19,13 @@ RUN \
apk add \
bash \
coreutils \
+ device-mapper \
dtc \
+ e2fsprogs \
file \
+ multipath-tools \
+ sgdisk \
+ util-linux \
vim && \
\
# add uboot-tools from community/edge repo
@@ -36,9 +41,9 @@ RUN \
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/README.md b/README.md
index 4fa45e7..becc052 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@ $ docker build --force-rm --file Dockerfile.image -t imagebuilder .
## `/imagebuilder_run`
```
-$ docker run --rm -ti -v /tmp:/tmp imagebuilder /imagebuilder_run
+$ docker run --rm --privileged=true -ti -v /tmp:/tmp -v /dev:/dev imagebuilder /imagebuilder_run
```
The generated files are in `/tmp/output`
diff --git a/disk_image b/disk_image
new file mode 100755
index 0000000..3cb0394
--- /dev/null
+++ b/disk_image
@@ -0,0 +1,107 @@
+#!/bin/sh
+
+# This helps to see what is going on
+set -e -x
+
+# Used to maintain intermediary state. (Not currently used)
+DESTDIR="$(mktemp -d /tmp/imagebuilder-zynqmp.XXXXXX)"
+
+OUTDIR="/tmp/img"
+mkdir ${OUTDIR}
+
+IMG="${OUTDIR}/zynqmp.img"
+
+# NOTE: Increase vos_a to 256 to accomodate rootfs
+# 528 MiB (256 + 256 + 16)
+truncate $IMG -s 528M
+
+# create GPT partition table
+sgdisk -og $IMG
+
+# _sector_first_start needs to be aligned to 2048
+_sector_first_start=2048
+
+# _sector_first_end is obtained by running
+# ```
+# sgdisk -n 1:2048:+256M -c 1:"Linux" -t 1:8300 /tmp/img/zynqmp.img
+# ```
+_sector_first_end=526335
+
+# create linux partition
+sgdisk -n 1:$_sector_first_start:$_sector_first_end -c 1:"Linux1" -t 1:8300 $IMG
+
+# _sector_second_start is obtained by running
+# ```
+# sgdisk -F /tmp/img/zynqmp.img
+# ```
+_sector_second_start=526336
+
+# _sector_second_end is obtained by running
+# ```
+# sgdisk -n 2:526336:+256M -c 2:"Linux2" -t 2:8300 /tmp/img/zynqmp.img
+# ```
+_sector_second_end=1050623
+sgdisk -n 2:$_sector_second_start:$_sector_second_end -c 2:"Linux2" -t 2:8300 $IMG
+
+# find the first available loop device
+_loop_dev=$(losetup -f)
+
+# attach loopback device to $IMG
+losetup $_loop_dev $IMG
+
+_disksize=$(blockdev --getsize $_loop_dev)
+
+dmsetup create diskimage --table "0 $_disksize linear $_loop_dev 0"
+
+# ensure that /dev/mapper/diskimage exists
+while [ ! -b /dev/mapper/diskimage ]
+do
+ sleep 2
+done
+
+kpartx -a /dev/mapper/diskimage
+
+# ensure that /dev/mapper/{diskimage1,diskimage2} exists
+while [ ! -b /dev/mapper/diskimage1 ] || [ ! -b /dev/mapper/diskimage2 ]
+do
+ sleep 2
+done
+
+# format vos_a partition
+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
+
+kpartx -d /dev/mapper/diskimage
+dmsetup remove diskimage
+losetup -d $_loop_dev