Here’s what you are missing.
The first password you enter is for grub, so that it can access the boot information.
The second password is for the kernel, so that it can mount the encrypted file systems.
There is no secure way for grub to pass the encryption password directly to the kernel. I suppose the kernel developers and the grub developers could design a way of doing this, but they have not done that. So you have to enter the key twice.
The only ways to avoid this, as far as I know, are:
- Have a separate unencrypted “/boot”. But then you cannot boot from an older “btrfs” snapshot, because the boot information is not part of that snapshot.
- Pass the encryption key to the kernel in a different way. At least one person has found a way of putting the encryption key inside the “initrd” in a way that can be accessed during boot. Personally, I am doubtful that this is sufficiently secure, so I won’t try it.
I’ll note that, on one of my computers, I have to enter the encryption key twice. I’m not finding it all that much of a bother.
There are probably ways of installing grub on a USB key, and having the encryption password in a file there. If you could get that to work, you would plug in the USB to boot, then unplug it. You would not have to enter the encryption password at all. I am not considering that, because boot information would have to be regularly updated on that USB key, such as whenever there is a kernel update or the “initrd” is rebuilt. And, with Tumbleweed, that happens with almost every update. So it seems like more of a headache than just entering the encryption key twice.
I’ve tried to install manually with same password for all encrypted partitions. The following setup is:
sdb1, EFI boot, FAT, 500 MiB, unencrypted
sdb2, swap, 8 GiB, encrypted
sdb3, root, BtrFS, 40 GiB, encrypted
sdb4, home, XFS, 175 GiB, encrypted
As far as I know, that is not currently supported. You can have the root file system part of an encrypted LVM, but there isn’t support for having a root partition directly encrypted. And that would not solve your problem, even if you could get it working. There would still be the problem that grub has to unencrypt, and then later the kernel has to unencrypt, with no way for grub to pass the encryption key to the kernel.