This is based on a number of documents, beginning with OpenZFS Debian Bullseye Root on ZFS. There are some notable changes. View the original document and follow along:
1.2: different contents for sources.list
deb http://deb.devuan.org/merged chimaera main contrib non-free
deb http://deb.devuan.org/merged chimaera-updates main contrib non-free
deb http://deb.devuan.org/merged chimaera-security main contrib non-free
deb http://deb.devuan.org/merged chimaera-backports main contrib non-free
1.6: before this step:
apt install --yes linux-headers-`uname -r`
otherwise you can't dkms build the zfs module, and zfs utils won't install
3.3: just a reminder from the docs:
"Note: If you separate a directory required for booting (e.g. /etc) into its own dataset, you must add it to ZFS_INITRD_ADDITIONAL_DATASETS in /etc/default/zfs. Datasets with canmount=off (like rpool/usr above) do not matter for this."
This bit me on my first install when I decided to separate /var
On my second go I decided not to in order to just KISS.
On my third try I used dracut for some reason and /etc/default/zfs INITRD_ADDITIONAL_DATASETS did nothing.
I fixed it by going back to using mkinitrd (apt install zfs-initramfs) and regenerating the initrd (update-initramfs -k all -c) and adjusted my instructions accordingly.
3.5: change command
bootstrap chimaera /mnt
4.3: use this command instead for this step
cp /etc/apt/sources.list /mnt/etc/apt/sources.list
4.5: immediately after apt update, do apt upgrade before you continue
4.5: when doing "dpkg-reconfigure locales..." I install all of the en_us locales, and then set default to en_US.UTF-8
4.6: before this step:
apt install firmware-linux firmware-linux-nonfree firmware-realtek
4.8: change command here to use ntp
apt install openntpd
4.12: This point needs some help.
My bpool seems to be getting imported late, as /boot/efi is going unmounted. There are no other apparent symptoms. Right now I am working around this by mounting it with this script in /etc/boot.d. I am fiddling with an init script solution. This may be incompatible with secure boot, but I haven't tested that theory yet.
#!/bin/bash
if [ -d /boot/efi -a ! -d /boot/efi/EFI ]; then
mount /boot/efi
fi
4.13: instead add this line to /etc/fstab:
tmpfs /tmp tmpfs size=1g 0 0
4.15: I skipped this for my desktop, may mess with it later
Final bits of the install
Since you don't have systemd, you need some other way to start run-and-done daemons, I suggest xinetd
apt install xinetd tcpd
touch /etc/inetd.conf
You can use itox to generate entries to put in /etc/xinetd.d when daemons install themselves into inetd.conf:
itox -daemon_dir /usr/sbin/tcpd < /etc/inetd.conf
There are also some assorted other additional things which need installing before you have a system. Some of this might be optional to you; use your judgement.
apt install sudo iw rfkill lshw aptitude debootstrap linux-image-amd64
apt install xorg pm-utils hdparm cpufrequtils acpid cpulimit alsa-utils\
rxvt-unicode htop elinks links2 gparted bash-completion xcape kbd less\
acpi elogind libpam-elogind pciutils usbutils
apt install atool mediainfo jhead exiftool feh imagemagick zip unzip\
bzip2 p7zip-full ntfs-3g blktool dosfstools mtools testdisk partclone\
sshfs locate git cups gpa ntp yad rpl bluetooth mtp-tools go-mtpfs\
adb pmount udiskie gvfs cdrdao discover rename apt-file xbacklight