summaryrefslogtreecommitdiffstats
path: root/modules.d/90livenet/fetch-liveupdate.sh
diff options
context:
space:
mode:
Diffstat (limited to 'modules.d/90livenet/fetch-liveupdate.sh')
-rwxr-xr-xmodules.d/90livenet/fetch-liveupdate.sh31
1 files changed, 31 insertions, 0 deletions
diff --git a/modules.d/90livenet/fetch-liveupdate.sh b/modules.d/90livenet/fetch-liveupdate.sh
new file mode 100755
index 0000000..3ff2a9c
--- /dev/null
+++ b/modules.d/90livenet/fetch-liveupdate.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+# fetch-liveupdate - fetch an update image for dmsquash-live media.
+# this gets called by the "initqueue/online" hook for each network interface
+# that comes online.
+
+# no updates requested? we're not needed.
+[ -e /tmp/liveupdates.info ] || return 0
+
+command -v getarg > /dev/null || . /lib/dracut-lib.sh
+command -v fetch_url > /dev/null || . /lib/url-lib.sh
+command -v unpack_img > /dev/null || . /lib/img-lib.sh
+
+read -r url < /tmp/liveupdates.info
+
+info "fetching live updates from $url"
+
+if ! fetch_url "$url" /tmp/updates.img; then
+ warn "failed to fetch update image!"
+ warn "url: $url"
+ return 1
+fi
+
+if ! unpack_img /tmp/updates.img /updates.tmp.$$; then
+ warn "failed to unpack update image!"
+ warn "url: $url"
+ return 1
+fi
+
+copytree /updates.tmp.$$ /updates
+
+mv /tmp/liveupdates.info /tmp/liveupdates.done