Obsidian/Recognition/Programing/Linux/LFS(Linux From Scratch)/start.md

73 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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