Skip to main content

Como instalar o Debian 13 com Btrfs, criptografia completa de disco, snapshots e suporte a rollback para um sistema Linux resiliente.

Este guia passo a passo aborda subvolumes, Snapper, GRUB-Btrfs e recuperação segura em caso de falha nas atualizações.

 

O Debin GNU/Linux é conhecido por sua estabilidade e confiança. Com o Debian 13 "Trixie", você terá pacotes atualizados, melhor suporte do hardware e 5 anos de atualizações de segurança, fazendo-o ideal para estações de trabalho, servidores e ambientes de desenvolvimento.

Mas e se você pudesse adicionar uma camada extra de proteção nessa distribuição já tão consolidade e confiável? Você consegue isso com o sistema de arquivos BTRFS, que possibilita fazer snapshots instantâneos e restaurar todo o sistema de forma tão simples como o apertar de um botão. Uma atualização quebrou algo? Restaure em segundos! Quer testar uma alteração ariscada? Faça o snapshot e teste sem medo.

A Instalação gráfica do Debian ainda não dá suporte para a personalização dos subvolumes do Btrfs, então, nesse tutorial vamos usar o método do debootstrap para construir manualmente o sistema com:

    Sistema de arquivos Btrfs otimizado para a estrutura de subvolumes Snapper para automatização e gerenciamento dos snapshots Integração GRUB-Btrfs com o sistema de boot Swap com suporte para hibernação Restauração facilitada com o assistente Btrfs

    Seja você um usuário em busca de um sistema operacional robusto para uso diário, um administrador de sistemas que deseja opções confiáveis ​​de rollback ou um desenvolvedor que precisa fazer testes com frequência, este guia o ajudará a criar um sistema Debian resiliente.

    Prerequisitos:

     

      Debian 13 (Trixie) Live ISO: Faça o download da Live ISO (Não é a instalação ISO padrão) do site official Debian website. Sistema destino: Uma máquina física ou virtual para instalar o Debian. Conexão com a internet: An active and stable internet connection. Espaço em disco: Minimo de 20 GB para o sistema base; É recomendado 50 GB ou mais para o ambiente Desktop e o armazenamento adequado os snapshots.

      Sumário:

        Passo 1: Boot com o Live CD (escolhi o XFCE, mas você pode escolher qualquer outro) Passo 2: Formatar o disco e criar as partições GPT

         

        Definições das variáveis

         

        export DISK=/dev/sda          # Ajuste para o seu disco (ex: /dev/nvme0n1)
        export MAPPER=cryptroot       # Nome do mapeamento LUKS

         

        Particionamento e Criptografia

         

        # Limpeza e Partições
        sgdisk -Z $DISK
        sgdisk -og $DISK
        sgdisk -n 1::+512M -t 1:ef00 -c 1:'ESP' $DISK
        sgdisk -n 2::+1G    -t 2:8300 -c 2:'BOOT' $DISK
        sgdisk -n 3::       -t 3:8300 -c 3:'LINUX' $DISK
        
        # Formatação inicial
        mkfs.fat -F32 -n EFI ${DISK}1
        mkfs.ext4 -L BOOT ${DISK}2
        
        # LUKS
        cryptsetup luksFormat --type luks2 ${DISK}3
        cryptsetup open ${DISK}3 $MAPPER
        
        # Criar Filesystem no dispositivo mapeado
        mkfs.btrfs -L DEBIAN /dev/mapper/$MAPPER
        mount /dev/mapper/$MAPPER /mnt

         

        Btrfs e Subvolumes

         

        # Mount the Btrfs root
        mount -v ${DISK}2 /mnt
        
        # Create essential subvolumes
        btrfs subvolume create /mnt/@           # Root filesystem
        btrfs subvolume create /mnt/@home       # User home data
        btrfs subvolume create /mnt/@opt        # Optional software
        btrfs subvolume create /mnt/@cache      # Cache data
        btrfs subvolume create /mnt/@lightdm    # Display manager data (XFCE)
        btrfs subvolume create /mnt/@libvirt    # Virtual machines
        btrfs subvolume create /mnt/@log        # Log files
        btrfs subvolume create /mnt/@spool      # Spool data
        btrfs subvolume create /mnt/@tmp        # Temporary files
        btrfs subvolume create /mnt/@swap       # Swap file location
        
        # Unmount when done
        umount -v /mnt

        Note: Create the subvolume matching your display manager.
        For GNOME use @gdm3, for KDE use @sddm, and for XFCE use @lightdm. Only one is required depending on your desktop environment.

         

        Montagem Final para Instalação

        # Opções de montagem comuns
        export BTRFS_OPTS="compress=zstd:3,noatime,space_cache=v2"
        
        # Montar Raiz
        mount -o subvol=@,$BTRFS_OPTS /dev/mapper/$MAPPER /mnt
        
        # Criar diretórios
        mkdir -vp /mnt/{home,opt,boot/efi,var/{cache,lib/{lightdm,libvirt},log,spool,tmp,swap}}
        
        # Montar Partições Físicas
        mount ${DISK}2 /mnt/boot
        mount ${DISK}1 /mnt/boot/efi
        
        # Montar Subvolumes restantes
        mount -vo $BTRFS_OPTS,subvol=@home /dev/mapper/$MAPPER /mnt/home
        mount -vo $BTRFS_OPTS,subvol=@opt /dev/mapper/$MAPPER /mnt/opt
        mount -vo $BTRFS_OPTS,subvol=@cache /dev/mapper/$MAPPER /mnt/var/cache
        mount -vo $BTRFS_OPTS,subvol=@lightdm /dev/mapper/$MAPPER /mnt/var/lib/lightdm
        mount -vo $BTRFS_OPTS,subvol=@libvirt /dev/mapper/$MAPPER /mnt/var/lib/libvirt
        mount -vo $BTRFS_OPTS,subvol=@log /dev/mapper/$MAPPER /mnt/var/log
        mount -vo $BTRFS_OPTS,subvol=@spool /dev/mapper/$MAPPER /mnt/var/spool
        mount -vo $BTRFS_OPTS,subvol=@tmp /dev/mapper/$MAPPER /mnt/var/tmp
        
        # Mount swap subvolume without compression or CoW for reliability
        mount -vo defaults,noatime,subvol=@swap /dev/mapper/$MAPPER /mnt/var/swap
        
        # Verify the mounts
        lsblk -po name,size,fstype,uuid,mountpoints $DISK