Moon Flower Society > Linux From Scratch: conhecimento mínimo e roteiro completo para construir seu próprio Linux
Guia prático e aprofundado sobre o que aprender, preparar, construir, validar e manter ao criar um sistema Linux From Scratch.
Posted July 21, 2026. Markdown. Tags: pesquisa, linux, linux-from-scratch, lfs, compilacao, administracao-de-sistemas.
Construir um Linux From Scratch (LFS) significa partir de uma distribuição Linux já funcional, compilar uma cadeia de ferramentas isolada e então usá-la para montar um novo sistema GNU/Linux, pacote por pacote. O objetivo deste guia é explicar o mínimo que você precisa saber antes de começar, o que deve fazer durante cada etapa, como reconhecer erros e o que ainda falta depois que o LFS finalmente inicia.
Este texto é um mapa de execução e aprendizagem. Ele não substitui os comandos exatos do livro oficial: as versões, correções e opções de compilação formam um conjunto testado e precisam ser seguidas na mesma edição. Em 21 de julho de 2026, a edição estável recomendada é o LFS 13.0 com systemd, publicada em 5 de março de 2026. O ramo de desenvolvimento muda continuamente e não é a escolha certa para a primeira construção.
O caminho mais seguro para a primeira experiência é construir o LFS em uma máquina virtual x86-64, com firmware BIOS legado, 4 vCPUs, 8 GB de RAM, um disco virtual separado de 60 a 80 GB e uma distribuição Linux recente como hospedeira. Tire snapshots antes do particionamento, antes do chroot e antes de instalar o carregador de inicialização. Só use hardware real depois de concluir uma construção inteira com sucesso.
O projeto oficial recomenda pelo menos quatro núcleos e 8 GB de memória. Máquinas menores ainda podem funcionar, mas compilam mais lentamente. O sistema base pronto não é uma distribuição de desktop: ele entrega toolchain, bibliotecas, shell, utilitários, kernel, systemd, configuração básica e boot. Navegador, interface gráfica, áudio, Wi-Fi conveniente, impressão, Bluetooth, sudo, firewall, servidor SSH e muitos outros recursos pertencem ao Beyond Linux From Scratch (BLFS).
Atenção à segurança: “estável” significa uma edição coerente e testada, não um conjunto de fontes congelado que permanece seguro para sempre. A página de avisos do LFS e BLFS já registra correções posteriores ao lançamento 13.0, inclusive de gravidade alta ou crítica. Antes de baixar os fontes, aplique exatamente as substituições e patches indicados para a edição; não use cegamente o pacote original nem troque por qualquer versão mais nova.
Os cinco princípios que mais evitam fracassos são:
root no hospedeiro, usuário lfs, ou root dentro do chroot.$LFS, ponto de montagem, usuário atual e diretório atual antes de comandos de instalação ou remoção.Se a finalidade for apenas possuir um Linux pequeno e personalizado, Arch, Gentoo, Debian minimal ou Buildroot provavelmente resolverão com menos manutenção. Faça LFS principalmente para aprender como compilador, linker, libc, hierarquia de arquivos, chroot, kernel, init e boot se encaixam.
Esta pesquisa foi construída prioritariamente a partir do livro Linux From Scratch 13.0-systemd, do PDF oficial da mesma edição, do BLFS 13.0, das erratas, dos avisos de segurança, do FAQ e dos logs de compilação do projeto.
Foram separados três tipos de orientação:
Os comandos deste artigo servem para preparar e conferir o ambiente. Os comandos de compilação de cada pacote devem ser copiados da edição estável aberta durante a construção. Isso reduz um dos erros mais perigosos do LFS: combinar nomes de pacotes, patches e opções provenientes de edições diferentes.
Ao terminar o livro básico, você terá um sistema inicializável contendo, entre outros componentes:
O livro não baixa uma distribuição pronta e não “remasteriza” Debian ou Fedora. O hospedeiro fornece apenas o kernel em execução e as primeiras ferramentas. A construção cria uma toolchain própria, reduz progressivamente a dependência do hospedeiro, entra em chroot e recompila o sistema final dentro do novo ambiente.
LFS não oferece, por padrão:
Essas lacunas não são defeitos: o propósito do projeto é educativo. O BLFS continua onde o LFS termina e ensina a adicionar rede, segurança, armazenamento, servidores, interface gráfica, multimídia e aplicações.
LFS é excelente para aprender:
chroot;/dev, /proc, /sys e /run são disponibilizados;fstab e o bootloader trabalham juntos;Não é a rota mais eficiente para um servidor de produção. Um LFS exposto à internet exige que você acompanhe vulnerabilidades, reconstrua pacotes e controle dependências por conta própria.
Você não precisa ser especialista em C, mas deve operar confortavelmente no terminal. Se os itens abaixo forem desconhecidos, pratique primeiro em uma VM comum.
Você deve saber:
pwd, cd, ls e localizar arquivos;>, >>, <, 2>&1 e pipelines;root, sudo, su e shell de login;chmod, chown e umask;.tar.gz, .tar.xz e aplicar patches;configure, make e testes sem reagir a toda advertência como se fosse erro;man, info, --help e pesquisa no FAQ.Você precisa reconhecer:
/dev/sda, /dev/vda, /dev/nvme0n1 e suas partições;/etc/fstab;fdisk, parted, mkfs, wipefs e grub-install.Uma confusão entre o disco virtual do laboratório e o disco do hospedeiro pode apagar dados. Este é o principal motivo para a recomendação de uma VM com disco descartável.
Reconheça o fluxo típico:
código-fonte → configuração → compilação → testes → instalação
./configure make make check make install
Nem todos os pacotes usam exatamente esse sistema. O livro fornece as opções corretas para cada um. Você deve entender que:
configure descobre características e cria Makefiles;make executa regras e pode paralelizar tarefas;make check ou equivalente executa testes;make install grava arquivos no destino e, portanto, é a fase de maior risco quando o destino está errado;CC, PATH, LFS_TGT e opções --prefix, --host, --build ou DESTDIR mudam qual compilador é usado e onde o resultado é instalado.| Conceito | Significado prático no LFS |
|---|---|
| Hospedeiro | Linux já funcional usado para iniciar a construção. |
| Alvo | O novo sistema LFS que está sendo criado. |
$LFS |
Caminho raiz do alvo enquanto ele ainda é acessado pelo hospedeiro, normalmente /mnt/lfs. |
| Toolchain | Compilador, assembler, linker, libc, headers e ferramentas que produzem os binários. |
| Triplet de alvo | Identificador como x86_64-lfs-linux-gnu, usado para selecionar as ferramentas do alvo. |
| Cross-toolchain | Ferramentas executadas no hospedeiro, mas configuradas para produzir o sistema alvo. |
| Sysroot/DESTDIR | Técnicas para fazer a instalação cair na árvore do alvo e não no hospedeiro. |
chroot |
Troca a raiz visível do processo para $LFS; não é uma máquina virtual nem uma barreira de segurança. |
| Bibliotecas dinâmicas | Arquivos carregados em tempo de execução; caminho ou ABI errados impedem um binário de iniciar. |
| FHS | Convenções da hierarquia de diretórios, como /usr, /etc, /var e /home. |
| Init | Primeiro processo do espaço de usuário; nesta edição, systemd. |
| Bootloader | Programa que localiza e carrega o kernel; o fluxo principal do livro usa GRUB. |
| Firmware | Código externo necessário por certos dispositivos; normalmente é tratado depois no BLFS. |
Você não precisa escrever um kernel, desenvolver drivers, conhecer assembly profundamente ou programar em C com fluência. Porém, deve estar disposto a pesquisar termos e compreender por que cada fase existe. Copiar comandos sem saber em qual contexto eles atuam é a receita mais comum para contaminar o hospedeiro.
O livro tem como alvos principais x86 e x86-64. Para um desktop ou servidor atual, use x86-64 puro. O resultado padrão não executa binários de 32 bits; multilib é um projeto avançado e não deve ser acrescentado no primeiro LFS. ARM e outras arquiteturas exigem adaptações fora do caminho principal.
Use a edição estável com systemd. A página oficial informa que a edição SysV anterior não é mais mantida. Misturar instruções dos dois modelos quebra a configuração de inicialização e serviços.
| Ambiente | Vantagens | Limitações | Veredito inicial |
|---|---|---|---|
| VM | Snapshots, disco descartável, hardware previsível, console fácil | Compilação um pouco mais lenta; acesso físico limitado | Melhor escolha |
| PC secundário | Aprende firmware e drivers reais | Maior risco de boot e particionamento; recuperação trabalhosa | Depois da VM |
| PC principal | Desempenho máximo | Risco real aos dados e ao boot existente | Evite na primeira vez |
| Container | Rápido para experimentar toolchain | Não representa bem kernel, bootloader e boot real | Não serve para a experiência completa |
Para reduzir variáveis, configure a primeira VM com BIOS legado. O LFS principal ensina GRUB nesse fluxo. Em máquinas UEFI, o próprio livro direciona para as instruções de GRUB com UEFI no BLFS. O procedimento do BLFS não fornece Secure Boot pronto; portanto, essa proteção precisa ser desativada para o caminho documentado.
| Recurso | Mínimo prático | Recomendado para aprender com conforto |
|---|---|---|
| CPU | 2 núcleos | 4 a 8 vCPUs |
| RAM | 4 GB pode funcionar | 8 GB; 12–16 GB se houver folga |
| Disco do LFS | cerca de 30 GB utilizáveis | 60–80 GB para fontes, builds, logs e BLFS inicial |
| Swap | útil com pouca RAM | 2–8 GB, conforme o hospedeiro |
| Internet | necessária para fontes e consulta | conexão estável e downloads verificados |
Os quatro núcleos e 8 GB são a recomendação editorial oficial. Os tamanhos de disco acima são margem operacional desta pesquisa, não um mínimo oficial fixo: fontes descompactadas, árvores de compilação, logs, snapshots e pacotes do BLFS consomem espaço rapidamente.
Use Debian, Ubuntu, Fedora, openSUSE ou outra distribuição recente na mesma arquitetura do alvo. WSL não é a escolha ideal para a experiência completa porque boot, dispositivos, montagens e kernel têm particularidades. Uma distribuição Linux normal dentro de VirtualBox, VMware, KVM/QEMU ou Hyper-V é mais previsível.
Uma topologia simples:
Computador físico
└── Hipervisor
└── VM Linux hospedeira
├── Disco 1: distribuição hospedeira
└── Disco 2: alvo LFS
├── partição raiz ext4
└── swap opcional
Separar o disco hospedeiro do disco LFS deixa evidente qual dispositivo pode ser formatado. Ainda assim, confira os nomes: uma VM pode apresentar discos como /dev/sda e /dev/sdb, ou /dev/vda e /dev/vdb.
chroot conferida.Não tire um snapshot enquanto há gravações intensas sem usar o mecanismo consistente do hipervisor. Desligar a VM antes do snapshot é a opção mais simples.
mkfs ou grub-install, execute lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL e confira tamanho e modelo.Baixe ou mantenha abertas somente as referências da edição estável:
Anote no diário: LFS 13.0-systemd, publicado em 2026-03-05. Se o link stable-systemd passar a apontar para uma edição posterior no meio do trabalho, continue usando a URL versionada da edição 13.0 ou recomece conscientemente com a nova versão. Não migre pela metade.
Os nomes variam conforme a distribuição. Em Debian/Ubuntu, um ponto de partida comum é:
sudo apt update
sudo apt install bash binutils bison build-essential coreutils diffutils \
findutils gawk gcc g++ grep gzip m4 make patch perl python3 sed tar \
texinfo xz-utils wget
No Fedora, o grupo de desenvolvimento e os pacotes equivalentes fornecem a base:
sudo dnf group install "Development Tools"
sudo dnf install bash bison diffutils findutils gawk gcc gcc-c++ gzip \
m4 make patch perl python3 sed tar texinfo xz wget
Essas linhas são conveniências, não substituem a verificação oficial. Nomes de pacotes e grupos podem mudar. O critério decisivo é executar o script version-check.sh da seção Host System Requirements e corrigir tudo que ele marcar. O projeto também exige relações específicas: /bin/sh deve conduzir ao Bash, awk ao Gawk e yacc ao Bison ou a um wrapper compatível.
Não altere cegamente links fundamentais de uma distribuição ativa. Se o hospedeiro usa Dash como /bin/sh, a solução conservadora é escolher outra VM hospedeira ou aplicar exatamente o procedimento recomendado para essa distribuição, entendendo o impacto.
Antes de começar, salve:
uname -a
cat /etc/os-release
uname -m
gcc --version
ld --version | head -n1
df -hT
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL
Guarde também a saída integral do script de requisitos. Ao pedir ajuda, o projeto solicita a distribuição hospedeira, o resultado desse script, a seção ou pacote, o erro exato e qualquer desvio em relação ao livro.
No disco exclusivo do LFS, use:
/, ocupando a maior parte do disco;/home separada na primeira tentativa;Evite LVM, RAID, Btrfs avançado, criptografia e múltiplas partições até dominar o fluxo básico. Esses recursos podem ser adicionados em uma segunda construção.
Execute e confira:
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL
findmnt
Só então use a ferramenta de particionamento escolhida. Não há comando genérico seguro para formatar: /dev/sdX é apenas marcador. O dispositivo errado destrói dados. Em uma VM com um segundo disco de tamanho reconhecível, o risco fica muito menor.
O livro usa /mnt/lfs:
export LFS=/mnt/lfs
umask 022
echo "$LFS"
umask
O resultado esperado é /mnt/lfs e 0022 ou 022. Depois de criar o sistema de arquivos no dispositivo correto, monte-o conforme o livro, por exemplo:
sudo mkdir -pv "$LFS"
sudo mount -v -t ext4 /dev/PARTICAO_LFS "$LFS"
findmnt "$LFS"
PARTICAO_LFS precisa ser substituído pelo nome validado. Não cole o exemplo literalmente. A montagem do alvo não deve usar nodev nem nosuid, pois isso interfere em fases posteriores.
Crie o hábito de rodar isto ao retomar o trabalho:
whoami
pwd
printf 'LFS=%s\n' "$LFS"
findmnt "$LFS"
Essa verificação simples evita instalar no lugar errado, trabalhar como usuário incorreto ou continuar com a partição desmontada.
Crie $LFS/sources com o modo sticky definido pelo livro. Baixe os arquivos usando o wget-list-systemd da mesma edição e confira os hashes com o arquivo md5sums correspondente:
mkdir -v "$LFS/sources"
chmod -v a+wt "$LFS/sources"
wget --input-file=wget-list-systemd --continue --directory-prefix="$LFS/sources"
pushd "$LFS/sources"
md5sum -c md5sums
popd
Todos os itens devem ser encontrados e validados. Um hash divergente pode significar download interrompido, arquivo errado, versão misturada ou corrupção. Não “ignore e tente compilar”.
Antes do download, leia os avisos de segurança. O próprio livro alerta que versões vulneráveis podem ter sido removidas pelos autores e que uma substituição indicada pela equipe LFS pode ser necessária. Use a correção da errata ou do aviso oficial, não uma versão arbitrariamente mais nova.
Regras úteis:
sources;cp -R para duplicar fontes: timestamps e links podem ser alterados;Grande parte da dificuldade não está nos comandos, mas em saber quem deve executá-los e onde.
| Fase | Identidade | Ambiente | Risco principal |
|---|---|---|---|
| Preparar disco e diretórios | root no hospedeiro |
Hospedeiro, $LFS definido |
Formatar ou montar o dispositivo errado |
| Capítulos 5 e 6 | usuário lfs |
Shell limpo, PATH controlado | Usar ferramentas do hospedeiro ou instalar nele |
| Preparar sistemas virtuais | root no hospedeiro |
$LFS montado |
Montagens incompletas ou propagação incorreta |
| Capítulos 7 a 10 | root dentro do chroot |
Raiz do LFS | Confundir o chroot com o hospedeiro |
| Configurar GRUB | root, contexto indicado |
Disco explicitamente validado | Sobrescrever o bootloader errado |
lfsOs capítulos da toolchain são executados como usuário sem privilégios para limitar os danos de um caminho errado. A conta recebe acesso apenas às áreas necessárias e usa arquivos de inicialização que criam um ambiente previsível. Executar esses capítulos como root elimina essa proteção e pode instalar arquivos no hospedeiro.
Variáveis herdadas, aliases, caminhos adicionais e opções de compilador podem fazer os pacotes encontrarem bibliotecas externas. O livro configura .bash_profile e .bashrc do usuário lfs para usar um ambiente mínimo, PATH definido, locale previsível, LFS_TGT correto e paralelismo controlado.
Não leve para esse shell:
CFLAGS, CXXFLAGS, LDFLAGS “otimizados”;make, rm, cp ou compiladores;LD_LIBRARY_PATH personalizado;chroot não é isolamento de segurançaDepois de montar /dev, /proc, /sys e /run, o ambiente LFS compartilha o kernel e dispositivos do hospedeiro. Como root dentro dele, ainda é possível causar dano. O chroot muda a raiz dos caminhos para construir o sistema final em seu próprio contexto; ele não substitui VM, container seguro ou sandbox.
| Etapa | Capítulos | Resultado | Checkpoint essencial |
|---|---|---|---|
| Preparação | 1–4 | Hospedeiro verificado, disco montado, fontes íntegros, usuário lfs |
Script de requisitos limpo; hashes aprovados |
| Cross-toolchain | 5 | Binutils, GCC parcial, headers, Glibc e libstdc++ independentes | Teste do linker e caminhos do alvo corretos |
| Ferramentas temporárias | 6 | Shell e ferramentas básicas compiladas para o alvo | Executáveis pertencem ao alvo, não ao host |
| Entrada no novo sistema | 7 | Sistemas virtuais montados, chroot, estrutura e utilitários adicionais |
/, PATH e ferramentas apontam para o LFS |
| Sistema final | 8 | Toolchain e pacotes finais recompilados nativamente | Testes essenciais sem falhas inesperadas |
| Configuração | 9 | Rede, locale, console, relógio e systemd configurados | Arquivos coerentes com a máquina |
| Boot | 10 | Kernel, fstab e GRUB configurados |
Kernel inclui armazenamento e sistema de arquivos raiz |
| Fechamento | 11 | Identidade do sistema e reinicialização | Backup/snapshot e plano de recuperação prontos |
No início, o novo sistema não possui compilador nem biblioteca C. O hospedeiro é inevitável. A primeira passagem de Binutils e GCC cria ferramentas orientadas ao alvo; headers do Linux e Glibc formam a primeira base; a libstdc++ permite compilar C++. Depois, ferramentas temporárias são criadas para que o chroot consiga trabalhar. Finalmente, tudo é recompilado nativamente dentro do LFS, quebrando a dependência prática do hospedeiro.
Pular um passe ou reaproveitar diretórios configurados mistura caminhos, ABI e artefatos. Um erro pode aparecer somente muitos pacotes depois, por isso a ordem é parte do projeto.
$LFS=/mnt/lfs, defina umask 022 e monte o alvo.sources, baixe arquivos e verifique todos os hashes.tools, usuário e grupo lfs exatamente como no livro.lfs.Não prossiga se: $LFS estiver vazio, a partição não estiver montada, houver hash divergente, links do hospedeiro estiverem errados ou o script de requisitos acusar incompatibilidade.
Construa Binutils Pass 1, GCC Pass 1, Linux API Headers, Glibc e libstdc++ na ordem do capítulo 5. Essa é a fundação mais sensível.
Antes de cada pacote:
whoami # deve ser lfs
echo "$LFS" # deve mostrar /mnt/lfs
echo "$LFS_TGT"
echo "$PATH"
pwd # normalmente dentro de $LFS/sources ou árvore recém-extraída
Depois da Glibc, o livro faz testes de sanidade para confirmar o interpretador dinâmico e a pesquisa de includes. Não aceite um resultado “quase igual”: caminhos contendo diretórios inesperados do hospedeiro indicam contaminação.
Checkpoint: guarde o log de cada configure, compilação e teste; registre o tempo da primeira passagem de Binutils, usado como unidade SBU.
No capítulo 6, compile M4, Ncurses, Bash, Coreutils, Diffutils, File, Findutils, Gawk, Grep, Gzip, Make, Patch, Sed, Tar, Xz e as segundas passagens de Binutils e GCC, seguindo a lista exata da edição.
O uso de DESTDIR=$LFS, --host=$LFS_TGT e opções semelhantes é deliberado. Não remova essas partes por parecerem redundantes. Elas fazem o software ser produzido e instalado para o alvo.
Checkpoint: ao terminar, tire snapshot ou faça a cópia recomendada pelo capítulo de limpeza e salvamento. Essa base permite recuperar uma construção sem recompilar tudo, desde que restauração, montagens e donos sejam feitos corretamente.
chrootDe volta ao root do hospedeiro:
$LFS e a montagem principal;/dev;/proc, /sys, /run e os demais sistemas virtuais como indicado;chroot com ambiente explicitamente controlado.Após entrar, valide:
pwd
echo "$PATH"
ls /
mount
Dentro do chroot, / é o sistema LFS. $LFS deixa de ser necessário. Crie diretórios, links e arquivos essenciais; depois compile as ferramentas adicionais temporárias do capítulo 7.
Se desligar e retomar, as montagens virtuais precisam ser refeitas antes de entrar novamente. A seção oficial Building LFS in Stages detalha o que restaurar em cada faixa de capítulos.
No capítulo 8, compile as versões finais de todos os componentes. Leia o início do capítulo sobre gerenciamento de pacotes antes de instalar dezenas de pacotes: LFS não escolhe um método por você.
Para cada pacote:
Não use flags agressivas como -march=native, LTO ou otimizações copiadas do Gentoo na primeira construção. Primeiro obtenha um sistema reproduzível conforme a referência; personalize em uma segunda passagem.
O capítulo 9 transforma arquivos compilados em um sistema coerente. Você configurará:
/etc/hosts;Para português brasileiro, selecione uma locale UTF-8 efetivamente gerada e suportada, normalmente pt_BR.UTF-8. Não confunda locale de mensagens com layout do teclado. O mapa de console vale para o terminal virtual; um futuro KDE terá configuração própria.
Use hostname simples, em minúsculas e sem espaços. Em laboratório, evite nomes que colidam com máquinas reais.
O kernel precisa conter, embutidos ou disponíveis no momento certo:
/dev, devtmpfs e pseudo-terminais;Para a primeira VM, é mais simples compilar diretamente no kernel (Y) os drivers do controlador de armazenamento e do ext4. Se esses itens forem módulos (M) e você não tiver um initramfs correto, o kernel não encontrará a raiz e cairá em panic.
Use como ponto de partida a configuração do kernel hospedeiro somente se souber revisá-la; ela pode incluir recursos desnecessários ou depender de initramfs. Outra opção é make defconfig e ativar conscientemente o hardware apresentado pela VM. Salve o .config fora da árvore de build.
Crie o /etc/fstab usando UUIDs quando possível e confira-os com blkid. Um erro no dispositivo raiz, tipo do sistema de arquivos ou opções de montagem impede o boot.
No BIOS, siga o capítulo 10 da edição estável. A instalação do GRUB escreve no disco; valide novamente com lsblk. Em dual boot ou hardware real, não presuma que o livro preservará automaticamente a configuração existente.
No UEFI, não aplique o fluxo BIOS: instale as dependências e siga o procedimento específico do BLFS. Tenha uma mídia de recuperação e backup da partição EFI.
Antes de reiniciar:
/boot;grub.cfg;/etc/fstab;root;Uma enxurrada de warnings durante compilação pode ser normal; uma falha de teste precisa ser classificada. O livro afirma que testes de Binutils, GCC e Glibc têm importância especial. Algumas falhas são conhecidas e dependem do ambiente, por isso compare o resultado com os logs oficiais da edição 13.0.
| Resultado | Ação |
|---|---|
| Todos os testes passam | Registre e continue. |
| Falha explicitamente descrita como esperada no livro/log oficial | Registre a correspondência e continue quando autorizado. |
| Falha por falta de PTY, permissão ou montagem | Corrija o ambiente e repita; não trate como defeito do pacote. |
| Falha no toolchain sem correspondência oficial | Pare; procure contaminação, versão, patch, ambiente e paralelismo. |
| Comando de compilação termina com erro | Preserve log, descubra o primeiro erro real, limpe e reconstrua. |
| Apenas warnings | Leia o contexto; warnings comuns não equivalem a falha. |
O livro estima tempos em SBUs, medidos relativamente à primeira compilação de Binutils. Paralelismo acelera o processo, mas pode embaralhar logs, aumentar RAM consumida e expor dependências incorretas.
Comece com algo conservador, como quatro jobs quando houver quatro vCPUs e 8 GB. Use a forma indicada na edição para definir MAKEFLAGS. Se uma compilação falhar de maneira obscura, limpe a árvore e repita com -j1; não apenas rode make novamente em uma árvore parcialmente construída.
Quando houver dúvida:
$LFS/sources;Essa abordagem é mais lenta por minutos e economiza horas de investigação de uma árvore contaminada.
O LFS pode ser construído em várias sessões, embora o livro modele uma sessão contínua. Depois de reiniciar o hospedeiro:
$LFS também no shell de root quando necessário;umask 022;$LFS;su - lfs para obter o shell limpo;$LFS, $LFS_TGT, PATH e whoami;$LFS;$LFS como root no hospedeiro;/dev, /proc, /sys e /run conforme o capítulo 7;chroot com o comando completo do livro;Nunca dependa da memória. Mantenha um arquivo STATUS.md fora da raiz LFS com último capítulo, último pacote concluído, usuário esperado, snapshot atual, falhas aceitas e próxima ação.
Um registro mínimo por pacote:
Data/hora:
Livro e seção:
Pacote e versão:
Usuário/contexto: host root | lfs | chroot root
Diretório de trabalho:
Comandos copiados da edição:
MAKEFLAGS:
Resultado da compilação:
Resultado dos testes:
Falhas esperadas comparadas com:
Arquivos ou configurações alterados:
Desvios do livro:
Próximo passo:
Para capturar uma sessão interativa, script pode gerar um log, mas revise-o para não registrar senhas ou informações sensíveis:
script -a ~/lfs-build.log
Não cole senha em comandos e não compartilhe logs sem revisar hostname, caminhos pessoais, IPs, tokens e chaves.
| Sintoma | Causa provável | Verificação e correção |
|---|---|---|
| Arquivos aparecem no hospedeiro | $LFS vazio, DESTDIR ausente ou comando como root fora do contexto |
Pare, confira histórico e arquivos instalados; restaure snapshot se houver contaminação. |
| Compilador encontra headers do host | PATH ou opções de toolchain incorretas | Repita os testes de sanidade e reconstrua a partir de árvore limpa. |
configure: C compiler cannot create executables |
Linker, libc, alvo ou espaço em disco | Leia config.log; confira interpretador, permissões e df -h. |
| Muitos testes falham por PTY | /dev/pts ou sistemas virtuais incorretos |
Refaça as montagens conforme o capítulo 7 e consulte o FAQ. |
chroot: failed to run command /usr/bin/env |
Ferramenta temporária ou linker ausente | Volte ao checkpoint anterior; valide os capítulos 5 e 6. |
No such file or directory em binário existente |
Interpretador dinâmico inexistente ou arquitetura errada | Use file e readelf -l; confirme o caminho do loader. |
| Kernel panic: unable to mount root fs | Driver de armazenamento/fs ausente, parâmetro root= errado ou falta de initramfs |
Recompile com drivers essenciais embutidos e confira GRUB/UUID. |
| GRUB inicia, mas não encontra kernel | Caminho ou nome incorreto em grub.cfg |
Liste /boot, edite a entrada e mantenha mídia de recuperação. |
| Rede não sobe | interface, driver, firmware ou unidade systemd incorretos | Confira ip link, logs do kernel e configuração da edição. |
| Compilação morre aleatoriamente | Falta de RAM, OOM, temperatura, armazenamento ou paralelismo excessivo | Veja logs do kernel, reduza -j, ative swap e teste hardware. |
| Pacote seguinte falha após uma instalação “aceita” | Erro anterior ignorado ou árvore reaproveitada | Volte ao último checkpoint confiável; não empilhe correções casuais. |
| Permissões estranhas | umask, dono ou usuário incorreto |
Compare com o livro; corrija somente os caminhos afetados. |
O final de um log costuma mostrar apenas make: *** Error 2. Pesquise para cima por error:, fatal:, undefined reference, No such file, cannot ou pelo primeiro teste que falhou. Mensagens posteriores podem ser apenas consequências.
Ao pedir ajuda, informe:
-j1.Consulte primeiro o FAQ do LFS e as listas de discussão.
LFS e BLFS não impõem um gerenciador porque isso desviaria o objetivo educativo e nenhuma técnica atende todos os usuários. Porém, instalar tudo sem registro torna atualizações e remoções difíceis.
| Método | Vantagem | Limitação |
|---|---|---|
| Diário manual | Zero complexidade | Não sabe quais arquivos pertencem a cada pacote |
| Manifesto antes/depois | Registra arquivos novos | Pode confundir arquivos temporários e mudanças simultâneas |
DESTDIR + pacote tar |
Produz artefato reinstalável | Nem todo pacote aceita staging sem ajustes |
| Monitor de instalação | Captura mudanças no sistema | Pode perder scripts ou alterações indiretas |
Diretórios separados em /opt |
Rollback simples para alguns apps | Não funciona bem para componentes centrais e escala mal |
| Gerenciador próprio ou adaptado | Atualizações e consultas estruturadas | Grande projeto adicional; dependências são complexas |
| Reconstrução integral | Estado reproduzível quando automatizado | Custo de tempo e necessidade de scripts muito bem mantidos |
Para a primeira construção, adote pelo menos:
/etc;Não tente implantar APT ou DNF no meio do primeiro LFS. Concluir o sistema conforme o livro e só então estudar uma técnica de pacotes preserva o objetivo da experiência.
No primeiro boot, mantenha o console do hipervisor aberto. Não dependa de SSH.
uname -a
cat /etc/os-release
systemctl --failed
systemctl status
mount
findmnt
df -hT
free -h
ip link
ip addr
journalctl -b -p warning
Confirme:
/proc, /sys, /dev e /run presentes;Não reinstale tudo imediatamente. Use a mídia hospedeira:
/mnt/lfs;chroot;fstab ou GRUB;O snapshot anterior ao boot é uma proteção adicional, não substituto para entender a falha.
Um sistema que inicia ainda não está pronto para uso cotidiano nem para internet. A sequência conservadora no BLFS é:
sudo se desejado;make-ca;root e autenticação por senha quando possível;curl e ferramentas de download;Não instale um desktop inteiro antes de resolver certificados, rede, usuários, firmware, logs e atualização. Uma GUI pode esconder uma base insegura ou difícil de recuperar.
Em Debian ou Fedora, mantenedores transformam patches em pacotes e distribuem atualizações. No LFS, essa responsabilidade é sua. O capítulo final lembra que novos bugs e avisos aparecem regularmente e que o proprietário precisa acompanhá-los.
Semanalmente:
Mensalmente:
A cada nova edição LFS:
root fora do contexto indicado;O tempo varia com CPU, disco, paralelismo, testes e quantidade de erros. SBU é uma medida relativa: se Binutils Pass 1 levou dez minutos e outro pacote está estimado em 4,5 SBU, espere aproximadamente 45 minutos sob condições semelhantes. Não trate isso como garantia.
Para quem já administra Linux, uma expectativa realista é:
| Atividade | Faixa prática |
|---|---|
| Leitura e laboratório | 3–6 horas |
| Preparação e downloads | 1–3 horas |
| Toolchain e temporários | 4–12 horas |
| Sistema final e testes | 8–30 horas |
| Kernel, configuração e primeiro boot | 2–8 horas |
| Correções e diário | variável |
Espalhar o trabalho por vários dias é normal. O objetivo não é bater recorde, e sim conseguir explicar por que o sistema inicia.
file, ldd e readelf.$HOME.chroot de teste com uma ferramenta como debootstrap apenas para compreender o conceito — sem confundi-lo com LFS.$LFS contém o caminho correto.umask é 022.nodev/nosuid.lfs e ambiente limpo estão corretos.chroot/dev, /proc, /sys e /run foram montados conforme o livro.chroot compartilha o kernel do hospedeiro./etc/fstab aponta para volumes corretos.root foi definida.Para a primeira construção, use esta combinação: VM x86-64, BIOS legado, LFS 13.0-systemd, ext4, uma partição raiz, quatro vCPUs, 8 GB de RAM e 60–80 GB de disco. Siga o livro literalmente, registre cada etapa e mantenha snapshots nos marcos principais.
Não automatize a primeira tentativa. Digitar, ler e compreender os comandos é parte do valor do LFS. Na segunda construção, transforme seu diário em scripts pequenos e reiniciáveis, um capítulo por vez, sempre falhando imediatamente quando um comando retorna erro. Automação sem compreensão apenas reproduz erros mais rápido.
Ao encontrar um problema, resista à vontade de instalar uma versão mais nova ou buscar uma linha aleatória em um fórum. Verifique, nesta ordem: usuário atual, $LFS, montagem, PATH, versão do livro, hash da fonte, árvore limpa, errata, logs oficiais e FAQ. Grande parte das falhas nasce de contexto incorreto, não de um bug inédito.
Se o objetivo final for KDE Plasma, trate-o como uma segunda fase longa no BLFS. Primeiro conclua um LFS de console que inicializa repetidamente, possui rede, certificados, usuário comum, segurança básica e recuperação. Só depois avance para firmware gráfico, Mesa, Wayland/Xorg, áudio e Plasma.
O mínimo para construir LFS não é decorar comandos: é compreender os limites entre hospedeiro e alvo, preservar um ambiente de compilação controlado, respeitar a ordem da toolchain, validar testes e assumir a manutenção que uma distribuição normalmente faria por você.
Uma construção bem-sucedida deve produzir mais que um prompt de login. Você deve sair dela capaz de explicar como o primeiro compilador nasce, por que a Glibc é central, como o sistema se torna independente do hospedeiro, o que o chroot faz, por que o kernel precisa de certos drivers no boot e como o GRUB encontra a raiz. Se essas relações ficaram claras, o LFS cumpriu seu propósito.
O procedimento recomendado é simples em conceito: laboratório descartável, edição estável fixa, comandos oficiais, checkpoints frequentes, logs completos e nenhuma personalização prematura. Depois do primeiro boot, BLFS, segurança e política de atualizações deixam de ser opcionais se a máquina for realmente utilizada.
Pesquisa concluída em 21 de julho de 2026. A edição estável identificada foi o LFS 13.0-systemd, publicada em 5 de março de 2026. Pacotes, erratas e vulnerabilidades mudam depois da publicação; antes de iniciar ou retomar uma construção, confirme a edição estável, a errata e os avisos de segurança nos sites oficiais. Nunca altere a edição no meio da mesma construção sem reiniciar ou auditar integralmente as diferenças.
View the original Markdown file
Ideas | What changed | RSS | About | Text version
Pablo Murad <pablomurad@pm.me>