6.1. 도입

이 장에서는 빌드 구역에 들어가 LFS 시스템 구축을 본격적으로 시작한다. 즉 우리는 임시 미니 리눅스 시스템으로 chroot 하고 몇 가지 최종 준비를 한 다음 패키지 설치를 시작할 것이다.

이 소프트웨어 설치는 간단하다. 많은 설치 지침들을 일반화시키고 간결하게 작성할 수 있었지만, 우리는 독자가 실수할 가능성을 최소화하기 위해 모든 패키지에 대한 전체 과정을 설명하기로 했다. 리눅스 시스템의 작동 원리를 파악하기 위한 핵심은 각 패키지가 무엇에 사용되며 이 패키지가 여러분(또는 시스템)에게 왜 필요한지 아는 것이다.

우리는 최적화하는 것을 권장하지 않는다. 그렇게 하면 프로그램이 약간 더 빨리 실행되도록 할 수 있지만, 프로그램을 실행할 때 문제를 일으키거나 컴파일에 어려움을 겪을 수도 있다. 최적화를 할 때 패키지를 컴파일하는 데 실패하면 최적화 없이 컴파일을 시도해서 문제가 해결되는지 확인하라. 최적화를 해서 패키지를 컴파일하는 데 성공하더라도 코드와 빌드 툴 간의 복잡한 상호 작용으로 인해 패키지가 잘못 컴파일되었을 위험이 있다. 또한 책에 명시되지 않은 값을 사용한 -march-mtune 옵션은 테스트되지 않았다. 이로 인해 툴체인 패키지들(Binutils, GCC 및 Glibc)에 문제가 발생할 수 있다. 컴파일러 최적화를 사용할 때 얻을 수 있는 작은 이득보다 리스크가 더 크다. LFS 처음 사용자는 맞춤형 최적화 없이 구축할 것을 권장한다. 그래도 시스템은 여전히 매우 빠르게 작동하며 동시에 안정적일 것이다.

이 장의 패키지 설치 순서를 엄격히 지켜서 어떤 프로그램도 뜻하지 않게 /tools를 참조하지 않도록 해야 한다. 같은 이유로, 여러 패키지들을 동시에 컴파일하지 않도록 하라. 병렬 컴파일을 하면 시간(특히 듀얼-CPU 컴퓨터)이 절약될 순 있지만 프로그램이 /tools에 대한 내부 참조를 가져, 해당 디렉토리가 제거되고 나면 프로그램이 작동하지 않을 수 있다.

설치 설명에 앞서 각 설치 페이지에는 패키지에 대한 간략한 설명, 패키지에 포함된 내용, 빌드에 걸리는 대략적인 시간, 이 빌드 프로세스 동안 필요한 디스크 공간 등의 정보가 제공된다. 설치 지침에 따라 패키지가 설치하는 프로그램 및 라이브러리 목록(이들에 대한 간략한 설명과 함께)이 있다.

[참고]

참고

SBU 값과 필요한 디스크 공간은 6장의 적용 가능한 모든 패키지의 테스트 스위트 데이터를 포함한다.

6.1.1. 라이브러리에 대해

일반적으로 LFS 편집자들은 정적 라이브러리의 빌드와 설치를 만류한다. 대부분의 정적 라이브러리의 원래 목적은 현대 리눅스 시스템에서 쓸모가 없어졌다. 게다가 정적 라이브러리를 프로그램과 링크하는 것은 해로울 수가 있다. 보안 문제를 해결하기 위해 라이브러리를 업데이트 해야하는 경우, 정적 라이브러리를 사용하는 모든 프로그램들을 새 라이브러리에 다시 링크해야 한다. 정적 라이브러리를 사용하는지는 항상 알 수 있는 것이 아니기 때문에, 관련 프로그램(또는 링크하는 데 필요한 절차)을 파악할 수조차 없을 수도 있다.

6장에서 우리는 대부분의 정적 라이브러리를 삭제하거나 설치를 비활성화한다. 보통은 configure--disable-static 옵션을 전달해서 이뤄진다. 그 외엔 대안이 필요하다. 특히 glibc와 gcc를 비롯한 일부 패키지는 일반적인 빌드 과정에서 정적 라이브러리 사용이 필수적이다.

라이브러리에 대한 더 자세한 논의는 BLFS 책의 라이브러리: 정적 or 공유?를 참고하라.