@@ -19,6 +19,42 @@ cleanup() {
1919}
2020trap cleanup EXIT
2121
22+ # functions from system/cuos/utils.sh
23+ image_url () {
24+ local image
25+ image=" $( jq -r \
26+ --arg prefix " ${1:- } " '
27+ (
28+ if (.[$prefix + "_image"] | (type == "string" and . != "" and
29+ ((startswith("/")) or (contains(".") | not)))) then
30+ .update_registry + .[$prefix + "_image"]
31+ else
32+ .[$prefix + "_image"]
33+ end
34+ ) + (
35+ if .[$prefix + "_image_version"] and .[$prefix + "_image_version"] != ""then
36+ ":" + .[$prefix + "_image_version"]
37+ else
38+ ""
39+ end
40+ )
41+ ' " ${CONFIG_PATH} " ) "
42+ if [[ -z " ${image} " ]]; then return 1; fi
43+ echo " ${image} "
44+ }
45+
46+ image_version () {
47+ local image=" ${1:- " " } "
48+ # remove registry name including :[port]
49+ image=" ${image##*/ } "
50+ if [[ " ${image} " != * :* ]]; then
51+ echo " latest"
52+ return
53+ fi
54+ local version=" ${image##*: } "
55+ echo " ${version:- " latest" } "
56+ }
57+
2258IMAGE=" /output/image.img"
2359IMAGE_QCOW=" /output/image.qcow2"
2460# SIZE_MB=2048
@@ -37,22 +73,41 @@ if [[ ! -f "${CONFIG_PATH}" ]]; then
3773 echo " Config file not found: ${CONFIG_PATH} "
3874 exit 1
3975fi
40- UPDATE_REGISTRY=" $( jq -r ' .update_registry' " ${CONFIG_PATH} " ) "
41- OS_IMAGE=" $( jq -r ' .os_image' " ${CONFIG_PATH} " ) "
42- OS_VERSION=" $( jq -r ' .os_image_version' " ${CONFIG_PATH} " ) "
43- OS_DIGEST=" $( jq -r ' .os_image_digest' " ${CONFIG_PATH} " ) "
76+ export OS_ARCH=" ${OS_ARCH:- " $( arch) " } "
77+
78+ OS_IMAGE=" $( image_url " ${OS_ARCH} " || image_url " os" ) " || \
79+ action_on_failure " cuos:updater:os_image_not_defined" " OS image not defined"
80+ OS_DIGEST=" $( jq -r --arg arch " ${OS_ARCH} " ' .[$arch+"_image_digest"] // .os_image_digest // empty' " ${CONFIG_PATH} " ) "
81+
82+
83+ SIZE_MB=" $( jq --arg size_mb " ${SIZE_MB} " -r ' .image_size_mb // $size_mb' " ${CONFIG_PATH} " ) "
4484
4585# Create empty image
4686echo " Create empty image:"
4787dd if=/dev/zero of=" ${IMAGE} " bs=1M count=" ${SIZE_MB} "
4888
49- # Partition the image
50- parted " ${IMAGE} " --script mklabel gpt \
51- mkpart bios_boot 1MiB 3MiB \
52- set 1 bios_grub on \
53- mkpart ESP fat32 3MiB 256MiB \
54- set 2 boot on \
55- mkpart primary btrfs 256MiB 100%
89+ if [[ " ${TARGET} " == " rpi" ]]; then
90+ parted " ${IMAGE} " --script \
91+ mklabel msdos \
92+ mkpart primary fat32 1MiB 256MiB \
93+ mkpart primary btrfs 256MiB 100% \
94+ set 1 boot on
95+
96+ TARGET_BOOT_PARTITION_NUM=1
97+ TARGET_ROOT_PARTITION_NUM=2
98+ else
99+ # Partition the image
100+ parted " ${IMAGE} " --script \
101+ mklabel gpt \
102+ mkpart bios_boot 1MiB 3MiB \
103+ set 1 bios_grub on \
104+ mkpart ESP fat32 3MiB 256MiB \
105+ set 2 boot on \
106+ mkpart primary btrfs 256MiB 100%
107+
108+ TARGET_BOOT_PARTITION_NUM=2
109+ TARGET_ROOT_PARTITION_NUM=3
110+ fi
56111
57112# Setup loop device
58113LOOPDEV=" $( losetup --find --show $IMAGE ) "
@@ -63,9 +118,9 @@ kpartx -av "${LOOPDEV}"
63118sleep 1
64119
65120export TARGET_DEVICE=" ${LOOPDEV} "
66- TARGET_BOOT_PARTITION=" /dev/mapper/$( basename " ${LOOPDEV} " ) p2 "
121+ TARGET_BOOT_PARTITION=" /dev/mapper/$( basename " ${LOOPDEV} " ) p ${TARGET_BOOT_PARTITION_NUM} "
67122export TARGET_BOOT_PARTITION
68- TARGET_ROOT_PARTITION=" /dev/mapper/$( basename " ${LOOPDEV} " ) p3 "
123+ TARGET_ROOT_PARTITION=" /dev/mapper/$( basename " ${LOOPDEV} " ) p ${TARGET_ROOT_PARTITION_NUM} "
69124export TARGET_ROOT_PARTITION
70125
71126# Format partitions
@@ -86,10 +141,10 @@ mkdir -p /mnt/root/@data/log
86141umount /mnt/root
87142
88143
89- INSTALLGRUB=true INSTALLIMAGE=true \
90- /usr/local/updater/updater.sh \
144+ export INSTALLIMAGE=true
145+ /usr/local/updater/updater.sh \
91146 " ${PARTITION} " \
92- " ${UPDATE_REGISTRY}${ OS_IMAGE} : ${OS_VERSION }" \
147+ " ${OS_IMAGE} " \
93148 " ${OS_DIGEST} "
94149
95150EXITCODE=" $? "
@@ -115,7 +170,7 @@ echo "Image created at ${IMAGE}"
115170# RAW Universal (can be converted to others) Simple, uncompressed, large file size
116171# OVA/OVF VMware, VirtualBox, Proxmox (via import) Bundle of disk + metadata, easy to distribute
117172
118- qemu-img convert -f raw -O qcow2 " ${IMAGE} " " ${IMAGE_QCOW} "
173+ # qemu-img convert -f raw -O qcow2 "${IMAGE}" "${IMAGE_QCOW}"
119174
120175# qemu-img convert -f raw -O vmdk image.img linux.vmdk
121176# qemu-img convert -f raw -O vhdx image.img linux.vhdx
0 commit comments