summaryrefslogtreecommitdiffstats
path: root/contrib/dracut/90zfs/module-setup.sh.in
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/dracut/90zfs/module-setup.sh.in')
-rwxr-xr-xcontrib/dracut/90zfs/module-setup.sh.in61
1 files changed, 61 insertions, 0 deletions
diff --git a/contrib/dracut/90zfs/module-setup.sh.in b/contrib/dracut/90zfs/module-setup.sh.in
new file mode 100755
index 000000000..9eb9f5765
--- /dev/null
+++ b/contrib/dracut/90zfs/module-setup.sh.in
@@ -0,0 +1,61 @@
+#!/bin/sh
+
+check() {
+ # We depend on udev-rules being loaded
+ [ "${1}" = "-d" ] && return 0
+
+ # Verify the zfs tool chain
+ which zpool >/dev/null 2>&1 || return 1
+ which zfs >/dev/null 2>&1 || return 1
+
+ return 0
+}
+
+depends() {
+ echo udev-rules
+ return 0
+}
+
+installkernel() {
+ instmods zfs
+ instmods zcommon
+ instmods znvpair
+ instmods zavl
+ instmods zunicode
+ instmods spl
+ instmods zlib_deflate
+ instmods zlib_inflate
+}
+
+install() {
+ inst_rules @udevruledir@/90-zfs.rules
+ inst_rules @udevruledir@/69-vdev.rules
+ inst_rules @udevruledir@/60-zvol.rules
+ dracut_install @sbindir@/zfs
+ dracut_install @sbindir@/zpool
+ dracut_install @udevdir@/vdev_id
+ dracut_install @udevdir@/zvol_id
+ dracut_install mount.zfs
+ dracut_install hostid
+ dracut_install awk
+ dracut_install head
+ inst_hook cmdline 95 "${moddir}/parse-zfs.sh"
+ inst_hook mount 98 "${moddir}/mount-zfs.sh"
+ inst_hook shutdown 30 "${moddir}/export-zfs.sh"
+
+ inst_simple "${moddir}/zfs-lib.sh" "/lib/dracut-zfs-lib.sh"
+ if [ -e @sysconfdir@/zfs/zpool.cache ]; then
+ inst @sysconfdir@/zfs/zpool.cache
+ fi
+
+ if [ -e @sysconfdir@/zfs/vdev_id.conf ]; then
+ inst @sysconfdir@/zfs/vdev_id.conf
+ fi
+
+ # Synchronize initramfs and system hostid
+ AA=`hostid | cut -b 1,2`
+ BB=`hostid | cut -b 3,4`
+ CC=`hostid | cut -b 5,6`
+ DD=`hostid | cut -b 7,8`
+ printf "\x${DD}\x${CC}\x${BB}\x${AA}" > "${initdir}/etc/hostid"
+}