-#!/bin/sh
+#!/bin/bash
# We depend on network modules being loaded
[ "$1" = "-d" ] && echo network
-# If hostonly was requested, fail the check if we are not actually
-# booting from root.
-[ "$1" = "-h" ] && ! egrep -q '/ /dev/nbd[0-9]*' /proc/mounts && exit 1
-
-# If our prerequisites are not met, fail anyways.
+# If our prerequisites are not met, fail.
which nbd-client >/dev/null 2>&1 || exit 1
+
+is_nbd() { [[ -b /dev/block/$1 && $1 == 43:* ]] }
+
+. $dracutfunctions
+
+# if an nbd device is not somewhere in the chain of devices root is mounted on,
+# fail the hostonly check.
+[ "$1" = "-h" ] && {
+ rootdev=$(find_root_block_device)
+ [[ -b /dev/block/$rootdev ]] || exit 1
+ check_block_and_slaves is_nbd "$rootdev" || exit 1
+}
+
exit 0