penguin/monok8s

k8s image for Mono Gateway Dev Kit

commit 8acf025a9dfc050ad2e1ed73227798703914e71a1df566f2ae3184a29ebe5746

author斟酌 鵬兄 <tgckpg@gmail.com>
date2026-03-25T21:10:35Z
subjectRemove unused /var/lib/registry data
commit 8acf025a9dfc050ad2e1ed73227798703914e71a1df566f2ae3184a29ebe5746
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date:   2026-03-25T21:10:35Z

    Remove unused /var/lib/registry data
---
 alpine/build-rootfs.sh                          | 24 +++++++++++-------------
 alpine/preload-k8s-images.sh                    |  4 ++--
 alpine/rootfs-extra/etc/containers/storage.conf |  9 +++++++++
 alpine/rootfs-extra/etc/fstab                   |  1 +
 docs/partitions.md                              | 17 +++++++++++++++++
 5 files changed, 40 insertions(+), 15 deletions(-)

diff --git a/alpine/build-rootfs.sh b/alpine/build-rootfs.sh
index 9d4990f..da9c1f8 100755
--- a/alpine/build-rootfs.sh
+++ b/alpine/build-rootfs.sh
@@ -4,20 +4,11 @@ set -euo pipefail
 
 /preload-k8s-images.sh || exit 1
 
-REGISTRY_DATA_DIR="${KUBE_IMG_CACHE}/registry-data/${ARCH}/${KUBE_VERSION}"
-
-mkdir -p "${ROOTFS}/var/lib/registry"
-
-echo "Copying registry data into rootfs..."
-cp -a "${REGISTRY_DATA_DIR}/." "${ROOTFS}/var/lib/registry/"
-
 mkdir -p "$ROOTFS/var/cache/apk"
-mkdir -p "$ROOTFS/var/cache/k8s-images"
 mkdir -p "$ROOTFS/opt/monok8s/config"
 mkdir -p "$ROOTFS/build"
 
 mount --bind /var/cache/apk "$ROOTFS/var/cache/apk"
-mount --bind /var/cache/k8s-images "$ROOTFS/var/cache/k8s-images"
 mount --bind /dev  "$ROOTFS/dev"
 mount --bind /proc "$ROOTFS/proc"
 mount --bind /sys  "$ROOTFS/sys"
@@ -42,7 +33,6 @@ chroot "$ROOTFS" /bin/bash /configure-system.sh || exit 1
 rm "$ROOTFS/configure-system.sh"
 
 umount "$ROOTFS/var/cache/apk"
-umount "$ROOTFS/var/cache/k8s-images"
 umount "$ROOTFS/dev"
 umount "$ROOTFS/proc"
 umount "$ROOTFS/sys"
@@ -60,8 +50,8 @@ dd if=/dev/zero of="$IMG" bs=1 count=0 seek=$SIZE
 
 sgdisk -o "$IMG" \
   -n 1:2048:+64M  -t 1:0700 -c 1:config \
-  -n 2:0:+3G      -t 2:8300 -c 2:rootfsA \
-  -n 3:0:+3G      -t 3:8300 -c 3:rootfsB \
+  -n 2:0:+2G      -t 2:8300 -c 2:rootfsA \
+  -n 3:0:+2G      -t 3:8300 -c 3:rootfsB \
   -n 4:0:0        -t 4:8300 -c 4:data
 
 losetup -D
@@ -75,11 +65,18 @@ mkfs.ext4 -F "${TMP_LOOP}p2"
 mkfs.ext4 -F "${TMP_LOOP}p3"
 mkfs.ext4 -F "${TMP_LOOP}p4"
 
-mkdir -p /mnt/img-root
+mkdir -p /mnt/img-root /mnt/data
 
 mount "${TMP_LOOP}p2" /mnt/img-root
+mount "${TMP_LOOP}p4" /mnt/data
+
+# Put the real /var onto the data partition
+cp -a "$ROOTFS/var" /mnt/data/
 
+# Copy rootfs to root partition, but exclude /var
 cp -a "$ROOTFS"/. /mnt/img-root/
+rm -rf /mnt/img-root/var
+mkdir -p /mnt/img-root/var
 
 mkdir -p /mnt/img-root/boot
 cp /build/Image.gz /mnt/img-root/boot/Image.gz
@@ -88,6 +85,7 @@ cp /build/${DEVICE_TREE_TARGET}.dtb /mnt/img-root/boot/${DEVICE_TREE_TARGET}.dtb
 
 sync
 umount /mnt/img-root
+umount /mnt/data
 
 losetup -d "$LOOP"
 
diff --git a/alpine/preload-k8s-images.sh b/alpine/preload-k8s-images.sh
index a1aa0f8..e209268 100755
--- a/alpine/preload-k8s-images.sh
+++ b/alpine/preload-k8s-images.sh
@@ -22,7 +22,7 @@ FUSE_OVERLAYFS="${FUSE_OVERLAYFS:-/usr/bin/fuse-overlayfs}"
 ARCHIVE_DIR="${KUBE_IMG_CACHE}/archives/${ARCH}/${KUBE_VERSION}"
 
 # Seed directly into the target rootfs image store.
-TARGET_GRAPHROOT="${ROOTFS}/var/lib/containers/storage"
+TARGET_GRAPHROOT="${ROOTFS}/usr/lib/monok8s/imagestore"
 
 # Build-host temporary runtime state for containers/storage.
 TMPDIR="$(mktemp -d)"
@@ -117,4 +117,4 @@ done
 echo
 echo "Done."
 echo "Archives:       ${ARCHIVE_DIR}"
-echo "CRI-O storage:  ${TARGET_GRAPHROOT}"
\ No newline at end of file
+echo "CRI-O storage:  ${TARGET_GRAPHROOT}"
diff --git a/alpine/rootfs-extra/etc/containers/storage.conf b/alpine/rootfs-extra/etc/containers/storage.conf
new file mode 100644
index 0000000..aae2d5e
--- /dev/null
+++ b/alpine/rootfs-extra/etc/containers/storage.conf
@@ -0,0 +1,9 @@
+[storage]
+driver = "overlay"
+runroot = "/run/containers/storage"
+graphroot = "/var/lib/containers/storage"
+
+[storage.options]
+additionalimagestores = [
+  "/usr/lib/monok8s/imagestore"
+]
diff --git a/alpine/rootfs-extra/etc/fstab b/alpine/rootfs-extra/etc/fstab
index 0a60008..f590c2a 100644
--- a/alpine/rootfs-extra/etc/fstab
+++ b/alpine/rootfs-extra/etc/fstab
@@ -1,2 +1,3 @@
 PARTLABEL=config               /opt/monok8s/config   vfat    defaults,noatime               0      0
 PARTLABEL=data                 /data                 ext4    defaults,noatime               0      21
+/data/var                      /var                  none    rbind,noatime                  0      0
diff --git a/docs/partitions.md b/docs/partitions.md
new file mode 100644
index 0000000..b2bc2fe
--- /dev/null
+++ b/docs/partitions.md
@@ -0,0 +1,17 @@
+## config
+The first partition (vfat).
+```
+/opt/monok8s/config        # Config for starting up the cluster, flags, upgrade state, node identity
+```
+
+## Rootfs A/B (readonly)
+OS partition for A/B deployment
+
+
+## data
+```
+/data/
+├── var/                   # mounted to /var
+├── var/lib/registry       # overlay to upperdir for /var/lib/registry
+└── etc-upper/             # optional split if you want control
+```