3.4 KiB
3.4 KiB
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_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