32 lines
835 B
Bash
32 lines
835 B
Bash
|
#!/bin/bash
|
||
|
# fetch-driver-net - fetch driver from the network.
|
||
|
# runs from the "initqueue/online" hook whenever a net interface comes online
|
||
|
|
||
|
# initqueue/online hook passes interface name as $1
|
||
|
netif="$1"
|
||
|
|
||
|
# We already processed the dd_args - exit
|
||
|
[ -e /tmp/dd-net.done ] && return 0
|
||
|
|
||
|
# no dd requested - exit
|
||
|
[ -n "$dd_args" ] || return 0
|
||
|
|
||
|
command -v getarg >/dev/null || . /lib/dracut-lib.sh
|
||
|
. /lib/url-lib.sh
|
||
|
|
||
|
dd_repo=/tmp/DD-net/
|
||
|
for dd in $dd_args; do
|
||
|
case "${dd%%:*}" in
|
||
|
http|https|ftp|nfs|nfs4)
|
||
|
[ -e "$dd_repo" ] || mkdir -p $dd_repo
|
||
|
info "Fetching driver from $dd"
|
||
|
if driver=$(fetch_url "$dd"); then
|
||
|
mv "$driver" $dd_repo
|
||
|
else
|
||
|
warn "Failed to fetch driver from $dd"
|
||
|
fi
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
echo > /tmp/dd-net.done
|