본문 바로가기
SW/Linux (Kernel)

Linux From Scratch 개발 노트 6 - 임시 시스템 구축(나머지 유틸리티)

by FastBench 2024. 8. 31.
반응형

 

참고 

github : https://github.com/NuttyJamie/LinuxFromScratch-for-Korean

 

GitHub - NuttyJamie/LinuxFromScratch-for-Korean: Korean translation of the LFS project.

Korean translation of the LFS project. Contribute to NuttyJamie/LinuxFromScratch-for-Korean development by creating an account on GitHub.

github.com

html 문서 : https://rawcdn.githack.com/NuttyJamie/LinuxFromScratch-for-Korean/88bdabae8abf2fad511b497b0dc676e6ac95b965/9.1/BOOK/HTML/index.html

 

Linux From Scratch

 

rawcdn.githack.com

 

TCL

이 패키지와 다음 2개(Expect와 DejaGNU)는 GCC, Binutils 그리고 다른 패키지의 테스트 스위트 실행을 지원하기 위해 설치된다. 테스트 목적으로 3개의 패키지를 설치하는 것은 과도해 보일 수 있지만, 가장 중요한 도구가 제대로 작동하고 있다는 것을 확인하는 것은 필수는 아니더라도 매우 안심할 수 있는 일이다. 이 장에서 테스트 스위트를 실행하지 않더라도(필수 사항이 아님), 6장의 테스트 스위트를 실행하기 위해 필요하다.

tar -xvzf tcl8.6.10-src.tar.gz
cd tcl8.6.10

cd unix
./configure --prefix=/tools

TCL 테스트 스위트를 실행한다.

TZ=UTC make test

make install

 

chmod -v u+w /tools/lib/libtcl8.6.so
make install-private-headers
ln -sv tclsh8.6 /tools/bin/tclsh

이후 디버깅 기호를 나중에 지울 수 있도록, 설치된 라이브러리르 쓰기 기능으로 설정

Tcl 의 헤더 설치, (expect 패키지 빌드시 사용)

심볼릭 링크를 생성한다.

 

Expect

tar xf expect5.45.4.tar.gz
cd expect5.45.4

cp -v configure{,.orig}
sed 's:/usr/local/bin:/bin:' configure.orig > configure

Expect 의 configure 스크립트가 호스트 시스템에서 찾을 수 있는 /usr/local/bin/stty 가 아닌 /bin/stty 를 사용하도록 강제한다. 이를 통해 test suite 툴을 툴체인의 최종 빌드에서 사용할 수 있게 된다.

./configure --prefix=/tools       \
            --with-tcl=/tools/lib \
            --with-tclinclude=/tools/include

 

--with-tcl=/tools/lib

이 옵션을 통해 configure 스크립트가 호스트 시스템에서 기존 것을 찾는 대신 임시 도구 위치에서 Tcl을 찾을 수 있다.

--with-tclinclude=/tools/include

Expect가 Tcl의 내부 헤더를 어디서 찾을지 확실하게 지정한다. 이 옵션을 사용하면 Tcl의 헤더 위치를 자동으로 검색하지 않으므로 configure에 실패하는 상황을 방지할 수 있다.

make
make test
make SCRIPTS="" install

호스트는 LFS 통제하에 있지 않기 때문에 test 는 실패할 수 있다.

SCRIPTS="" 매크로를 통해 필요하지 않은 추가적인 Expect 스크립트의 설치를 방지한다.

 

설치된 프로그램들: expect
설치된 라이브러리: libexpect-5.45.so (/tools/lib/expect5.45.4/libexpect5.45.4.so)

 

DejaGNU

DejaGNU 패키지는 다른 프로그램들을 테스트하기 위한 프레임워크를 담고 있다

tar xf dejagnu-1.6.2.tar.gz
cd dejagnu-1.6.2

./configure --prefix=/tools
make install
make check

 

설치된 프로그램:runtest (적합한 expect 셸을 찾아서 DejaGNU을 실행하는 래퍼(wrapper) 스크립트)

 

이후의 임시 시스템을 위한 패키지 설치는 단순 반복이기 때문에 아래 링크로 대체한다.

https://rawcdn.githack.com/NuttyJamie/LinuxFromScratch-for-Korean/88bdabae8abf2fad511b497b0dc676e6ac95b965/9.1/BOOK/HTML/chapter05/chapter05.html

 

 

소유권 변경

$LFS/tools 디렉토리가 lfs 유저의 소유로 되어 있을 경우, LFS 시스템이 완성된 후 lfs 유저가 존재하지 않거나, 동일한 유저 ID를 가진 다른 유저가 생길 수 있다. 이 경우 $LFS/tools 디렉토리와 그 안의 파일들이 새로운 유저에 의해 조작될 위험이 있다. 이를 방지하기 위해, 해당 디렉토리의 소유권을 root로 변경하는 것이 좋다.

chown -R root:root $LFS/tools

 

 

 

 

 

 

반응형

댓글