Você cometeu alguns erros, mas o principal problema está na onipresença e no grub. Basicamente, quando você define /
para ser uma partição criptografada e não cria uma partição separada para /boot
, o grub apresenta uma mensagem de erro como:
Eu sei que
/boot
está criptografado. Você precisa definirGRUB_ENABLE_CRYPTODISK=y
em/etc/default/grub
. Eu não farei isso por você, então vou falhar e sua instalação irá parar.
Uma visão geral do processo:
- Usamos o modo EFI.
- Instalamos em uma partição
/boot
não criptografada e em um btrfs/
criptografado usando o instalador padrão. - Após o término do instalador, nós
chroot
, fazemos algumas alterações importantes na configuração e reinstalamos o grub na Partição do sistema EFI e recriamos o initrd.
As etapas detalhadas:
- Inicialize a partir do disco de instalação do Ubuntu 16.04 (testado com o Xubuntu).
- Conecte-se à Internet e execute
sudo apt update && sudo apt upgrade
para atualizar os componentes do instalador - Use fdisk, gparted ou outra ferramenta para criar 3 partições:
- Uma tabela de partições do GPT
- Uma partição de 200MB que usaremos para a partição do sistema EFI
- Uma partição de vários gigabytes que eventualmente usaremos como nossa partição de permuta criptografada, mas que funcionará como nossa
/boot
não criptografada temporária - Uma partição criptografada que usa o restante do espaço
-
Prepare a partição criptografada
sudo cryptsetup luksFormat /dev/sda3 sudo cryptsetup luksOpen --allow-discards /dev/sda3 sda3_crypt sudo mkfs.btrfs /dev/mapper/sda3_crypt
-
Instale o Ubuntu
- Escolha "Outra coisa" quando perguntado sobre o tipo de instalação.
- Configure
/dev/sda1
comoEFI System Partition
- Configure
/dev/sda2
como ext2, formatado, com o ponto de montagem de/boot
- Configure
/dev/mapper/sda3_crypt
como btrfs com ponto de montagem de/
- Continue com a instalação.
- Depois de terminar, escolha ficar no sistema ao vivo (sem reinicialização).
-
Copie o conteúdo de
/boot
e faça umchroot
sudo mount -o subvol=@ /dev/mapper/sda3_crypt /target sudo mount /dev/sda2 /mnt # (Watch those trailing slashes! rsync is very sensitive to them.) sudo rsync -aXAH /mnt/ /target/boot/ sudo mount /dev/sda1 /target/boot/efi sudo mount --bind /dev /target/dev sudo mount --bind /proc /target/proc sudo mount --bind /sys /target/sys sudo chroot /target
-
(Tudo está acontecendo agora como
chroot
dentro de seu novo sistema.) -
Adicione uma linha a
/etc/default/grub
GRUB_ENABLE_CRYPTODISK=y
-
Adicione uma linha a
/etc/crypttab
. Você precisará primeiro executarsudo blkid
para encontrar o UUID de/dev/sda3
(NÃO/dev/mapper/sda3_crypt
).sda3_crypt UUID=<UUID of /dev/sda3> none luks,discard
-
Edite
/etc/fstab
e exclua a linha para/boot
. As outras entradas estão corretas. -
Instale o grub na partição do sistema EFI, gere um novo grub.cfg e prepare o initrd.
sudo grub-install --target=x86_64-efi --efi-directory /boot/efi --bootloader=ubuntu --boot-directory=/boot/efi/EFI/ubuntu --recheck sudo grub-mkconfig -o /boot/efi/EFI/ubuntu/grub/grub.cfg sudo update-initramfs -c -k all
-
(verificação dupla opcional) Verifique novamente se o /boot/efi/EFI/ubuntu/grub/grub.cfg contém linhas que incluem
insmod luks
,cryptomount -u <UUID>
, o entradas de inicialização corretas, etc. E verifique novamente se o seu initrd contém o bináriocryptsetup
. Se essas coisas estão faltando, é porque o grub-mkconfig e / ou update-initrd não conseguiram descobrir como os volumes que você montou ou especificou no fstab se relacionam com o volume criptografado no crypttab. (Há muita autoconfiguração mágica que eles fazem.) Isso pode acontecer se você divergir deste guia, por exemplo, usando o ZFS ou tentando particionar o sda3_crypt. -
(Se estiver usando o ZFS em vez do btrfs) o grub-mkconfig e o update-initrd não reconhecerão o ZFS. A solução alternativa envolve (durante o chroot, antes do grub-mkconfig / update-initrd) editar
/usr/sbin/grub-mkconfig
para adicionar|| true
à linha 139 (que começa comGRUB_DEVICE=
), adicionandoGRUB_DEVICE="/dev/mapper/sda3_crypt"
a/etc/default/grub
, criando o arquivo/usr/share/initramfs-tools/conf-hooks.d/forcecryptsetup
com o conteúdoexport CRYPTSETUP=y
e o arquivo/etc/initramfs-tools/conf.d/cryptroot
com o conteúdotarget=sda3_crypt,source=UUID=<UUID of sda3>,key=none,discard
. Tudo isso é uma adição às etapas que você executaria se não estivesse criptografando a partição do ZFS (como instalar os utilitários zfs userspace no sistema ativo e durante o chroot e excluir a linha que monta/
no fstab). -
Saia do chroot e reinicie em seu novo sistema
exit sudo umount /target/boot/efi sudo umount /target/dev sudo umount /target/proc sudo umount /target/sys sudo umount /target sudo reboot
-
Você deve ver o grub pedindo sua senha. Então você vai ter o menu de inicialização. Então, depois de escolher o Ubuntu, você será perguntado pela sua senha novamente. Então você estará no seu sistema. Leia mais sobre como o Ubuntu usa o BTRFS .
-
TODO : Crie uma troca criptografada (dica: envolve a edição de crypttab, fstab e re-running update-initrd).
- TODO : Salve sua senha para que você só precise digitá-la uma vez no grub. Isso está detalhado em: ligação
Upgrades
- Sempre que você instalar um novo kernel, deverá executar o comando
grub-mkconfig
personalizado. - Toda vez que você atualizar o grub, você deve executar o comando
grub-install
personalizado.
Outras notas
- É tentador criar um único volume criptografado e particioná-lo para criar a partição de troca (e possivelmente outras), mas isso não funciona. Tanto o grub-mkconfig quanto o update-initrd irão se comportar mal.No entanto, eu não tentei LVM.
- Pode ser tentador usar um arquivo de swap sobre o btrfs, mas provavelmente é uma má ideia por causa do desempenho.