Full disk encryption of Ubuntu for certain partitions at install time
Xen
list at xenhideout.nl
Sat Aug 5 17:48:49 UTC 2017
Sreyan Chakravarty schreef op 05-08-2017 18:02:
> I have two unencrypted partitions containing Windows 10. Now I want to
> install Ubuntu 16.04 into the remaining free space that I have, with
> full disk encryption ie. encrypted root, encrypted swap, and encrypted
> home.
Normally you would create an encrypted LVM partition, that is to say one
regular partition, encrypted with LUKS, then LVM (PV) in the opened
device, in the LVM your root, boot and swap. Which is what I would do
anyway, but I guess it depends.
To get that bootable the Grub obviously needs to be in your MBR usually?
Grub is capable of unlocking LUKS but that means you have to enter the
password in the (minimal) (or I would say, ugly) GRUB prompt.
At that point your /boot partition will be read and used for providing
the menu and booting your system. At that point it needs access to a
file to unlock this entire LVM partition because GRUB cannot pass it on
to the initrd, I think.
That means that in Ubuntu you need to have a /etc/crypttab that contains
a keyscript which is /bin/cat, or, (I am not sure about this) directly a
keyfile, in both cases there needs to be a keyfile that your initrd can
access, which means it is a keyfile that has to be copied to your
initrd.
Typically for me this has been manually set up.
Steps would have been:
1) GRUB_CRYPTODISK=y in /etc/default/grub
2) a file in /etc/initramfs-tools/hooks/ with a line like "cp
/root/keyfile ${DESTDIR}"
3) a /etc/crypttab with the line keyscript=/bin/cat and the required
file mentioned in the previous column.
4) you have to manually add this file (can be a random file from
/dev/urandom) to your LUKS container using "cryptsetup luksAddKey
/dev/sda5 /root/keyfile"
At that point your container has both a password and a keyfile that can
open it.
5) You need to regenerate your initramfs by now (update-initramfs -u).
6) /bin/cat also needs to be copied, like I said, I am not sure this is
even necessary but haven't tried without. Either it happens
automatically or you need another line in the hook script, but I think
it happens automatically.
This is basically what is necessary.
If this is not what you want then it gets more complicated.
You are going to depend on systemd opening multiple containers. Systemd
has no support for keyscripts but like I said, might not be necessary.
You don't want to enter your password three times, so you would have to
do the same keyfile trick in a sense. You would have 3 containers with
all the same keyfile.
Then a regular crypttab file should be capable of opening those.
Provided the key is mentioned in the crypttab.
Grub will open your boot device for itself, but the initrd will open the
root device and will also need to open the swap possibly, so I might be
a bit wrong there.
In any case to make it work with Grub, the keyfile needs to be in the
initrd, after which the initrd unlocks more stuff (most notably the root
device).
Sorry for the messy message; I just haven't tried without a keyscript
myself.
Regards.
More information about the ubuntu-users
mailing list