mirror of
				https://git.proxmox.com/git/mirror_zfs
				synced 2025-11-04 08:52:47 +00:00 
			
		
		
		
	By dropping in a file in a directory (for packages) or by making a file (for local administrators), custom key loading methods may be provided for the rootfs and necessities. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Nicholas Morris <security@niwamo.com> Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz> Co-authored-by: Nicholas Morris <security@niwamo.com> Supersedes: #14704 Closes: #13757 Closes #14733
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/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 "@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
 | 
						|
 | 
						|
# shellcheck disable=SC2050
 | 
						|
if [ @LIBFETCH_DYNAMIC@ -gt 0 ]; then
 | 
						|
	find /lib/ -name "@LIBFETCH_SONAME@" | while read -r libfetch; do
 | 
						|
		copy_exec "$libfetch"
 | 
						|
	done
 | 
						|
fi
 | 
						|
 | 
						|
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"
 | 
						|
for f in "@sysconfdir@/zfs/initramfs-tools-load-key" "@sysconfdir@/zfs/initramfs-tools-load-key.d/"*; do
 | 
						|
	copy_file config "$f"
 | 
						|
done
 | 
						|
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
 |