4P by GN⁺ 3일전 | ★ favorite | 댓글 1개
  • 사용자가 리눅스 시스템을 직접 소스 코드로부터 구축하도록 안내하는 단계별 매뉴얼
  • 버전 12.4는 2025년 9월 1일에 공개되었으며, 최신 커널 6.16.1GCC 15.2.0, Glibc 2.42 등을 포함
  • 시스템 빌드를 위한 크로스 툴체인 구성, 임시 도구 설치, 부트 가능한 시스템 완성까지 전 과정을 다룸
  • 각 장은 패키지 목록, 빌드 순서, 테스트 절차, 시스템 설정을 세밀히 구분해 제공
  • 개발자와 시스템 엔지니어가 리눅스 내부 구조를 학습하고 맞춤형 배포판을 제작하는 데 중요한 자료

개요

  • Linux From Scratch(LFS) 는 사용자가 기존 배포판 없이 리눅스 시스템을 직접 빌드하도록 설계된 프로젝트
    • 모든 구성요소를 소스 코드에서 컴파일하고 설정하는 과정을 단계별로 설명
    • Gerard Beekmans가 창시하고, Bruce Dubbs가 관리 편집을 담당
  • 문서는 HTML 기반 온라인 매뉴얼 형태로 제공되며, 각 단계별로 세부 링크와 패키지 버전이 명시됨

버전 정보

  • 현재 안정 버전은 12.4, 2025년 9월 1일 공개
  • 저작권은 1999–2025년 Gerard Beekmans에게 있음
  • 최신 릴리스에는 Linux 6.16.1, GCC 15.2.0, Glibc 2.42, Python 3.13.7 등 주요 패키지 포함

문서 구조

  • 문서는 서문, 빌드 준비, 크로스 툴체인 구축, 시스템 빌드, 부팅 설정, 부록의 5개 주요 파트로 구성
    • 서문(Preface) : 대상 독자, 필요 지식, 표준 준수, 패키지 선택 이유 등 설명
    • 빌드 준비(Preparing for the Build) : 호스트 시스템 요구사항, 파티션 생성, 환경 변수 설정 등 포함
    • 크로스 툴체인 및 임시 도구 빌드(Building the LFS Cross Toolchain and Temporary Tools) : Binutils, GCC, Glibc 등 핵심 컴파일러 구성
    • LFS 시스템 빌드(Building the LFS System) : 주요 시스템 소프트웨어 설치 및 설정
    • 부팅 가능 시스템 완성(Making the LFS System Bootable) : 커널 컴파일과 GRUB 설정
    • 부록(Appendices) : 약어, 의존성, 부트스크립트, 라이선스 등 포함

주요 구성 요소

  • 패키지 목록에는 100개 이상의 핵심 유틸리티와 라이브러리가 포함
    • 예: Coreutils 9.7, Bash 5.3, Perl 5.42.0, Python 3.13.7, OpenSSL 3.5.2, Systemd Udev 257.8
  • 각 패키지별로 설치 절차, 테스트, 정리(cleanup) 단계가 구체적으로 나열
  • SysVinit 3.14 기반의 부트스크립트와 GRUB 2.12 부트로더 설정 포함

시스템 설정 및 부팅

  • 9장(System Configuration) 에서는 네트워크, 로케일, 장치 관리, 입력 설정 등을 다룸
  • 10장(Making the LFS System Bootable) 에서는 /etc/fstab 작성, 커널 빌드, GRUB 설정 과정을 포함
  • 11장(The End) 에서는 시스템 재부팅과 후속 학습 자료 안내

부록 및 라이선스

  • 부록 D에는 bootsysconfig 스크립트 버전 20250827이 포함
  • 부록 FCreative CommonsMIT License 두 가지 라이선스를 명시
  • 의존성 목록, 용어집, 감사의 글 등 참고 자료 제공

의의

  • LFS는 리눅스의 구성 원리와 빌드 체계를 직접 체험할 수 있는 교육용·연구용 프로젝트
  • 시스템 관리자, 배포판 개발자, 보안 연구자에게 최소 구성 리눅스 환경 구축의 표준 참고서로 활용됨
Hacker News 의견들
  • 리눅스 시스템의 내부를 배우기 위해 Linux From Scratch(LFS) 를 직접 구축했던 경험을 이야기함
    1999년에 시작해 2001년까지 사용했는데, 의존성 관리와 재컴파일이 너무 힘들어 포기했음
    당시엔 문서가 지금처럼 자세하지 않아 직접 추적해야 했고, obscure한 패키지도 많았음
    그래도 Slackware로 넘어가며 XFree86, GNOME 같은 패키지를 직접 빌드하고 기여했던 시절이 즐거웠음
    시간이 허락한다면 꼭 해보길 권함. 리눅스를 보는 눈이 완전히 달라짐
    • systemd 버전의 LFS도 있고, Gaming LFS나 자동 빌드 시스템 버전도 제공됨
    • 나도 1999년쯤 시도했는데, 당시엔 단순히 “이 명령어를 입력하라” 식으로 설명이 부족했음
      지금은 가상머신에서 다시 시도해볼 만한 가치가 있을 것 같음
    • Wayland는 사실 단순함. systemd보다 설정할 게 적음
      LFS/BLFS의 진짜 힘은 자신의 용도에 맞게 시스템을 조정할 수 있다는 점임
      나는 4000개 프로젝트를 Ruby 스크립트로 추적하고 있음. gem-coop이 상용 rubygems.org의 대안이 되면 내 프로젝트를 다시 공개할 예정임
    • 나도 고등학생 때(2005년쯤) 해봤는데, 수십 개 프로젝트를 빌드하며 시스템이 맞물리는 걸 배우는 경험이 정말 훌륭했음
      완성한 시스템을 실제로 쓰진 않았지만, 몇 번의 저녁 시간을 보낸 보람이 있었음
    • 그 시절엔 의존성을 직접 추적해야 했는데, 지금은 ChatGPT 같은 걸로 바로 답을 얻을 수 있음
      정보 접근성이 좋아진 게 리눅스 성장의 큰 이유라고 생각함
  • 이 프로젝트를 볼 때마다 업보트를 누름
    어릴 때 LFS를 만들며 컴퓨터의 가장 낮은 레벨까지 접근 가능하다는 걸 배웠음
    • 나도 1999년에 10대 시절에 해봤는데, 문제를 해결할 만큼 똑똑하면서도 시간이 많았던 완벽한 시기였음
    • 지금은 컴파일해야 할 게 더 많아졌음. LLVM, cmake, meson 같은 것들이 추가되어 빌드 시간이 길어졌지만 여전히 잘 작동함
  • 누군가 리눅스 배포판의 본질을 이해하고 싶다고 하면 항상 LFS를 추천함
    • 나도 리눅스 지식의 상당 부분을 여기서 배웠음
      다만 GentooArch도 비슷한 수준의 학습 효과를 주면서 설치 시간은 훨씬 짧음
    • LFS 덕분에 OS보다 sed, gcc CFLAGS, 부트스트래핑을 더 많이 배운 느낌임
  • “20 Years of Gentoo” 블로그에서 인용된 글을 공유함
    많은 사람들이 “Gentoo 말고 LFS로 가겠다”고 하지만 대부분 중간에 포기하거나 소스 기반 배포판을 영영 싫어하게 됨
    Slackware와 LFS를 Haskell에 비유하며, 너무 극단으로 가면 비생산적이 된다고 표현함
    • Haskell은 어렵지만 Slackware와 LFS는 단순함. 비교가 맞지 않다고 생각함
      LFS는 문서가 풍부하고, Slackware는 시대에 밀렸지만 Patrick의 노력은 대단했음
    • 나도 부분적으로 망가진 경험이 있음. 네트워크 스택이 프로그램에 따라 다르게 작동했는데, 그 뒤로는 다시 시도하지 않음
  • 2006년쯤 LFS 책의 종이판을 샀음
    시애틀의 PC 재활용 창고에서 386/486 PC 부품을 주워 모아 조립하고 리눅스를 설치했음
    그렇게 만든 Frankenstein 컴퓨터들로 리눅스를 배우며 성장했음
  • 25년 넘게 리눅스를 써온 입장에서, 지금은 LFS를 직접 빌드하는 건 시간 낭비라고 생각함
    RPM 기반 시스템을 쓰면 dnf의 트랜잭션 기능으로 설치 이력과 롤백이 가능해 관리가 훨씬 편함
    • LFS는 학습을 위한 훈련 과정임. 쉬운 게 목적이 아니라 OS의 가장 낮은 레벨을 드러내는 게 핵심임
    • LFS의 가치는 완성된 시스템이 아니라 이해 과정에 있음
      한 번 책을 따라가며 OS를 만들면, 다른 배포판의 차이점을 이해하기 쉬워지고 시스템에 대한 소유감이 생김
    • RPM 없이도 비슷한 기능을 구현할 수 있음. 나는 버전 관리된 AppDir을 쓰고, NixOS는 해시된 디렉터리와 nix로 상태를 보장함
    • “편한 길만 가라”는 조언에 대해, 새로운 걸 시도해보려는 의지를 꺾지 말자는 반응을 보임
  • 여러 댓글에서 언급된 BLFS(Beyond Linux From Scratch)이 링크에서 볼 수 있음
  • 2014년에 Cross-Linux From Scratch를 만들어 Raspberry Pi용으로 빌드했음
    ARMv6용 크로스 컴파일이라 매우 어려웠지만 배운 게 많았음
    Jenkins로 빌드 자동화를 하고, bash 스크립트와 Makefile로 시스템을 구성했음
    최종 이미지가 40MB 정도였는데, 그 자체로 뿌듯했음
  • glibc 테스트 챕터를 읽으며
    “테스트를 절대 건너뛰지 말라”는 문구가 인상 깊었음
    glibc도 일부 테스트 실패를 허용하니, 나도 내 소프트웨어 테스트에 비슷한 문구를 넣었음
    “이 단계를 어기면 시스템이 망가질 수 있음”이라는 경고를 보고 Dark Souls 같은 리눅스 배포판 같다고 느꼈음
    • 맞음, 정말 그런 느낌임
  • LFS/BLFS는 완벽하진 않지만 리눅스의 지식과 응용을 보여주는 좋은 예시임
    커널을 새로 컴파일할 때 옵션이 너무 많아 힘들지만, 이런 학습 과정이 리눅스의 매력임
    다른 OS, 특히 Windows에서는 보기 힘든 문화임
    혹시 BSD 버전의 LFS가 있는지 궁금함