#!/bin/sh # # Add OpenZFS filesystem capabilities to an initrd, usually for a native ZFS root. # if [ "$1" = "prereqs" ]; then echo "udev" exit fi . /usr/share/initramfs-tools/hook-functions for req in "@sbindir@/zpool" "@sbindir@/zfs" "@mounthelperdir@/mount.zfs"; do copy_exec "$req" || { echo "$req not available!" >&2 exit 2 } done copy_exec "@sbindir@/zdb" copy_exec "@udevdir@/vdev_id" copy_exec "@udevdir@/zvol_id" if command -v systemd-ask-password > /dev/null; then copy_exec "$(command -v systemd-ask-password)" fi # We use pthreads, but i-t from buster doesn't automatically # copy this indirect dependency: this can be removed when buster finally dies. find /lib/ -type f -name "libgcc_s.so.[1-9]" | while read -r libgcc; do copy_exec "$libgcc" done copy_file config "/etc/hostid" copy_file cache "@sysconfdir@/zfs/zpool.cache" copy_file config "@initconfdir@/zfs" copy_file config "@sysconfdir@/zfs/zfs-functions" copy_file config "@sysconfdir@/zfs/vdev_id.conf" copy_file rule "@udevruledir@/60-zvol.rules" copy_file rule "@udevruledir@/69-vdev.rules" manual_add_modules zfs if [ -f "/etc/hostname" ]; then copy_file config "/etc/hostname" else hostname="$(mktemp -t hostname.XXXXXXXXXX)" hostname > "$hostname" copy_file config "$hostname" "/etc/hostname" rm -f "$hostname" fi