summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xdracut/90zfs/module-setup.sh.in11
-rwxr-xr-xdracut/90zfs/parse-zfs.sh.in8
2 files changed, 16 insertions, 3 deletions
diff --git a/dracut/90zfs/module-setup.sh.in b/dracut/90zfs/module-setup.sh.in
index 33f78e51c..c01915e82 100755
--- a/dracut/90zfs/module-setup.sh.in
+++ b/dracut/90zfs/module-setup.sh.in
@@ -33,7 +33,6 @@ install() {
inst_rules @udevruledir@/60-zvol.rules
inst @sysconfdir@/zfs/zdev.conf
inst @sysconfdir@/zfs/zpool.cache
- inst @sysconfdir@/hostid
dracut_install @sbindir@/zfs
dracut_install @sbindir@/zpool
dracut_install @bindir@/zpool_layout
@@ -43,4 +42,14 @@ install() {
dracut_install hostid
inst_hook cmdline 95 "$moddir/parse-zfs.sh"
inst_hook mount 98 "$moddir/mount-zfs.sh"
+
+ # Synchronize initramfs and system hostid
+ TMP=`mktemp`
+ 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" >$TMP
+ inst_simple "$TMP" /etc/hostid
+ rm "$TMP"
}
diff --git a/dracut/90zfs/parse-zfs.sh.in b/dracut/90zfs/parse-zfs.sh.in
index 13697b945..571d263ce 100755
--- a/dracut/90zfs/parse-zfs.sh.in
+++ b/dracut/90zfs/parse-zfs.sh.in
@@ -6,9 +6,13 @@
spl_hostid=`getarg spl_hostid=`
if [ "${spl_hostid}" != "" ] ; then
info "ZFS: Using hostid from command line: ${spl_hostid}"
- echo "${spl_hostid}" > /etc/hostid
+ AA=`echo ${spl_hostid} | cut -b 1,2`
+ BB=`echo ${spl_hostid} | cut -b 3,4`
+ CC=`echo ${spl_hostid} | cut -b 5,6`
+ DD=`echo ${spl_hostid} | cut -b 7,8`
+ printf "\x$DD\x$CC\x$BB\x$AA" >/etc/hostid
elif [ -f /etc/hostid ] ; then
- info "ZFS: Using hostid from /etc/hostid: `cat /etc/hostid`"
+ info "ZFS: Using hostid from /etc/hostid: `hostid`"
else
warn "ZFS: No hostid found on kernel command line or /etc/hostid. "
warn "ZFS: Pools may not import correctly."