From 4c0d3411e6799c3de9796ea38ecf20c92e4580ae Mon Sep 17 00:00:00 2001 From: Albrecht Lohofener Date: Wed, 13 Mar 2024 21:03:15 +0100 Subject: [PATCH] Change rootfs name in order to migrate the rootfs even when the OpenWrt version didn't change. --- Dockerfile | 11 ++++++----- src/install_openwrt_rootfs.sh | 11 ++++++----- src/migrate_openwrt_rootfs.sh | 7 ++++--- src/run_openwrt.sh | 3 ++- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/Dockerfile b/Dockerfile index 6617cb6..c92e431 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,8 +2,7 @@ FROM alpine:latest ARG NOVNC_VERSION="1.4.0" ARG OPENWRT_VERSION="23.05.2" -ARG S6_OVERLAY_VERSION="3.1.6.2" -ARG VERSION_ARG "0.1" +ARG VERSION_ARG="0.1" RUN apk add --no-cache \ supervisor \ @@ -17,6 +16,7 @@ RUN apk add --no-cache \ python3 \ py3-pip \ py3-virtualenv \ + uuidgen \ && mkdir -p /usr/share/novnc \ && wget https://github.com/novnc/noVNC/archive/refs/tags/v${NOVNC_VERSION}.tar.gz -O /tmp/novnc.tar.gz -q \ && tar -xf /tmp/novnc.tar.gz -C /tmp/ \ @@ -63,9 +63,10 @@ RUN mkdir /var/vm \ # Copy downloaded IPKs into the Docker image \ && cp /tmp/openwrt-rootfs/*.ipk /var/vm/packages \ && rm -rf /tmp/openwrt-rootfs \ - && rm /tmp/rootfs-${OPENWRT_VERSION}.tar.gz - -ENV OPENWRT_VERSION=${OPENWRT_VERSION} + && rm /tmp/rootfs-${OPENWRT_VERSION}.tar.gz \ + && echo "OPENWRT_VERSION=\"${OPENWRT_VERSION}\"" > /var/vm/openwrt_metadata.conf \ + && echo "OPENWRT_IMAGE_CREATE_DATETIME=\"`date`\"" >> /var/vm/openwrt_metadata.conf \ + && echo "OPENWRT_IMAGE_ID=\"`uuidgen`\"" >> /var/vm/openwrt_metadata.conf COPY supervisord.conf /etc/supervisord.conf COPY ./src /run/ diff --git a/src/install_openwrt_rootfs.sh b/src/install_openwrt_rootfs.sh index e5e0cae..30ae353 100644 --- a/src/install_openwrt_rootfs.sh +++ b/src/install_openwrt_rootfs.sh @@ -3,19 +3,20 @@ set -Eeuo pipefail trap - ERR +. /var/vm/openwrt_metadata.conf . /run/helpers.sh # Check if rootfs is in volume -FILE=/storage/rootfs-${OPENWRT_VERSION}.img +FILE=/storage/rootfs-${OPENWRT_IMAGE_ID}.img if [ -f "$FILE" ]; then info "$FILE exists. Nothing to do." else info "$FILE does not exist. Copying rootfs-${OPENWRT_VERSION}.img to storage ..." - cp /var/vm/rootfs-${OPENWRT_VERSION}.img.gz /storage/rootfs-${OPENWRT_VERSION}.img.gz - gzip -d /storage/rootfs-${OPENWRT_VERSION}.img.gz + cp /var/vm/rootfs-${OPENWRT_VERSION}.img.gz /storage/rootfs-${OPENWRT_IMAGE_ID}.img.gz + gzip -d /storage/rootfs-${OPENWRT_IMAGE_ID}.img.gz info "Inject some additional files into the image" - mount /storage/rootfs-${OPENWRT_VERSION}.img /mnt + mount /storage/rootfs-${OPENWRT_IMAGE_ID}.img /mnt # mount -o offset=$((512*262656)) /storage/disk.img /mnt # combined image ext4 partition starts at offset 262656 chmod +x /var/vm/openwrt_additional/bin/* @@ -40,5 +41,5 @@ else fi touch /storage/current_version - echo "rootfs-${OPENWRT_VERSION}.img" > /storage/current_version + echo "rootfs-${OPENWRT_IMAGE_ID}.img" > /storage/current_version fi diff --git a/src/migrate_openwrt_rootfs.sh b/src/migrate_openwrt_rootfs.sh index ff92017..d22b70f 100644 --- a/src/migrate_openwrt_rootfs.sh +++ b/src/migrate_openwrt_rootfs.sh @@ -3,15 +3,16 @@ set -Eeuo pipefail trap - ERR +. /var/vm/openwrt_metadata.conf . /run/helpers.sh -FILE=/storage/rootfs-${OPENWRT_VERSION}.img +FILE=/storage/rootfs-${OPENWRT_IMAGE_ID}.img # Migrate settings from old OpenWrt version to new one if [ -f /storage/old_version ]; then OLD_VERSION_ROOTFS=`cat /storage/old_version` - info "Migrate settings from $OLD_VERSION_ROOTFS to rootfs-${OPENWRT_VERSION}.img." + info "Migrate settings from $OLD_VERSION_ROOTFS to rootfs-${OPENWRT_IMAGE_ID}.img." mount /storage/$OLD_VERSION_ROOTFS /mnt chroot /mnt/ mkdir -p /var/lock @@ -32,5 +33,5 @@ if [ -f /storage/old_version ]; then rm /storage/old_version rm /storage/config-`basename $OLD_VERSION_ROOTFS .img`.tar.gz else - info "rootfs-${OPENWRT_VERSION}.img is up to date. Nothing to do." + info "rootfs-${OPENWRT_IMAGE_ID}.img is up to date. Nothing to do." fi diff --git a/src/run_openwrt.sh b/src/run_openwrt.sh index 99d8d75..4244eea 100755 --- a/src/run_openwrt.sh +++ b/src/run_openwrt.sh @@ -4,12 +4,13 @@ set -Eeuo pipefail trap - ERR +. /var/vm/openwrt_metadata.conf . /run/helpers.sh . /run/install_openwrt_rootfs.sh . /run/migrate_openwrt_rootfs.sh VERS=$(qemu-system-aarch64 --version | head -n 1 | cut -d '(' -f 1) -FILE=/storage/rootfs-${OPENWRT_VERSION}.img +FILE=/storage/rootfs-${OPENWRT_IMAGE_ID}.img attach_eth_if () { HOST_IF=$1