Hello,

On 2024-05-20 20:07:43 +0200, Thomas Bennett wrote:
> Hello Guix comunity,
>
> I would like to be able to mount external encrypted disk pasing key-files
> located in the root partition. Thus it would prevent me to open those
> external disks manually by entering passphrases during the boot sequence.
> Keeping only the passphrase for the root partition is fine for now.
>
> I have the following in my config.scm file regarding mapping and mounting
> one of the external disks, a backup one:
>
>  (mapped-devices (list (mapped-device
>                         (source (uuid "$ROOT_PARTION_UUID"))
>                         (target "$ROOT_PARTITION_MAPPED_NAME")
>                         (type luks-device-mapping))
>                        (mapped-device
>                         (source (uuid "$BACKUP_PARTITION_UUID"))
>                         (target "$BACKUP_PARTITION_MAPPED_NAME")
>                         (type (luks-device-mapping-with-options
>                                #:key-file
> "$BACKUP_PARTITION_KEY_FILE_PATH")))))
>
>
>  (file-systems (cons* (file-system
>                        (mount-point "$BOOT_PARTITION_MOUNTPOINT")
>                        (device (uuid "$BOOT_PARTITION_UUID" 'fat32))
>                        (type "vfat"))
>                       (file-system
>                        (mount-point "$ROOT_PARTITION_MOUNTPOINT")
>                        (device "/dev/mapper/$ROOT_PARTITION_MAPPED_NAME")
>                        (type "ext4")
>                        (dependencies mapped-devices))
>                       (file-system
>                        (create-mount-point? #t)
>                        (mount-point "$BACKUP_PARTITION_MOUNTPOINT")
>                        (type "ext4")
>                        (device "/dev/mapper/$BACKUP_PARTITION_MAPPED_NAME")
>                        (dependencies mapped-devices))
>                       %base-file-systems)))
>
> And it doesn't work. The configuration loads, but when I boot the system, it
> seems to be unable to find the key file because it stills asks for my
> passphrase to unlock the backup partition.
>
> May it be possible that the root partition is not yet mounted when the
> system tries to map the backup partition? If so, It would explain why it
> doesn't find the key file and asks for my passphrase.

I think this is the correct conclusion.  If you look into
gnu/system/linux-initrd.scm at raw-initrd procedure, you will notice that
everything is unlocked before the root being mounted.

I did not test it in any way, but based just on browsing the source code, it
looks like it unlocks only devices required for boot.  Maybe.

What you can therefore try is to split the dependencies, and instead of having
full `mapped-devices' in both, you can try to put just the respective
mapped-device as `dependencies' of $ROOT_PARTITION_MOUNTPOINT and
$BACKUP_PARTITION_MOUNTPOINT filesystems (you can probably just filter the list
by mapped-device-target).  Let me know if it worked, I am curious.

As an alternative solution, you can just put the keyfile into the initrd,
although that requires switching to encrypted boot.

>
> Do you know how to further investigate and/or what's wrong with the config
> and how to achieve the expected result?
>
> Thank you,
> Best,
> Thomas

Have a nice day,
also Tomas :)

--
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.

Attachment: signature.asc
Description: PGP signature

Reply via email to