Add 'live.updates' to livenet module
live.updates allows you to specify the URL for an "updates image" that should be applied to the live runtime before switch_root. The URL can be anything supported by url-lib (http, https, ftp, possibly nfs) and the image can be anything supported by img-lib (xz/gzip compressed cpio/tar, uncompressed cpio/tar, filesystem image, etc.)master
parent
7e60091c6b
commit
52c4c9484d
|
@ -0,0 +1,32 @@
|
|||
#!/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
|
|
@ -12,6 +12,7 @@ depends() {
|
|||
|
||||
install() {
|
||||
inst_hook cmdline 29 "$moddir/parse-livenet.sh"
|
||||
inst_hook initqueue/online 95 "$moddir/fetch-liveupdate.sh"
|
||||
inst "$moddir/livenetroot.sh" "/sbin/livenetroot"
|
||||
}
|
||||
|
||||
|
|
|
@ -1,10 +1,20 @@
|
|||
#!/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:}"
|
||||
|
|
Loading…
Reference in New Issue