--- /dev/null
+#!/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 url < /tmp/liveupdates.info
+
+info "fetching live updates from $url"
+
+fetch_url "$url" /tmp/updates.img
+if [ $? != 0 ]; then
+ warn "failed to fetch update image!"
+ warn "url: $url"
+ return 1
+fi
+
+unpack_img /tmp/updates.img /updates.tmp.$$
+if [ $? != 0 ]; then
+ warn "failed to unpack update image!"
+ warn "url: $url"
+ return 1
+fi
+rm -rf /updates
+mv -f /updates.tmp.$$ /updates
+mv /tmp/liveupdates.info /tmp/liveupdates.done
-#!/bin/bash
+#!/bin/sh
# live net images - just like live images, but specified like:
# root=live:[url-to-backing-file]
[ -z "$root" ] && root=$(getarg root=)
. /lib/url-lib.sh
+# live updates
+updates=$(getarg live.updates=)
+if [ -n "$updates" ]; then
+ # make sure network comes up even if we're doing a local live device
+ [ -z "$netroot" ] && echo "rd.neednet=1" > /etc/cmdline.d/90livenet.conf
+ echo "$updates" > /tmp/liveupdates.info
+ echo '[ -e /tmp/liveupdates.done ]' > \
+ $hookdir/initqueue/finished/liveupdates.sh
+fi
+
str_starts "$root" "live:" && liveurl="$root"
str_starts "$liveurl" "live:" || return
liveurl="${liveurl#live:}"