https://koreascience.kr/article/JAKO201710758144628.pdf ### 1. 준비 단계 - 리눅스 시스템(Ubuntu, Fedora...) - 준비된 스크립트 (version-check.sh, library-check.sh)를 실행하여 요건 만족 여부 확인 - 새 디스크 파티션 및 마운트 - root로 작업 - 새 파티션의 마운트 LFS=/mnt/lfs - 소스 파일 다운로드 - 디렉토리 $LFS/sources를 생성 - 필요한 프로그램 패키지 소스와 패치 파일 다운로드(70여종) - 향후 모든 빌드는 sources 디렉토리 아래에서 수행 - 임시 디렉토리 및 사용자 생성 - 임시 디렉토리 $LFS/tools를 생성 - 일반 사용자 계정을 생성 - tools 디렉토리에 임시 시스템을 구성하는 도구 설치 - -> 임시 시스템은 호스트 시스템과 분리되며, 최종 시스템과도 격리될 수 있다 - 최종 시스템이 구축되면 tools 디렉토리에 구축된 임시 시스템은 안전하게 제거 - 이 디렉토리에 대한 심볼릭 링크를 호스트의 루트(/) 디렉토리에 다음과 같이 걸어둔다 - > ln –sv $LFS/tools / (이 링크를 통해 호스트에서 빌드 시 디렉토리 /tools는 새 파티션의 tools 디렉토리를 가리키게 된다. ) (임시 시스템, 최종 시스템 구축 시 /tools는 이 디렉토리를 가리키게 된다) - 치명적인 작업 실수로 인한 피해를 예방하기 위해 일반 사용자 계정 lfs를 생성 - tools와 sources 디렉토리의 소유자 권한을 부여 - lfs가 로그인할 때 마다 쉘 환경이 초기화 되도록 두bash 시작 파일을 설정 ```bash # .bash_profile파일 (로그인 쉘이 열릴 때 실행됨) # 모든 기존 환경 변수를 무효화 # 세 가지 환경변수만을 정의 # 새 bash 프로그램으로 대체 exec env –i HOME=/root TERM=“$TERM” \ PS1=’\u:\w\$’ /bin/bash # .bashrc 파일 # 명령 위치 검색시 해쉬 테이블을 사용하지 않도록 한다. set +h umask 022 # LFS 마운트한 폴더 (LFS=/mnt/lfs) LFS=/mnt/lfs LC_ALL=POSIX # 시 시스템 구축에 사용되는 크로스 컴파일러 구축을 위해 target 시스템 이름을 환경변수 LFS_TGT로 정의 LFS_TGT=x86_64-lfs-linux-gnu # set +h 명령과 함께, 앞으로 임시 시스템에서 임시 툴들이 tools 디렉 토리에 설치되는 대로 이들이 즉시 사용될 수 있도록 한다 PATH=/tools/bin:/bin:/usr/bin export LFS LC_ALL LFS_TGT PATH ``` ### 2. 임시 시스템 구축 단계 - lfs로 수행 - 크로스 툴체인 설치 (크로스 정적 링커와 크로스 gcc 컴파일러로구성됨) ( 임시 시스템의 라이브러리를 크로스 컴파일 할 때 사용) - 정적 링커를 포함하는 binutils 패키지와 컴파일러를 포함하는 gcc 패키지를 컴파일 할 때, 크로스 툴체인을 얻기 위해 configure 옵션[6] 중 target 옵션을 triplet x86_64-lfs-linux-gnu으로 설정 (기본 triplet의 vendor 부분만을 pc에서 lfs로 살짝 수정 한 것)) - 임시 C 라이브러리 설치 - 툴체인 설치 ### 3. 최종 시스템 구축 단계 - 가상 커널 파일 시스템 준비 - chroot 환경 진입 - 표준 디렉토리 생성 및 필수 파일 생성 - 최종 C 라이브러리 및 최종 툴체인 설치 - 최종 시스템 패키지 설치 ### 4. 시스템 설정 및 부팅 준비 http://soopsaram.com/lfs/markdowns/0_Preface.html