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

3.4 KiB
Raw Permalink Blame History

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