2 # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
3 # ex: ts=8 sw=4 sts=4 et filetype=sh
6 # root=nbd:srv:port[:fstype[:rootflags[:nbdopts]]]
7 # [root=*] netroot=nbd:srv:port[:fstype[:rootflags[:nbdopts]]]
9 # nbdopts is a comma separated list of options to give to nbd-client
11 # root= takes precedence over netroot= if root=nbd[...]
14 # Sadly there's no easy way to split ':' separated lines into variables
19 set -- "$@" "${v%%:*}"
27 # This script is sourced, so root should be set. But let's be paranoid
28 [ -z "$root" ] && root
=$
(getarg root
=)
29 [ -z "$netroot" ] && netroot
=$
(getarg netroot
=)
31 # Root takes precedence over netroot
32 if [ "${root%%:*}" = "nbd" ] ; then
34 # Don't continue if root is ok
35 [ -n "$rootok" ] && return
37 if [ -n "$netroot" ] ; then
38 warn
"root takes precedence over netroot. Ignoring netroot"
45 # If it's not nbd we don't continue
46 [ "${netroot%%:*}" = "nbd" ] ||
return
48 # Check required arguments
49 netroot_to_var
$netroot
50 [ -z "$server" ] && die
"Argument server for nbdroot is missing"
51 [ -z "$port" ] && die
"Argument port for nbdroot is missing"
53 # NBD actually supported?
54 incol2
/proc
/devices nbd || modprobe nbd || die
"nbdroot requested but kernel/initrd does not support nbd"
59 # Shut up init error check
60 if [ -z "$root" ]; then
62 wait_for_dev
/dev
/root