The ZFS autoinstall scripts found inside the ubuntu-desktop-installer image, found at /snap/ubuntu-desktop-installer/<version_number>/bin/subiquity/examples/ do work. Such as 'ai-zfs-efi-simple.yaml':
Code:
#cloud-config
autoinstall:
version: 1
identity:
realname: ''
hostname: ubuntu
username: ubuntu
password: '$6$wdAcoXrU039hKYPd$508Qvbe7ObUnxoj15DRCkzC3qO7edjH0VV7BPNRDYK4QR8ofJaEEF2heacn0QgD.f8pO8SNp83XNdWG6tocBM1'
source:
id: ubuntu-server-minimal
early-commands:
- apt-get install -y zfsutils-linux
late-commands:
# Let's avoid recreating LP: #1993318
- zpool set cachefile= rpool
- cp /etc/zfs/zpool.cache "/target/etc/zfs/"
- mkdir -p "/etc/zfs/zfs-list.cache" "/target/etc/zfs/zfs-list.cache"
/snap/ubuntu-desktop-installer/1245/bin/subiquity/examples/ai-zfs-efi-simple.yaml: - truncate -s 0 /etc/zfs/zfs-list.cache/rpool
- >-
env -i
ZEVENT_POOL=rpool
ZED_ZEDLET_DIR=/etc/zfs/zed.d
ZEVENT_SUBCLASS=history_event
ZFS=zfs
ZEVENT_HISTORY_INTERNAL_NAME=create
/etc/zfs/zed.d/history_event-zfs-list-cacher.sh
- >-
sh -c
'sed -E "s|\t/target/?|\t/|g" "/etc/zfs/zfs-list.cache/rpool" > "/target/etc/zfs/zfs-list.cache/rpool"'
- rm -f "/etc/zfs/zfs-list.cache/rpool"
storage:
version: 2
swap:
size: 0
config:
- {type: disk, id: d1, ptable: gpt, match: {size: largest},
wipe: superblock, grub_device: true}
- {type: partition, id: d1p1, number: 1, size: 1G, device: d1,
flag: boot, wipe: superblock, grub_device: true}
- {type: format, id: d1p1_format, label: efi, fstype: fat32,
volume: d1p1}
- {type: mount, id: d1p1_mount, device: d1p1_format, path: /boot/efi}
- {type: partition, id: d1p2, number: 2, size: -1, device: d1}
- {type: zpool, id: d1_rpool, pool: rpool, vdevs: [d1p2], mountpoint: /,
pool_properties: {ashift: 12},
fs_properties: {acltype: posixacl, relatime: on, canmount: on,
compression: gzip, devices: off, xattr: sa}}
How familiar are you with Ubuntu Desktop? Because ZFS-On-Root has been a part of the installer on Ubuntu since 20.04...
I tend to do my own manual installs. If you search my username in the Support Sections, you can find some of my recipes for that... All the commands needed, from the live environment of an Installer LiveUSB.