5 # Let the command line override our host id.
6 spl_hostid=`getarg spl_hostid=`
7 if [ -n "${spl_hostid}" ] ; then
8 info "ZFS: Using hostid from command line: ${spl_hostid}"
9 AA=`echo ${spl_hostid} | cut -b 1,2`
10 BB=`echo ${spl_hostid} | cut -b 3,4`
11 CC=`echo ${spl_hostid} | cut -b 5,6`
12 DD=`echo ${spl_hostid} | cut -b 7,8`
13 printf "\x${DD}\x${CC}\x${BB}\x${AA}" >/etc/hostid
14 elif [ -f "/etc/hostid" ] ; then
15 info "ZFS: Using hostid from /etc/hostid: `hostid`"
17 warn "ZFS: No hostid found on kernel command line or /etc/hostid."
18 warn "ZFS: Pools may not import correctly."
24 # We'll take root unset, root=zfs, or root=zfs:
25 # No root set, so we want to read the bootfs attribute. We
26 # can't do that until udev settles so we'll set dummy values
27 # and hope for the best later on.
32 info "ZFS: Enabling autodetection of bootfs after udev settles."
35 ZFS\=*|zfs:*|zfs:FILESYSTEM\=*|FILESYSTEM\=*)
36 # root is explicit ZFS root. Parse it now. We can handle
37 # a root=... param in any of the following formats:
40 # root=zfs:FILESYSTEM=rpool/ROOT
41 # root=FILESYSTEM=rpool/ROOT
43 # Strip down to just the pool/fs
45 root="${root#FILESYSTEM=}"
46 root="zfs:${root#ZFS=}"
50 info "ZFS: Set ${root} as bootfs."
54 # Make sure Dracut is happy that we have a root and will wait for ZFS
55 # modules to settle before mounting.
56 if [ ${wait_for_zfs} -eq 1 ]; then
57 ln -s /dev/null /dev/root 2>/dev/null
58 echo '[ -e /dev/zfs ]' > "${hookdir}/initqueue/finished/zfs.sh"