Skip to content

Commit

Permalink
[RFC] 'Fixes' for initramfs creation
Browse files Browse the repository at this point in the history
zfs-functions is needed, copy that to /etc/zfs/

The zfs hook that copies files will error on critical files.  The
argument for this is we do not want to create a non-functional
initramfs.

Some files are optional, those we do silently ignore
  • Loading branch information
cwedgwood committed May 27, 2019
1 parent e55db32 commit 0dd3091
Show file tree
Hide file tree
Showing 2 changed files with 21 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
20 changes: 17 additions & 3 deletions contrib/initramfs/hooks/zfs.in
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,24 @@
# 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 -eu

# 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="$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 +71,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 0dd3091

Please sign in to comment.