]>
Commit | Line | Data |
---|---|---|
fde4ce99 ZB |
1 | #!/bin/sh |
2 | ||
3 | . /lib/dracut-lib.sh | |
4 | ||
5 | # Let the command line override our host id. | |
6 | spl_hostid=`getarg spl_hostid=` | |
7 | if [ "${spl_hostid}" != "" ] ; then | |
1ef5e829 | 8 | info "ZFS: Using hostid from command line: ${spl_hostid}" |
e8753fb4 BB |
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 | |
fde4ce99 | 14 | elif [ -f /etc/hostid ] ; then |
e8753fb4 | 15 | info "ZFS: Using hostid from /etc/hostid: `hostid`" |
fde4ce99 | 16 | else |
7f4afd30 ZB |
17 | warn "ZFS: No hostid found on kernel command line or /etc/hostid. " |
18 | warn "ZFS: Pools may not import correctly." | |
fde4ce99 ZB |
19 | fi |
20 | ||
ea04106b | 21 | wait_for_zfs=0 |
ae26d046 | 22 | case "$root" in |
1ef5e829 ZB |
23 | ""|zfs|zfs:) |
24 | # We'll take root unset, root=zfs, or root=zfs: | |
185853d9 JG |
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. | |
1ef5e829 ZB |
28 | root="zfs:AUTO" |
29 | rootok=1 | |
185853d9 | 30 | wait_for_zfs=1 |
1ef5e829 ZB |
31 | |
32 | info "ZFS: Enabling autodetection of bootfs after udev settles." | |
33 | ;; | |
34 | ||
35 | ZFS\=*|zfs:*|zfs:FILESYSTEM\=*|FILESYSTEM\=*) | |
185853d9 JG |
36 | # root is explicit ZFS root. Parse it now. We can handle |
37 | # a root=... param in any of the following formats: | |
1ef5e829 ZB |
38 | # root=ZFS=rpool/ROOT |
39 | # root=zfs:rpool/ROOT | |
40 | # root=zfs:FILESYSTEM=rpool/ROOT | |
41 | # root=FILESYSTEM=rpool/ROOT | |
42 | ||
43 | # Strip down to just the pool/fs | |
44 | root="${root#zfs:}" | |
45 | root="${root#FILESYSTEM=}" | |
46 | root="zfs:${root#ZFS=}" | |
47 | rootok=1 | |
185853d9 | 48 | wait_for_zfs=1 |
1ef5e829 ZB |
49 | |
50 | info "ZFS: Set ${root} as bootfs." | |
51 | ;; | |
ae26d046 MAR |
52 | esac |
53 | ||
fde4ce99 ZB |
54 | # Make sure Dracut is happy that we have a root and will wait for ZFS |
55 | # modules to settle before mounting. | |
ea04106b | 56 | if [ ${wait_for_zfs} -eq 1 ]; then |
185853d9 JG |
57 | ln -s /dev/null /dev/root 2>/dev/null |
58 | echo '[ -e /dev/zfs ]' > $hookdir/initqueue/finished/zfs.sh | |
59 | fi |