Linux From Scratch, 소스 코드로 직접 만드는 Linux
요약
본 글은 'Linux From Scratch (LFS)' 경험을 통해 얻은 깊이 있는 지식과 통찰을 공유합니다. LFS는 단순히 따라 하는 과정이 아니라, 시스템의 각 구성 요소와 의존성 간의 관계를 이해하는 데 도움을 주었습니다. 이를 통해 사용자는 원하는 사양에 맞춘 최소 배포판 구축이나 특수한 환경에서의 컴파일 능력을 습득할 수 있습니다.
핵심 포인트
- LFS는 단순히 따라 하는 과정이 아닌, 시스템 구성 요소의 원리를 이해하는 학습 도구이다.
- 최소한의 부트로더부터 시작하여 점진적으로 시스템을 확장하는 접근 방식이 효율적이다.
- LFS 경험은 특정 환경에 구애받지 않고 원하는 대로 커스터마이징된 배포판 구축 능력을 제공한다.
LFS는 접근 방식이 잘못됐다고 봄. 며칠에 걸쳐 수작업으로 따라 해봤지만, 패키지 컴파일을 기다리는 고생이 이해로 이어지지는 않았음. 달걀과 설탕을 정해진 비율로 넣을 줄만 알 뿐 왜 그 비율이어야 하는지는 모르는 요리법 따라 하기와 비슷했음.
한 번에 받아들여야 할 것이 너무 많음. 왜 필요한지도 모른 채 교차 컴파일 도구 모음부터 만들고, 부팅할 때 가장 먼저 만나는 부트로더는 맨 마지막에 추가함.
차라리 필요성을 발견할 때마다 하나씩 추가하는 방식이 낫다고 봄. 부트로더부터 작동시키고, 커널과 initramfs를 불러오게 한 뒤, dracut을 도입하기 전에 아주 단순한 initramfs를 직접 만들어볼 수도 있음. 이렇게 하면 빠르게 부팅 가능한 시스템을 얻고, 탐색과 실험을 통해 각 구성 요소가 왜 필요한지 배울 수 있음.
반대로 LFS 덕분에 수동 패키지 컴파일과 GNU/Linux 구성 요소의 관계를 배웠고, 다른 이들이 하지 못하던 작업도 할 수 있게 됐음.
의존성을 함께 배포하거나 자동으로 내려받아 사용자 지정 옵션으로 정적 링크하는 앱을 만들고, vcpkg의 깊은 의존성에 숨어 있는 빌드 오류를 진단할 수 있게 됐음. 회사에서 쓰던 Intel MacOS X 10.5 같은 오래된 환경을 대상으로 최신 의존성을 사용하는 앱을 만들거나, 더 새로운 시스템에서 새 gcc를 부트스트랩하고 필요한 패치를 적용해 특이한 환경에서도 최신 프로그램을 컴파일할 수 있었음.
원하는 사양에 맞춘 최소 배포판과 Docker 컨테이너를 만들고, 주류 배포판이 지원을 끊은 하드웨어에서 최신 Linux를 실행하는 것도 가능해짐. 물리적으로 접근할 수 없는 클라우드 전용 서버에서는 RAM 디스크에 최소 배포판을 올리고 주 디스크를 마운트 해제한 뒤, 파티션을 다시 나누고 새 배포판을 설치하기도 했음. 그다음은 재부팅하고 기도하는 순서임.
운영체제 지원이 없는 독립 실행 환경용 교차 컴파일러를 만들고, Debian 안정판에 최신 KDE/XFCE를 빌드하거나 Debian용으로 설계되지 않은 Zimbra OSE를 올리는 데도 도움이 됐음.
오래전 인터넷 없이 LFS를 따라 할 때 가장 많이 배웠음. 서로 버전이 맞지 않는 Slackware와 Red Hat 소스 CD만 있었고, LFS의 버전도 CD와 달랐음. 그 뒤로는 빌드가 순순히 되지 않더라도 어디서든 무엇이든 빌드할 수 있게 됐음.
LFS는 요리책에 가깝고, 자기 Linux 시스템을 어떻게 조정할지 목표가 있을 때 가장 많이 배울 수 있음. 더 알고 싶은 지점에서 깊이 파고들고 정해진 경로를 벗어나면 됨.
부품이 어떻게 맞물리는지만이 아니라, 무엇을 바꿀 수 있고 어떻게 자신에게 더 잘 맞게 만들 수 있는지 알고 싶어야 함. 내가 해본 2000년에는 패키지의 공식 소스 코드 위치를 찾는 것부터 어려웠고, 컴파일·링크 오류를 해결한 뒤에야 초기화 RC 시스템을 고르고 설정할 수 있었음. 시스템이 자신에게 어떻게 기여해야 하는지 뚜렷한 기준을 갖고 조정할 기회를 찾는 태도가 필요함.
부트로더를 마지막에 추가하는 건 합리적임. 처음부터 부트로더를 만든다면 무엇으로 빌드하고, 어느 장치의 어떤 파일 시스템에서 무엇을 부팅할지 어떻게 정할 수 있을까? 루트 파일 시스템이 완성된 뒤에는 쉽게 알 수 있음.
조금씩 확장하는 방식은 앞 단계로 계속 되돌아가야 함. 반복해서 다시 시작하면 지루하고 답답해지며, 운영체제 전체를 완성하는 데도 훨씬 오래 걸림.
첫 화면에서 어디서부터 읽어야 하는지조차 바로 알 수 없는 UX를 보니 진짜 Linux 사용자들이 만든 게 분명함.
링크 중 LFS를 누르고, 사이드바의 "Read online"을 누른 다음 길을 잃었음. "Current Stable" 아래에서 정작 책 링크를 찾기 어려움. 정오표와 보안 권고, "stable LFS systemd"라는 링크만 보였는데, 혹시나 하고 누른 그 링크가 책이었음.
“LFS :: Linux From Scratch는 다른 모든 프로젝트의 기반이 되는 주된 책”이라는 안내를 보고, 여기서 시작하면 되겠다고 알아차리는 데 반초 정도 걸렸음.
Linux 배포판이 어떻게 구성되는지 배우고 싶다면 LFS를 해볼 만함. 읽을 분량은 꽤 많고, 나는 전체 과정을 Debian 가상 머신에서 진행했음.
지금 기준으로는 끔찍하게 느린 Celeron 넷톱에서 LFS를 몇 달간 운영하다가, 시스템 업그레이드 중 수습할 수 없을 만큼 꼬여버렸음. 그래도 이 과정에서 단련한 끈기 덕분에 나중에는 OCaml 기반 분산 시스템 Mina의 여러 플랫폼용 빌드 시스템까지 책임질 수 있었음.
뉴스 페이지에는 Bruce Dubbs — 2026/09/01이라는 날짜와 함께, Linux From Scratch 커뮤니티가 LFS 13.1 출시를 알린다는 문구가 있음.
대략 2002~2010년에는 LFS를 정말 해보고 싶었음. 하지만 2004년부터 약 22년간 Gentoo를 사용하면서 LFS에서 접할 만한 거의 모든 것과 그 이상을 겪은 듯함. 그래도 당시에 LFS를 해봤으면 좋았겠고, 그랬다면 시행착오가 좀 줄었을 것 같음.
나도 비슷함. LFS가 여기에 더해줄 것은 패키지 관리자 없이 빌드하는 과정, 즉 Portage의 도움 없이 해보는 정도라고 봄.
AI 자동 생성 콘텐츠
본 콘텐츠는 GeekNews의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기