Skip to content

librefos/arch-bootstrap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Este repositório contém scripts para automatizar uma implantação
minimalista do Arch Linux para um sistema AMD Ryzen 7 5700G.  A
arquitetura baseia-se em um ambiente puramente X11 e no conjunto de
ferramentas suckless.

--- Arquitetura do Sistema e Justificativas ----------------------------

A inicialização utiliza o systemd-boot para integração UEFI nativa.
Imagens de Kernel Unificadas (UKIs) são construídas para empacotar o
kernel, initramfs, microcódigo e argumentos em um único executável.
Isso simplifica o Secure Boot via sbctl e evita adulterações.  A
partição EFI (ESP) recebe 1GiB para acomodar múltiplos UKIs.

O sistema raiz é criptografado com LUKS2 e vinculado ao TPM 2.0
(PCR 0 e 7) para descriptografia automática segura.  Internamente, é
formatado como Btrfs com subvolumes isolados (@, @home, @cache, @log)
para garantir que reversões de snapshots não destruam o cache do
pacman ou o histórico de logs.  O pacote snap-pac automatiza snapshots
seguros durante transações de pacotes.

O desempenho é otimizado através do zram-generator, que cria um swap
comprimido dinâmico em até metade da RAM, eliminando o desgaste do
NVMe.  O processador é fixado no governador de performance para
reduzir latência.  O PipeWire atua como servidor de áudio padrão,
ativado globalmente para todos os usuários.

Um gerenciador de exibição é omitido para evitar daemons redundantes.
Sessões X11 são inicializadas a partir do TTY via startx.  A rede é
gerenciada pelo systemd-networkd, com tráfego filtrado pelo UFW.

--- Fluxo de Execução dos Scripts --------------------------------------

A implantação ocorre em duas fases para manter um núcleo minimalista.

install.sh (Fase 1 - ISO Live)
  Apaga o disco, constrói a topologia Btrfs sobre LUKS2, inicializa os
  pacotes base e compila os UKIs.  Transfere os scripts da Fase 2 para
  o novo ambiente.

post_install.sh (Fase 2 - Sistema Inicializado)
  Aplica regras do UFW, matricula o TPM 2.0 e chaves do Secure Boot,
  configura o zram e políticas do Snapper.  Oferece prompts
  interativos para compilar PKGBUILDs e implantar dotfiles de forma
  automatizada.

--- Licença ------------------------------------------------------------

Copyright (C) 2026 Thiago C Silva.  Distribuído sob a licença GPLv3 ou
posterior.  Consulte o arquivo LICENSE para mais detalhes.


--- English Version ----------------------------------------------------

This repository contains scripts to automate a minimal Arch Linux
deployment for an AMD Ryzen 7 5700G system.  The architecture relies
on a pure X11 environment and the suckless toolset.

--- System Architecture & Rationale ------------------------------------

The boot sequence utilizes systemd-boot for native UEFI integration.
Unified Kernel Images (UKIs) are built dynamically to package the
kernel, initramfs, CPU microcode, and boot arguments into a single
EFI executable.  This simplifies Secure Boot enrollment via sbctl and
prevents tampering.  The EFI partition is allocated 1GiB to comfortably
accommodate multiple UKIs.

The root filesystem is fully encrypted using LUKS2 and bound to the
TPM 2.0 (PCRs 0 and 7) for secure, automatic decryption.  Inside the
encrypted boundary, it is formatted as Btrfs with isolated subvolumes
(@, @home, @cache, @log).  This isolation guarantees that restoring a
root snapshot does not inadvertently downgrade cached packages or
destroy recent log history.  The snap-pac package automates protective
snapshots during pacman transactions.

System performance is optimized via zram-generator, which provisions
a dynamically compressed swap device in up to half the system memory,
eliminating NVMe wear-and-tear.  The CPU governor is locked to
performance to minimize state-transition latency.  PipeWire serves as
the default audio backend, globally enabled for seamless login.

A display manager is explicitly omitted to prevent background daemon
overhead.  X11 sessions are initialized manually from the TTY.  The
network stack relies on systemd-networkd, heavily restricted by UFW.

--- Script Execution Flow ----------------------------------------------

The deployment is split into two distinct phases to maintain a minimal
core system.

install.sh (Phase 1 - Live ISO)
  Wipes the target disk, constructs the Btrfs on LUKS2 topology,
  bootstraps the base packages, and generates the UKIs.  It transfers
  the Phase 2 scripts to the new filesystem before reboot.

post_install.sh (Phase 2 - Booted System)
  Enforces UFW rules, enrolls the TPM 2.0 and Secure Boot keys,
  configures zram, and establishes Snapper policies.  It utilizes
  interactive prompts to seamlessly compile custom PKGBUILDs and
  deploy dotfiles.

--- License ------------------------------------------------------------

Copyright (C) 2026 Thiago C Silva.  Distributed under the GPLv3 license
or later.  See the LICENSE file for details.

About

Bootstrap automatizado para Arch Linux com stack X11 minimalista (suckless), LUKS2 e TPM 2.0 | Automated Arch Linux bootstrap featuring a minimal suckless X11 stack, LUKS2, and TPM 2.0

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages