Your message dated Wed, 24 May 2023 13:31:33 +0200
with message-id <20230524113133.mgbp2aghgre5p...@mraw.org>
and subject line Re: Bug#1036347: debian-installer: missing support for 
RAID+LUKS+LVM via preseed
has caused the Debian Bug report #1036347,
regarding debian-installer: missing support for RAID+LUKS+LVM via preseed
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
1036347: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1036347
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Package: partman-auto-raid
Severity: important
Tags: patch

Hi,

I'm not a preseed expert but it seems to me we're currently lacking
support for one rather common layout that's achievable via the
interactive installer, which is RAID+LUKS+LVM.

As far as I understand we support a few methods, but only *one* of
them can be chosen via partman-auto/method. The partman-auto package
intercepts “regular” and deals with it on its own, but also delegates
to partman-auto-<METHOD> if a different method is specified:
 - partman-auto-crypto: sets up LUKS+LVM.
 - partman-auto-lvm: sets up LVM.
 - partman-auto-raid: sets up RAID, but can also do RAID+LVM if the
   RAID specification includes the “lvm” keyword.

The fact we're supposed to be choosing one and only one method is
confirmed by looking at the implementation of each method, which
suggests they were never meant to be combined (i.e. stacked on top of
each other):
 - partman-auto-lvm ships an auto-lvm.sh library, defining functions
   like auto_lvm_prepare() and auto_lvm_perform(), which it obviously
   uses itself to implement LVM support.
 - partman-auto-crypto leverages that auto-lvm.sh library, using
   both functions directly in its autopartition-crypto script, to
   implement LUKS+LVM support.
 - partman-auto-raid also leverages that auto-lvm.sh library, but not
   as directly as partman-auto-crypto does: since auto_lvm_prepare()
   wants to create partitions, it was partially copied/adjusted in its
   initial_auto_raid_lvm script; that being said, it calls
   auto_lvm_perform() in the end; that's how it implements RAID+LVM.

Since partman-auto-raid already knows how to deal with RAID and with
RAID+LVM when the “lvm” keyword is detected, I looked into making it
support RAID+LUKS+LVM by adding support for the “crypto-lvm” keyword,
reusing the logic of the initial_auto_raid_lvm script, inserting parts
of the logic of the autopartition-crypto script in there.

Tests confirm this seems to be working fine, but I wouldn't call this
bulletproof just yet. That being said, it cannot really break existing
use cases, so I'm tempted to include this feature right away.

  
https://salsa.debian.org/installer-team/partman-auto-raid/-/commits/lvm-on-luks-on-raid

While looking at the implementation, I noticed that partman-auto-raid
doesn't declare partman-auto-lvm in its Depends despite using its
auto-lvm.sh, so I didn't add partman-crypto to Depends despite using
its crypto-base.sh. This seems to be working fine anyway, using either
a netboot-gtk build or a full-blown netinst build.

Example usage with two disks, having only /dev/sda partitioned, and
the entirety of /dev/sdb added to the RAID 0 array, alongside the 4th
partition of the first disk:

    d-i partman-auto/disk string /dev/sda
    d-i partman-auto/method string raid
    d-i partman-auto-raid/recipe string 0 2 0 crypto-lvm - /dev/sda4#/dev/sdb .

complemented with partman-auto/{choose,expert}_recipe regarding the
actual partitioning of /dev/sda using those methods:
 - biosgrub
 - efi (fat32, /boot/efi)
 - format (ext2, /boot)
 - raid

and of course LV definitions.

This approach means that all existing settings are still considered as
usual, like those for LUKS:

    d-i partman-crypto/confirm boolean true
    d-i partman-crypto/passphrase string password
    d-i partman-crypto/passphrase-again string password
    d-i partman-crypto/weak_passphrase boolean true
    d-i partman-auto-crypto/erase_disks boolean false

(I decided to also reuse the partman-auto-crypto one despite doing the
work from partman-auto-raid, but it's trivial to adjust if desired;
that's only meant to be preseeded anyway, no strings attached. That
being said, the existing RAID+LVM support is very similar, since
partman-auto-lvm/* settings are considered even if partman-auto/method
is set to “raid” and partman-auto-raid is doing the heavy lifting, see
below.)

That also applies for LVM:

    d-i partman-auto-lvm/guided_size string max
    d-i partman-auto-lvm/new_vg_name string main
    d-i partman-lvm/confirm boolean true
    d-i partman-lvm/confirm_nooverwrite boolean true
    d-i partman-lvm/device_remove_lvm boolean true

I plan on polishing and sharing some complete preseed example later
on, and possibly adding a pointer from the example preseed that's
published in the installation guide (and therefore on the website).


That partman request was submitted to me a while back but I've chosen
to prioritize other topics until now, since those were beneficial to
virtually everyone and needed to be worked on in a timely fashion:
non-free-firmware, Alpha and RC releases, also trying to get a greater
autonomy with debian-cd and debian-ftp so that we could accommodate
whatever might be needed or preferred by the kernel team and the
release team as far as timings go (which seems pretty important the
closer we get to the tentative release date).

Since we've spent quite some time fixing and improving LUKS support, I
would hate it if we didn't consider building on it and including this
change in Bookworm. As far as I can tell, there are virtually no
changes to existing code path (except for the keyword addition), so
that seems very low risk.


Cheers,
-- 
Cyril Brulebois (k...@debian.org)            <https://debamax.com/>
D-I release manager -- Release team member -- Freelance Consultant

--- End Message ---
--- Begin Message ---
Version: 51

Cyril Brulebois <k...@debian.org> (2023-05-19):
> I plan on polishing and sharing some complete preseed example later
> on, and possibly adding a pointer from the example preseed that's
> published in the installation guide (and therefore on the website).

The documentation aspect remains to be done, likely after RC 4.

The upload happened; closing this bug report manually as I forgot to add
a reference in the changelog.


Cheers,
-- 
Cyril Brulebois (k...@debian.org)            <https://debamax.com/>
D-I release manager -- Release team member -- Freelance Consultant

Attachment: signature.asc
Description: PGP signature


--- End Message ---

Reply via email to