Skip to content

Instantly share code, notes, and snippets.

@henriquepicanco
Last active October 31, 2024 16:05
Show Gist options
  • Save henriquepicanco/1a8e5ca1aa114aa4e6c25b791f8080dc to your computer and use it in GitHub Desktop.
Save henriquepicanco/1a8e5ca1aa114aa4e6c25b791f8080dc to your computer and use it in GitHub Desktop.
Um rápido guia de instalação do Ubuntu via deboostrap (ou seja, instalar o Ubuntu de forma semelhante ao Arch Linux).

Guia de Instalação do Ubuntu via debootstrap

Este é um guia de instalação do Ubuntu via debootstrap. Este método visa instalar o Ubuntu de forma semelhante ao Arch Linux. Este esquema abaixo criará um sistema com duas partições, uma para /boot/efi com exatos 512 MiB, e / usará o resto com o filesystem BTRFS. Os subvolumes serão /, /home, /var/cache/apt/archives, /var/log e /.snapshots, além de usar o systemd-boot como bootloader do sistema.

Passo 1. Instalação via Live-CD

Podemos usar um Live-CD do Ubuntu para isto. Não precisa ser exatamente um Live-CD da versão que deseja usar, ou seja, pode-se usar o Live-CD do Ubuntu 24.10 para instalar o Ubuntu 24.04 LTS, e o inverso também é verdadeiro.

Pré-instalação

Particionar disco

# parted /dev/sdX mklabel gpt mkpart '"EFI system partition"' fat32 1MiB 513MiB mkpart '"Basic data partition"' btrfs 513MiB 100% set 1 esp on

Formatar partições

# mkfs.fat -F 32 /dev/sdX1
# mkfs.btrfs /dev/sdX2

Criar subvolumes BTRFS

# mount /dev/sdX2 /mnt
# btrfs subvolume create /mnt/@
# btrfs subvolume create /mnt/@home
# btrfs subvolume create /mnt/@packages
# btrfs subvolume create /mnt/@log
# btrfs subvolume create /mnt/@.snapshots

Montar partições

# mount -m -o noatime,compress=zstd:7,space_cache=v2,subvol=@ /dev/sdX2 /mnt
# mount -m -o noatime,compress=zstd:7,space_cache=v2,subvol=@home /dev/sdX2 /mnt/home
# mount -m -o noatime,compress=zstd:7,space_cache=v2,subvol=@packages /dev/sdX2 /mnt/var/cache/apt/archives
# mount -m -o noatime,compress=zstd:7,space_cache=v2,subvol=@log /dev/sdX2 /mnt/var/log
# mount -m -o noatime,compress=zstd:7,space_cache=v2,subvol=@.snapshots /dev/sdX2 /mnt/.snapshots
# mount -m -o umask=0077,dmask=0077 /dev/sdX1 /mnt/boot/efi

Instalação

Instalar os pacotes necessários

# apt install debootstrap neovim

Instalar o sistema

Troque VERSION abaixo pela versão do Ubuntu que você deseja usar. noble instalará o Ubuntu 24.04 LTS, oracular instalará o Ubuntu 24.10.

# debootstrap VERSION /mnt http://br.archive.ubuntu.com/ubuntu

Configurando os sitema

Impedir instalação de alguns pacotes

# nvim /mnt/etc/apt/preferences.d/ignored-packages

Neste arquivo, adicione:

Package: snapd cloud-init landscape-common ubuntu-advantage-tools grub* ubuntu-desktop*
Pin: release *
Pin-Priority: -1

Configurar o sources.list

# nvim /mnt/etc/apt/sources.list

No arquivo, edite para ficar semelhante ao seguinte. Atente-se que VERSION deve ser igual ao que foi especificado no comando debootstrap:

deb http://br.archive.ubuntu.com/ubuntu VERSION main restricted universe multiverse
deb http://br.archive.ubuntu.com/ubuntu VERSION-security main restricted universe multiverse
deb http://br.archive.ubuntu.com/ubuntu VERSION-updates main restricted universe multiverse

Preparar chroot

# mount -t proc /proc /mnt/proc
# mount -t sysfs /sys /mnt/sys
# mount --rbind /dev /mnt/dev
# mount --rbind /run /mnt/run
# mount --rbind /sys/firmware/efi/efivars /mnt/sys/firmware/efi/efivars

Entrar no chroot

# LANG=C.UTF-8 chroot /mnt /bin/bash

Atualizar pacotes

# apt update
# apt upgrade

Configurar relógio, idioma e teclado

# dpkg-reconfigure tzdata
# dpkg-reconfigure locales
# dpkg-reconfigure keyboard-configuration

Configuração de rede

# echo "Casper-MAGI-01" > /etc/hostname
# echo "127.0.0.1 Casper-MAGI-01" >> /etc/hosts

Usuário

# useradd -m -c "Henrique Picanço" -G sudo -s /bin/bash usuario
# passwd usuario
# passwd -l root

Instalar programas básicos ao sistema

# apt install network-manager btrfs-progs curl git btop man needrestart openssh-server tmux neovim

Configurar o netplan

O Ubuntu usa o Netplan para gerenciar conexões. Por padrão, ele não se conectará a nada, mas podemos configurar o Netplan com um arquivo em /etc/netplan.

# vim /etc/netplan/networkmanager.yaml

No arquivo, adicione:

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    ens1p0:
      dhcp4: true
      dhcp6: true

Configurar o /etc/fstab

# nvim /etc/fstab

No arquivo, edite para ficar semelhante ao seguinte:

PARTUUID=NUM_BTRFS  /  btrfs  noatime,compress=zstd:7,space_cache=v2,subvol=@  0 0
PARTUUID=NUM_BTRFS  /home  btrfs  noatime,compress=zstd:7,space_cache=v2,subvol=@home  0 0
PARTUUID=NUM_BTRFS  /var/cache/apt/archive  btrfs  noatime,compress=zstd:7,space_cache=v2,subvol=@packages  0 0
PARTUUID=NUM_BTRFS  /var/log  btrfs  noatime,compress=zstd:7,space_cache=v2,subvol=@log  0 0
PARTUUID=NUM_BTRFS  /.snapshots  btrfs  noatime,compress=zstd:7,space_cache=v2,subvol=@.snapshots  0 0
PARTUUID=NUM_VFAT  /boot/efi  vfat  umask=0077,dmask=0077  0 2

Por fim, use o sed para adicionar os PARTUUIDs das partições:

# sed -i "s/NUM_BTRFS/$(blkid -s PARTUUID -o value /dev/sdX2)/" /etc/fstab
# sed -i "s/NUM_VFAT/$(blkid -s PARTUUID -o value /dev/sdX1)/" /etc/fstab

Instalar o kernel

O comando abaixo instalará o Kernel mais recente disponível.

# apt install --no-install-recommends linux-{,image-,headers-}generic linux-firmware initramfs-tools efibootmgr

Bootloader

Primeiro, editamos o /etc/kernel/cmdline:

# echo "root=PARTUUID=$(blkid -s PARTUUID -o value /dev/sdX2) rootflags=subvol=@ rw quiet splash" > /etc/kernel/cmdline

Por fim, instale o systemd-boot e o plymouth. Ambos serão configurados automaticamente.

# apt install systemd-boot plymouth

Finalizando

# exit
# umount -l /mnt
# reboot
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment