- Manual passo a passo que orienta o usuário a construir um sistema Linux diretamente a partir do código-fonte
- A versão 12.4 foi publicada em 1º de setembro de 2025 e inclui o kernel 6.16.1, GCC 15.2.0, Glibc 2.42 e outros componentes recentes
- Cobre todo o processo, desde a configuração de uma cross-toolchain, instalação de ferramentas temporárias até a conclusão de um sistema inicializável
- Cada capítulo apresenta de forma detalhada a lista de pacotes, ordem de compilação, procedimentos de teste e configuração do sistema
- É um material importante para desenvolvedores e engenheiros de sistemas aprenderem a estrutura interna do Linux e criarem distribuições personalizadas
Visão geral
- Linux From Scratch (LFS) é um projeto concebido para que o usuário construa diretamente um sistema Linux sem depender de uma distribuição existente
- Explica passo a passo o processo de compilar e configurar todos os componentes a partir do código-fonte
- Foi criado por Gerard Beekmans, com edição e manutenção sob responsabilidade de Bruce Dubbs
- A documentação é oferecida no formato de manual online baseado em HTML, com links detalhados e versões de pacotes indicadas em cada etapa
Informações de versão
- A versão estável atual é a 12.4, publicada em 1º de setembro de 2025
- Os direitos autorais pertencem a Gerard Beekmans no período de 1999–2025
- O lançamento mais recente inclui pacotes principais como Linux 6.16.1, GCC 15.2.0, Glibc 2.42 e Python 3.13.7
Estrutura do documento
- O documento é composto por 5 partes principais: prefácio, preparação para a compilação, construção da cross-toolchain, compilação do sistema, configuração de boot e apêndices
- Prefácio (Preface): explica público-alvo, conhecimentos necessários, conformidade com padrões e motivos da escolha dos pacotes
- Preparação para a compilação (Preparing for the Build): inclui requisitos do sistema hospedeiro, criação de partições e configuração de variáveis de ambiente
- Construção da cross-toolchain do LFS e ferramentas temporárias (Building the LFS Cross Toolchain and Temporary Tools): configuração de compiladores essenciais como Binutils, GCC e Glibc
- Compilação do sistema LFS (Building the LFS System): instalação e configuração dos principais softwares do sistema
- Tornando o sistema LFS inicializável (Making the LFS System Bootable): compilação do kernel e configuração do GRUB
- Apêndices (Appendices): incluem abreviações, dependências, scripts de boot e licenças
Componentes principais
- A lista de pacotes inclui mais de 100 utilitários e bibliotecas essenciais
- Ex.: Coreutils 9.7, Bash 5.3, Perl 5.42.0, Python 3.13.7, OpenSSL 3.5.2, Systemd Udev 257.8
- Para cada pacote, as etapas de instalação, testes e limpeza (cleanup) são listadas de forma específica
- Inclui scripts de boot baseados em SysVinit 3.14 e configuração do carregador de boot GRUB 2.12
Configuração do sistema e inicialização
- O capítulo 9 (System Configuration) aborda rede, locale, gerenciamento de dispositivos e configuração de entrada
- O capítulo 10 (Making the LFS System Bootable) inclui a criação do
/etc/fstab, compilação do kernel e configuração do GRUB
- O capítulo 11 (The End) orienta sobre a reinicialização do sistema e materiais para estudo posterior
Apêndices e licença
- O apêndice D inclui as versões 20250827 dos scripts
boot e sysconfig
- O apêndice F especifica duas licenças: Creative Commons e MIT License
- Também oferece materiais de referência como lista de dependências, glossário e agradecimentos
Importância
- O LFS é um projeto educacional e de pesquisa que permite experimentar diretamente os princípios de composição e o sistema de compilação do Linux
- É usado por administradores de sistemas, desenvolvedores de distribuições e pesquisadores de segurança como referência padrão para construir um ambiente Linux mínimo
1 comentários
Opiniões do Hacker News
Começou em 1999 e usou até 2001, mas desistiu porque gerenciar dependências e recompilar tudo era trabalhoso demais
Na época, a documentação não era tão detalhada quanto hoje, então era preciso rastrear muita coisa manualmente, e havia muitos pacotes obscuros
Mesmo assim, foi divertido migrar para o Slackware e compilar manualmente pacotes como XFree86 e GNOME, além de contribuir com eles
Se tiver tempo, recomenda muito fazer isso. Sua forma de enxergar o Linux muda completamente
Hoje parece valer a pena tentar de novo em uma máquina virtual
O verdadeiro poder do LFS/BLFS está em poder ajustar o sistema para o seu próprio uso
Eu acompanho 4000 projetos com um script Ruby. Se o gem-coop se tornar uma alternativa ao rubygems.org comercial, pretendo republicar meu projeto
Nunca usei o sistema finalizado de verdade, mas valeu muito algumas noites investidas nisso
Acho que essa melhora no acesso à informação é uma das grandes razões para o crescimento do Linux
Quando era jovem, montar o LFS me ensinou que era possível acessar o computador até o nível mais baixo
Mas Gentoo e Arch também oferecem um efeito de aprendizado parecido, com muito menos tempo de instalação
Muita gente diz “vou de LFS em vez de Gentoo”, mas a maioria desiste no meio do caminho ou passa a odiar distribuições baseadas em código-fonte para sempre
Compara Slackware e LFS com Haskell, dizendo que ir longe demais para o extremo acaba se tornando improdutivo
O LFS tem documentação abundante, e o Slackware ficou para trás com o tempo, mas o esforço do Patrick foi impressionante
Eu recolhia peças de PCs 386/486 em um depósito de reciclagem de computadores em Seattle, montava as máquinas e instalava Linux
Cresci aprendendo Linux com esses computadores Frankenstein que eu mesmo fazia
Em um sistema baseado em RPM, os recursos transacionais do dnf permitem ver o histórico de instalação e fazer rollback, o que torna a administração muito mais prática
Depois de seguir o livro uma vez e montar um sistema operacional, fica mais fácil entender as diferenças entre outras distribuições e surge um senso de propriedade sobre o sistema
Como era compilação cruzada para ARMv6, foi muito difícil, mas rendeu muito aprendizado
Automatizou as builds com Jenkins e estruturou o sistema com scripts bash e Makefile
A imagem final tinha cerca de 40 MB, e isso por si só já dava orgulho
“nunca pule os testes”
Como até o glibc permite a falha de alguns testes, ela colocou uma mensagem parecida nos testes do próprio software
Ao ver o aviso “se você desrespeitar esta etapa, seu sistema pode quebrar”, achou que parecia uma distribuição Linux no estilo Dark Souls
Recompilar o kernel é difícil por causa da enorme quantidade de opções, mas esse tipo de processo de aprendizado faz parte do charme do Linux
É uma cultura difícil de ver em outros sistemas operacionais, especialmente no Windows
Fica a curiosidade se existe uma versão do LFS para BSD