6 pontos por GN⁺ 2026-01-22 | 1 comentários | Compartilhar no WhatsApp
  • 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

 
GN⁺ 2026-01-22
Opiniões do Hacker News
  • Conta a experiência de ter montado o Linux From Scratch (LFS) para aprender os detalhes internos de um sistema Linux
    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
    • Existe também a versão do LFS com systemd, além de versões como Gaming LFS e sistemas de build automatizado
    • Também tentei por volta de 1999, mas naquela época a explicação era insuficiente, basicamente no estilo “digite este comando”
      Hoje parece valer a pena tentar de novo em uma máquina virtual
    • Wayland na verdade é simples. Tem menos coisas para configurar do que o systemd
      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
    • Também fiz isso no ensino médio (por volta de 2005), e a experiência de compilar dezenas de projetos e aprender como o sistema se encaixa foi excelente
      Nunca usei o sistema finalizado de verdade, mas valeu muito algumas noites investidas nisso
    • Naquela época era preciso rastrear dependências manualmente, mas hoje dá para obter respostas na hora com coisas como o ChatGPT
      Acho que essa melhora no acesso à informação é uma das grandes razões para o crescimento do Linux
  • Dou upvote toda vez que vejo esse projeto
    Quando era jovem, montar o LFS me ensinou que era possível acessar o computador até o nível mais baixo
    • Também fiz isso em 1999, quando era adolescente, e era a fase perfeita: inteligente o bastante para resolver os problemas e com tempo de sobra
    • Hoje há ainda mais coisas para compilar. LLVM, cmake e meson foram adicionados, o que aumentou o tempo de build, mas ainda funciona muito bem
  • Quando alguém diz que quer entender a essência de uma distribuição Linux, eu sempre recomendo o LFS
    • Também aprendi uma parte considerável do que sei sobre Linux aqui
      Mas Gentoo e Arch também oferecem um efeito de aprendizado parecido, com muito menos tempo de instalação
    • Tenho a impressão de que, graças ao LFS, aprendi mais sobre sed, gcc CFLAGS e bootstrapping do que sobre o próprio sistema operacional
  • Compartilha um trecho citado no blog “20 Years of Gentoo”
    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
    • Haskell é difícil, mas Slackware e LFS são simples. Acho que a comparação não faz sentido
      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 também tive uma experiência parcialmente quebrada. A pilha de rede se comportava de forma diferente dependendo do programa, e depois disso nunca mais tentei de novo
  • Por volta de 2006, comprei a edição impressa do livro do LFS
    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
  • Como alguém que usa Linux há mais de 25 anos, hoje acho que montar o LFS manualmente é perda de tempo
    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
    • O LFS é um treinamento para aprendizado. O objetivo não é ser fácil, mas expor o nível mais baixo do sistema operacional
    • O valor do LFS não está no sistema final, e sim no processo de compreensão
      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
    • Dá para implementar recursos parecidos mesmo sem RPM. Eu uso um AppDir versionado, e o NixOS garante o estado com diretórios com hash e o nix
    • Em resposta ao conselho de “seguir sempre o caminho mais fácil”, há quem diga que não se deve desanimar a vontade de tentar algo novo
  • O BLFS (Beyond Linux From Scratch) citado em vários comentários pode ser visto neste link
  • Em 2014, alguém montou o Cross-Linux From Scratch para compilar para um Raspberry Pi
    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
  • Ao ler o capítulo de testes do glibc, uma pessoa ficou marcada pela frase
    “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
    • Sim, realmente passa essa sensação
  • LFS/BLFS não é perfeito, mas é um bom exemplo do conhecimento e da aplicação no Linux
    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