Okay I've been able to get this to work: the problem is that dracut
doesn't install anything from /etc/crypttab unless it's run in --host-
only mode, but if it is, then it generally fails to install anything
cryptography related (under an Ubuntu ZFS-on-root native encryption
setup).

It's worth noting no combination of rd.auto rd.luks=1 would seem to
detect the keystore partition, but adding:

```
#/etc/dracut.conf.d/00-crypttab.conf
install_items+=" /etc/crypttab "
```

to my dracut.conf file *did* get the encrypted partition to mount.
However since dracut has no idea what it should do with that.

It's possible to use an undocumented feature here to fix this explicitly
in the simple config:

```
#/etc/dracut.conf.d/01-keystore-rpool-mnt.conf
fstab_lines+=" /dev/mapper/keystore-rpool /run/keystore/rpool auto "
```

(note yes this is a malformed line - dracut appends '0 0 2' to whatever
you put here for the last element)

So the problem seems to be that zfs-dracut needs to explicitly handle
the Ubuntu keystore convention, since I can't see how dracut would
figure it out otherwise - i.e detecting a keystore should trigger a
decrypt operation (or better, force the relevant crypttab line to be
included so tpm2-device etc. options can be used) and then the scripts
need to execute the mount point.

I've tested this setup as letting you login with a password, but it has
another problem: since the ZFS scripts don't know they're waiting for
their own decryption (they're doing udevsettle) then after about 15-20
seconds dracut crashes to the recovery shell from the password prompt.

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to zfs-linux in Ubuntu.
https://bugs.launchpad.net/bugs/2070066

Title:
  dracut does not support booting from an encrypted ZFS volume

Status in dracut package in Ubuntu:
  Triaged
Status in zfs-linux package in Ubuntu:
  Confirmed

Bug description:
  Dracut does not support booting from an encrypted ZFS volume. Steps to
  reproduce:

  1. In a VM install Ubuntu 24.10 with an encrypted ZFS volume
  2. Install dracut afterwards: sudo apt install dracut zfs-dracut
  3. Add rd.shell to the boot arguments
  4. Reboot

  The boot will fail:

  ```
  dracut-pre-mount[817]: Warning: ZFS: Key /run/keystore/rpool/system.key for 
rpool hasn't appeared. Trying anyway.
  dracut-pre-mount[863]: Key load error: Failed to open key material file: No 
such file or directory
  [FAILED] Failed to mount sysroot.mount - /sysroot.
  ```

  The initrd should have asked for the password, but it did not.

  ProblemType: Bug
  DistroRelease: Ubuntu 24.10
  Package: dracut-core 102-3ubuntu2
  ProcVersionSignature: Ubuntu 6.8.0-31.31-generic 6.8.1
  Uname: Linux 6.8.0-31-generic x86_64
  NonfreeKernelModules: zfs
  ApportVersion: 2.28.1-0ubuntu4
  Architecture: amd64
  CasperMD5CheckResult: pass
  CurrentDesktop: ubuntu:GNOME
  Date: Fri Jun 21 09:35:42 2024
  InstallationDate: Installed on 2024-06-20 (1 days ago)
  InstallationMedia: Ubuntu 24.10 "Oracular Oriole" - Daily amd64 (20240617)
  ProcEnviron:
   LANG=de_DE.UTF-8
   PATH=(custom, no user)
   SHELL=/bin/bash
   TERM=xterm-256color
   XDG_RUNTIME_DIR=<set>
  SourcePackage: dracut
  UpgradeStatus: No upgrade log present (probably fresh install)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/dracut/+bug/2070066/+subscriptions


-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to