58 lines
1.1 KiB
Bash
Executable File
58 lines
1.1 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
set -x
|
|
|
|
export PATH="/bin"
|
|
|
|
# mounts
|
|
mount -t proc proc /proc
|
|
mount -t devtmpfs devtmp /dev
|
|
mount -t sysfs sys /sys
|
|
mount -o size=1G -t tmpfs tmpfs /tmp
|
|
|
|
# modules
|
|
for mod in mbcache fscrypto jbd2 ext4; do
|
|
modprobe "${mod}"
|
|
done
|
|
|
|
for mod in spl znvpair zcommon zunicode zavl icp zfs; do
|
|
modprobe "${mod}"
|
|
done
|
|
|
|
# populating useful additional /dev entries
|
|
mkdir -p /dev/disk/by-uuid
|
|
blkid | tr -d : | while read dev uuidvar rest; do
|
|
eval "${uuidvar}"
|
|
ln -s "${dev}" "/dev/disk/by-uuid/${UUID}"
|
|
done
|
|
|
|
# argument parsing
|
|
for var in $(cat /proc/cmdline | sed 's/[.]/_/g'); do
|
|
eval $var
|
|
done
|
|
eval "${root}"
|
|
pool=${ZFS/\/*}
|
|
|
|
if [ "${zfs_force}" = y ]; then
|
|
FORCE_FLAG=" -f"
|
|
else
|
|
FORCE_FLAG=""
|
|
fi
|
|
|
|
# meat
|
|
cryptsetup open UUID="${rd_luks_uuid}" "${pool}"
|
|
zpool import -N ${FORCE_FLAG} "${pool}"
|
|
mount -t zfs -o zfsutil "${ZFS}" /src
|
|
|
|
cp "$(readlink -f /src/boot/vmlinuz)" /tmp/vmlinuz
|
|
cp "$(readlink -f /src/boot/initrd)" /tmp/initrd
|
|
|
|
umount /src
|
|
# prevent zpool import moaning
|
|
zpool export "${pool}"
|
|
cryptsetup close "${pool}"
|
|
|
|
kexec --reuse-cmdline -f --initrd /tmp/initrd /tmp/vmlinuz
|
|
|
|
exec sh
|