1.1. LFS 시스템을 빌드하는 방법

LFS 시스템은 이미 설치된 Linux 배포판(데비안, OpenMandriva, 페도라 또는 OpenSUSE 등)을 사용하여 구축할 것이다. 이 기존의 리눅스 시스템(호스트)은 컴파일러, 링커, 셸 등 새로운 시스템을 구축하는 데 필요한 프로그램을 제공하는 출발점으로 활용된다. 이러한 도구를 사용하려면 배포판을 설치할 때 개발(development) 옵션을 선택하라.

컴퓨터에 따로 배포판을 설치하는 대신 상용 배포판의 라이브CD를 사용할 수도 있다.

이 책의 2장에서는 새로운 리눅스 네이티브 파티션과 파일 시스템을 만드는 방법을 설명한다. 그 새 파티션이 새로운 LFS 시스템을 컴파일하고 설치할 곳이다. 3장에서는 LFS 시스템을 구축하기 위해 어떤 패키지와 패치를 다운로드해야 하는지, 그리고 이를 새 파일 시스템에 저장하는 방법을 설명한다. 4장에서는 적절한 작업 환경의 설정을 논한다. 5장과 그 이후 작업을 시작하기 전에 알아야 할 몇 가지 중요한 문제를 설명하므로 4장을 주의 깊게 읽기 바란다.

5장 6장에서 실제 시스템을 구축하는 데 사용되는 기본 개발 도구(또는 툴체인)를 만들 다수의 패키지의 설치를 설명한다. 이러한 패키지 중 일부는 순환 의존성(예를 들어, 컴파일러를 컴파일하기 위해 컴파일러가 필요한 상황)을 해결하기 위해 필요하다.

5장에서는 Binutils와 GCC를 포함한 툴체인의 1단계를 빌드하는 방법도 설명한다 (다시말해 이 두 가지 핵심 패키지는 추후 재설치할 것이다). 다음 단계는 C 라이브러리인 Glibc를 빌드하는 것이다. Glibc는 앞서 구축된 툴체인 프로그램으로 빌드된다. 그리고 나서, 툴체인의 두 번째 단계를 빌드한다. 여기서, 툴체인은 새로 빌드된 Glibc과 함께 동적으로 링크될 것이다. 나머지 5장 패키지는 이 2단계 툴체인을 사용하여 제작된다. 이 작업이 완료되면 실행 중인 커널을 제외하고 LFS 설치 프로세스는 더 이상 호스트 시스템에 종속되지 않는다.

호스트 시스템에서 새 시스템을 분리하려는 이러한 노력은 불필요해 보일지 모른다. 이 작업을 수행하는 이유에 대한 전체적인 기술적 설명은 5.2절. “툴체인 기술 노트”에 수록되어 있다.

6장에서는 완전한 LFS 시스템을 구축한다. chroot(root 변경) 프로그램은 가상 환경에 들어가 루트 디렉토리가 LFS 파티션으로 설정될 새 셸을 시작하는 데 사용된다. 이는 재부팅 후 커널로 하여금 LFS 파티션을 루트 파티션으로 마운트하도록 지시하는 것과 매우 흡사하다. 이 시스템은 실제로 재부팅하지 않고, 대신 chroot을 사용한다. 왜냐하면 부팅 가능한 시스템을 만들려면 아직 당장은 필요하지 않은 추가 작업이 필요하기 때문이다. chrooting의 주요 장점은 LFS가 구축되는 동안 호스트 시스템을 계속 사용할 수 있다는 점이다. 패키지 컴파일이 완료되기를 기다리는 동안 컴퓨터를 평소처럼 계속 사용할 수 있다.

설치를 마치기 위해 7장에서 기본 시스템 구성을 설정하고, 8장에서 커널과 부트 로더를 설정한다. 9장은 이 책을 넘어 LFS 경험을 지속하는 것에 대한 정보를 담고 있다. 이 책의 절차들을 실행하고 나면 컴퓨터는 새로운 LFS 시스템으로 다시 부팅할 준비가 될 것이다.

여기까지가 전체적인 과정이다. 각 단계에 대한 자세한 정보는 다음 장과 패키지 설명에서 논의한다. LFS 모험에 나서면서 복잡해 보일 수 있는 설명들이 점차 명확해질 것이고, 모든 것이 제자리를 찾을 것이다.