Linux From Scratch - Version 12.1-systemd
Chapter 4. Final Preparations
이전 위로 / 처음으로 다음
LFS 사용자 추가 SBU 설명

4.4. 환경 설정

두 개의 bash 셸 시작 파일을 새로 작성해서 작업 환경을 설정합니다. 사용자 lfs로 로그인한 상태에서 다음과 같이 새로운 .bash_profile을 만듭니다.

cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash
EOF

lfs 사용자로 로그온하거나 “-” 옵션이 포함된 su 명령을 사용하여 lfs 사용자로 전환한 경우, 해당 셸은 호스트의 /etc/profile(일부 설정 및 환경 변수가 포함되어 있을 수 있음)을 읽은 다음 .bash_profile을 읽는 로그인 셸입니다. .bash_profile 파일에서 exec env -i…/bin/bash 명령은 HOME, TERMPS1 변수를 제외하고 완전히 빈 환경을 가진 새 셸로 실행 중인 셸을 대체합니다. 이렇게 하면 호스트 시스템에 있지만 사용하길 원치 않거나 잠재적으로 위험한 환경 변수가 빌드 환경에 적용되지 않습니다.

새로운 셸 인스턴스는 non-login 셸로, /etc/profile 또는 .bash_profile 파일의 내용을 읽고 실행하지 않고 대신 .bashrc 파일을 읽고 실행합니다. 다음과 같이 .bashrc 파일을 생성합니다.

cat > ~/.bashrc << "EOF"
set +h
umask 022
LFS=/mnt/lfs
LC_ALL=POSIX
LFS_TGT=$(uname -m)-lfs-linux-gnu
PATH=/usr/bin
if [ ! -L /bin ]; then PATH=/bin:$PATH; fi
PATH=$LFS/tools/bin:$PATH
CONFIG_SITE=$LFS/usr/share/config.site
export LFS LC_ALL LFS_TGT PATH CONFIG_SITE
EOF

.bashrc 설정 설명

중요 몇몇 상용 배포판은 문서화되지 않은 인스턴스 /etc/bash.bashrcbash의 초기화 과정에 추가합니다. 이 파일은 중요한 LFS 패키지 빌드에 영향을 줄 수 있는 lfs 사용자 환경을 수정할 수 있습니다. lfs 사용자의 환경이 깨끗한지 확인하려면 /etc/bash.bashrc가 있는지 확인하고 있는 경우 이 파일을 다른 곳으로 옮기세요. root 사용자로 다음을 실행합니다.

[ ! -e /etc/bash.bashrc ] || mv -v /etc/bash.bashrc /etc/bash.bashrc.NOUSE
lfs 사용자가 더 이상 필요하지 않고 파일을 복원하길 경우(7장 시작 부분) /etc/bash.bashrc를 안전하게 되돌릴 수 있습니다.

8.35장 "Bash-5.2.21"에서 빌드할 LFS Bash 패키지는 /etc/bash.bashrc를 로드하거나 실행하도록 구성되지 않았으므로 완성된 LFS 시스템에서는 이 파일이 쓸모가 없다는 점에 유의하세요.

여러 프로세서(또는 코어)를 사용하는 많은 최신 시스템의 경우 명령줄 옵션이나 환경 변수를 통해 사용 가능한 프로세서 수를 make 프로그램에 알려주는 “parallel make”를 수행하여 패키지의 컴파일 시간을 줄일 수 있습니다. 예를 들어 인텔 코어 i9-13900K 프로세서는 8개의 P(성능) 코어와 16개의 E(효율성) 코어가 있으며, P 코어는 동시에 2개의 스레드를 실행할 수 있으므로 리눅스 커널에서 각 P 코어는 2개의 논리적 코어로 모델링됩니다. 결과적으로 총 32개의 논리 코어가 있습니다. 이러한 논리적 코어를 모두 사용하는 한 가지 확실한 방법은 make가 최대 32개의 빌드 작업을 생성하도록 허용하는 것입니다. 이는 make-j32 옵션을 전달하여 수행할 수 있습니다.

make -j32

또는 MAKEFLAGS 환경 변수를 설정하면 해당 내용이 명령줄 옵션으로 make에서 자동으로 사용됩니다.

export MAKEFLAGS=-j32

중요
숫자없는 -j 옵션을 make에 전달하거나 MAKEFLAGS같은 옵션으로 전달하지 마세요.그렇게 하면 make가 무제한으로 빌드 작업을 생성하여 시스템의 안정성에 문제를 일으킬 수 있습니다.

5장챕터 6에서 패키지를 빌드하는 데 사용할 수 있는 모든 논리 코어를 사용하려면 .bashrc에서 MAKEFLAGS를 설정하세요.

cat >> ~/.bashrc << "EOF"
export MAKEFLAGS=-j$(nproc)
EOF

모든 논리적 코어를 사용하지 않으려면 $(nproc)를 사용하려는 논리 코어 갯수로 설정하세요.

마지막으로 임시 도구 빌드를 위한 환경이 완전히 준비되었는지 확인하려면 bash 셸이 새로운 사용자 프로필을 다시 읽도록 합니다.

source ~/.bash_profile