You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

52 lines
1.3 KiB

# It'd be nice if this could share rules with 99-block.sh, but since
# the kernel side adds nbd{1..16} when the module is loaded -- before
# they are associated with a server -- we cannot use the udev add rule
# to find it
#
# XXX actually we could, if we move to root=XXX and netroot=XXX, then
# you could do root=LABEL=/ nbdroot=XXX, or netroot=nbd:XXX
#
# However, we need to be 90-nbd.sh to catch root=/dev/nbd*
#
# Preferred format:
# root=nbd:srv:port[:fstype[:rootflags[:nbdopts]]]
#
# nbdopts is a comma seperated list of options to give to nbd-client
#
#
# Legacy formats:
# nbdroot=srv,port
# nbdroot=srv:port[:fstype[:rootflags[:nbdopts]]]
# root=dhcp nbdroot=srv:port[:fstype[:rootflags[:nbdopts]]]
# root=nbd nbdroot=srv:port[:fstype[:rootflags[:nbdopts]]]
#
case "$root" in
nbd|dhcp|'')
if getarg nbdroot= > /dev/null; then
root=nbd:$(getarg nbdroot=)
fi
;;
esac
# Convert the Debian style to our syntax, but avoid matches on fs arguments
case "$root" in
nbd:*,*)
if check_occurances "$root" ',' 1 && check_occurances "$root" ':' 1;
then
root=${root%,*}:${root#*,}
fi
;;
esac
if [ -z "$netroot" -a -n "$root" -a -z "${root%%nbd:*}" ]; then
netroot="$root"
unset root
fi
if [ "${netroot%%:*}" = "nbd" ]; then
# XXX validate options here?
# XXX generate udev rules?
rootok=1
fi