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
/bootestá criptografado. Você precisa definirGRUB_ENABLE_CRYPTODISK=yem/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
/bootnã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 upgradepara 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
/bootnã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/sda1comoEFI System Partition - Configure
/dev/sda2como ext2, formatado, com o ponto de montagem de/boot - Configure
/dev/mapper/sda3_cryptcomo 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
/boote faça umchrootsudo 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
chrootdentro de seu novo sistema.) -
Adicione uma linha a
/etc/default/grubGRUB_ENABLE_CRYPTODISK=y -
Adicione uma linha a
/etc/crypttab. Você precisará primeiro executarsudo blkidpara encontrar o UUID de/dev/sda3(NÃO/dev/mapper/sda3_crypt).sda3_crypt UUID=<UUID of /dev/sda3> none luks,discard -
Edite
/etc/fstabe 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-mkconfigpara 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/forcecryptsetupcom o conteúdoexport CRYPTSETUP=ye o arquivo/etc/initramfs-tools/conf.d/cryptrootcom 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-mkconfigpersonalizado. - Toda vez que você atualizar o grub, você deve executar o comando
grub-installpersonalizado.
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.