Skip to content

Commit

Permalink
[RFC] 'Fixes' for initramfs creation
Browse files Browse the repository at this point in the history
The zfs hook the copies files should error on critical files, silently
ignore optional files.

zfs-functions is needed, copy that to /etc/zfs/
  • Loading branch information
cwedgwood committed May 23, 2019
1 parent 9dc41a7 commit db6ee5a
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 3 deletions.
4 changes: 4 additions & 0 deletions contrib/initramfs/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,7 @@ install-initrdSCRIPTS: $(EXTRA_DIST)
cp $(top_srcdir)/etc/init.d/zfs \
$(DESTDIR)$(DEFAULT_INITCONF_DIR)/; \
fi
if [ -f etc/init.d/zfs-functions ]; then \
cp $(top_srcdir)/etc/init.d/zfs-functions \
$(DESTDIR)$(initrddir)/etc/zfs/zfs-functions \
fi
21 changes: 18 additions & 3 deletions contrib/initramfs/hooks/zfs.in
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,25 @@
# Add ZoL filesystem capabilities to an initrd, usually for a native ZFS root.
#

# fail on errors; this might be annoying but for now it's more
# important to fail during initramfs creation where we can do
# something about it, vs after a boot when we can't
set -e

# This hook installs udev rules for ZoL.
PREREQ="zdev"

# These prerequisites are provided by the zfsutils package. The zdb utility is
# not strictly required, but it can be useful at the initramfs recovery prompt.
COPY_EXEC_LIST="@sbindir@/zdb @sbindir@/zpool @sbindir@/zfs"
COPY_EXEC_LIST="$COPY_EXEC_LIST @mounthelperdir@/mount.zfs @udevdir@/vdev_id"
COPY_FILE_LIST="/etc/hostid @sysconfdir@/zfs/zpool.cache"
COPY_FILE_LIST="$COPY_FILE_LIST @sysconfdir@/default/zfs"
COPY_FILE_LIST="@sysconfdir@/zfs/zpool.cache"
COPY_FILE_LIST="$COPY_FILE_LIST @sysconfdir@/zfs/zfs-functions"
COPY_FILE_LIST="$COPY_FILE_LIST @sysconfdir@/zfs/vdev_id.conf"
COPY_FILE_LIST="$COPY_FILE_LIST @udevruledir@/69-vdev.rules"

# These are not required
OPTIONAL_FILE_LIST="/etc/hostid @sysconfdir@/default/zfs @sysconfdir@/zfs/vdev_id.conf"

# These prerequisites are provided by the base system.
COPY_EXEC_LIST="$COPY_EXEC_LIST /usr/bin/dirname /bin/hostname /sbin/blkid"
COPY_EXEC_LIST="$COPY_EXEC_LIST /usr/bin/env"
Expand Down Expand Up @@ -66,6 +72,15 @@ do
done

for ii in $COPY_FILE_LIST
do
dir=$(dirname "$ii")
[ -d "$dir" ] && mkdir -p "$DESTDIR/$dir"
[ -f "$ii" ] && cp -p "$ii" "$DESTDIR/$ii"
# error if missing
[ -e "$ii" ]
done

for ii in $OPTIONAL_FILE_LIST
do
dir=$(dirname "$ii")
[ -d "$dir" ] && mkdir -p "$DESTDIR/$dir"
Expand Down

0 comments on commit db6ee5a

Please sign in to comment.