Gerard Beekmans December 16th, 1999
|
|||||||||||||||||||||||
이 글은 배포판을 전혀 사용하지 않고 필요한 소프트웨어 소스를 직접 가져와서, 여러분 자신만의 리눅스 시스템을 구성하는 절차를 설명한다. 차례 1. Introduction 1.1 What’s this all
about? 2. Software packages you need to download 3. Preparing a new partition 3.1 Creating a new
partition 4. Installing Sysvinit 4.1 Preparing Sysvinit
5. Installing a kernel 5.1 Note on ftp.kernel.org
6. Installing the GNU C Library 6.1 Preparing the
system for the GNU C Library installation 7. Installing the GNU CC compilers 7.1 Installing GCC
2.95.2 8. Installing login utilities 8.1 Installing agetty
+ login 9. Installing Vim 9.1 Preparing the
system for the Vim installation 10. Creating initial boot scripts 10.1 Preparing the
directories and master files 11. Reinstalling statically linked software 11.1 Installing the
Termcap library 12. Installing the rest of the basic system software 12.1 Installing E2fsprogs
13. Setting up basic networking 13.1 Installing Netkit-base
14. Setting up Email sub system 14.1 Preparing system
for Email sub system 15. Installing Internet Servers 15.1 Installing telnet
daemon + client 16. Installing X Window System 16.1 Creating missing
symlink 17. Installing Window Maker 17.1 Preparing the
system for the Window Maker installation 18. Configuring system for Internet 19. Copyright & Licensing Information
------------------------------------------------------------------------ 1. Introduction 1.1 What’s this all about? 내가 이 글을 쓰기 시작한 것은 여섯 달 전이다. 내가 그리 많은 리눅스 배포판을 사용한 것은 아니지만, 마음에 꼭 드는 배포판은 좀처럼 만날 수가 없었다. 모든 배포판이 각각 장점과 단점이 있지만, 나는 내가 사용해본 어떤 배포판에도 결코 만족할 수가 없었다.(비록 Debian처럼 내가 원하는 것에 매우 가까운 것도 있지만..) 결국 나는 다른 배포판을 전혀 사용하지 않고, 프로그램의 소스코드만을 모아 내 자신만의 리눅스 배포판을 만드는 방법들을 탐구하기로 마음 먹었다. 내가 발견한 것은 매우 복잡한 작업의 작은 일부였지만, 무척 신나는 일이고, 여러분도 시스템의 모든 구성요소를 설정하는 작업을 통해 정말 많은 것을 배우게 될 것이다. 이 일은 여러분이 다양한 소프트웨어들을 설정하기 위해, 아주 많은 매뉴얼을 읽도록 만든다. 그리고, 여러분 시스템의 모든 것을 다룰 수 있게 되는 멋진 선물을 받게 될 것이다. (물론, 생각은 그렇다) 여러분 자신의 리눅스 시스템을 구성하는 동안 여러분은 소프트웨어를 인스톨하는 과정과, 그 환경이 어떻게 설정되며 어떤 곳에 설정파일들이 놓이는지 정확하게 알아야 하기 때문이다.
1.2 New versions 이 글의 최근 버전은 항상 http://huizen.dds.nl/~glb/에서 찾을 수 있다.
1.3 Version history 1.0 (December 16th, 1999) - Initial release.
1.4 Contact info 내게 연락하고 싶다면 tts-sol@dds.nl로 메일을 보내면 된다. Gerard Beekmans,
------------------------------------------------------------------------ 2. Software packages you need to download 아래는 목록은 이 문서를 활용하기 위해 여러분이 다운로드해야 하는 모든 소프트웨어들과 그것들을 찾을 수 있는 사이트 들이다. 이 문서에서 어디서 소프트웨어를 다운로드 받을 수 있는지 사이트와 디렉토리 이름을 보여주지만, 최신 버전을 가져오고 소스를 다운 받는 일들은 여러분 자신이 해야 할 일이고, 여기서는 그런 작업들까지 설명해주지 않는다. 이 목록은 사용하는 순서대로 정리되어 있는데, 목록의 첫 번째 프로그램을 이 글에서 첫 번째로 만들어질 패키지라는 것을 뜻한다. Sysvinit : ftp://cistron.nl/pub/people/miquels/sysvinit/
------------------------------------------------------------------------ 3. Preparing a new partition
3.1 Creating a new partition 새로운 리눅스 시스템을 구성하기 전에, 우리는 먼저 새로운 시스템을 구성할 수 있도록 비어있는 리눅스 파티션을 만들어야 한다. 여러분 시스템에 이미 리눅스 네이티브 파티션(Linux Native partition)이 있다면 이 섹션을 건너뛰어도 좋다. 리눅스 파티션을 설정할 하드디스크이름을 옵션으로(여러분이 첫 번째 IDE 하드디스크에 새로운 파티션을 구성할 계획이라면 /dev/hda, 두 번째 하드디스크라면 /dev/hdb를 사용한다) fdisk 프로그램을 시작한다(또는 cfdisk 프로그램이 있다면 그것을 사용하는 것이 낫다.) 리눅스 네이티브 파티션을 만들었으면 파티션 테이블에 그 정보를 쓰고 (c)fdisk 프로그램을 끝낸다.(‘w’명령을 사용한다) 파티션 테이블이 업데이트되었고, 그것을 확실히 시스템에 인식시키기 위해 여러분의 시스템을 리부트해야 한다는 메시지를 만난다면, 작업을 계속하기 전에 시키는 대로 시스템을 리부트한다.
3.2 Creating an ext2 file system on the new partition 파티션이 만들어졌으면, 그 파티션에 새로운 ext2 파일시스템을 구성해야 한다. 이제부터는 새로 만들어진 이 파티션을 $LFS라 부르겠다. 여러분이 /dev/hda4에 파티션을 만들었고, /mnt/hda4 디렉토리에 그 파티션을 마운트했다면, 이 문서에서 $LFS/usr/bin에 파일을 복사하라고 말할 때 여러분은 /mnt/hda4/usr/bin에 복사하면 된다. 새로운 ext2 파일시스템을 만들기 위해 우리는 mke2fs 명령을 사용한다. mke2fs 명령의 옵션으로 $LFS만 주면 파일시스템이 만들어질 것이다.
3.3 Adding an entry to LILO 다음에 컴퓨터를 켤 때 이 파티션으로 부트할
수 있도록 /etc/lilo.conf 파일을 업데이트해야 한다. 다음과 같은
줄을 lilo.conf 파일에 추가한다.
/etc/lilo.conf 파일 편집이 끝나면 lilo를 실행해 설정정보를 업데이트 한다.
3.4 Creating directories $LFS 파티션에 최소한의 디렉토리 트리를 만들자. 다음 명령들을 따라하면 필요한 디렉토리들이
만들어질 것이다. 여러분은 디렉토리들을 만들기 전에 $LFS 파티션을
먼저 마운트해야 한다.
그리고, /usr/etc와 /usr/var는 /etc와 /var 디렉토리의 링크이다. 이 것은 단지 내 개인적인 취향이다.
3.5 Copying the /dev directory 우리는 mknod 명령을 사용해서 $LFS/dev 디렉토리
아래에 필요한 모든 개별적인 파일을 만들 수 있지만, 그런 일들은
매우 오랜 시간이 걸린다. 나는 간단하게, 현재 리눅스 시스템의
/dev 디렉토리를 카피해서 $LFS 파티션에 넣는 방법을 선택했다.
원래 속성, 권한, 심볼릭 링크, 그리고 소유권을 보호하기
위해 다음 명령을 사용해서 카피한다.
------------------------------------------------------------------------ 4. Installing Sysvinit 4.1 Preparing Sysvinit 일반적인 경우, 커널 로딩이 끝나고 다양한 시스템 구성요소들을 초기화한 후에 시스템 부트의 마지막 과정으로서 init 프로그램을 로드한다. 대부분의 리눅스 시스템에서 이 프로그램은 Sysvinit(System V 스타일의 init)이 쓰이는데, 바로 우리 LFS 시스템에 설치할 프로그램이다. Sysvinit 압축을 푼다. 마지막 네 줄에 $(ROOT) 변수를 적용한 다음에,
아마 이렇게 보일 것이다:
4.2 Configuring Sysvinit Sysvinit이 작동하기 위해서는, 환경설정 파일을
만들어야 한다. 아래 내용들을 담고 있는 $LFS/etc/inittab
파일을 만든다:
4.3 Copying passwd & group files 여러분이 inittab 파일에서 보듯이, 시스템이 부트될 때 init은 sulogin 프로그램을 시작하고, sulogin은 여러분에게 루트 패스워드를 물어볼 것이다. 이것은 LFS 시스템에 패스워드 파일이 있어야 한다는 것을 의미한다. 우리는 지금 사용 중인 리눅스 시스템의 패스워드와 그룹파일을 가져다 사용할 것이다. 패스워드는 암호화되어(encoded) 있으므로 지금 사용중인 passwd 파일을 카피해서 그것을 사용하는 것이 더 쉽다. 암호화된 패스워드를 다시 타이핑하는 대신 그대로 가져다 쓰면 된다. 이 방법을 사용하면 실수를 유발할 수 있는 불필요한 작업을 피할 수 있도록 해준다. /etc/passwd와 /etc/group 파일을 $LFS/etc/에 복사해
넣는다.
4.4 Installing a root shell sulogin이 여러분에게 루트 패스워드를 물어보고 여러분이 패스워드를 입력하면, 이제부터는 셸(shell)이 필요한 단계이다. 이 과정에서 대개는 bash 셸이 쓰인다. 아직 어떤 라이브러리도 설치되어 있지 않으므로, 우리는 Sysvinit에서 그랬던 것처럼 bash를 정적으로 링크해야 한다. Bash 패키지 압축을 풀어놓는다.
4.5 Testing the system 이 섹션을 무사히 마쳤으면, 시스템을 테스트하고 로그온 할 수 있는지 확인해야 한다. 여러분은 init 프로그램이 rcS와 rc 스크립트를 실행할 수 없다는 에러 메시지를 만나게 되겠지만 심각한 것은 아니다. 우리는 다음 단계에서 이 스크립트들을 설치할 것이다. 또 하나 주의할 것은 여러분이 시스템을 셧다운 할 수 없다는 것이다. shutdown 프로그램은 Sysvinit 패키지에서 제공되지만 다음과 같은 에러 메시지를 보여줄 것이다: “You don’t exist. Go away.” 이 메시지는 시스템이 패스워드 파일을 찾을 수 없다는 것을 나타낸다. shutdown 프로그램이 필요한 라이브러리에 정적으로 링크되어 있더라도, 여전히 우리가 다음 과정에 설치할 GNU C 라이브러리 가운데 일부인 nss 라이브러리 (Name Server Switch)에 의존성을 가진다. NSS 라이브러리는 (상황에 따라) 어디서 passwd 파일을 찾을 수 있는지 정보를 제공한다. 지금은 reboot -f 명령으로 시스템을 재부트할 수 있다. 이 명령은 shutdown 프로그램을 사용해서 셧다운 하고, 바로 다시 부트한다. 파일시스템이 read-only로 마운트되어 있으므로 이렇게 해도 시스템에는 어떤 손상도 입히지 않는다.(그렇기는 해도, 다음에 시스템을 마운트하려 할 때, 이전에 마운트 정보가 정리되지 않은 채 시스템을 꺼버렸으므로(‘not unmounted cleanly’), 파일 시스템을 안전하게 사용하려면 e2fsck 프로그램을 실행해서 정리해야 한다는 경고 메시지를 만나게 될 지도 모르겠다.)
------------------------------------------------------------------------ 5. Installing a kernel
5.1 Note on ftp.kernel.org 위 섹션 2에서 나는 여러분이 ftp://ftp.kernel.org/에서 새로운 커널을 다운로드할 수 있다고 설명했지만, 이 사이트는 대개 너무 많은 접속자가 물려 있고, 이 사이트 관리자도 여러분 근처 사이트에서 커널을 다운로드하는 편이 나을 거라고 권고한다. 여러분은 ftp://ftp.<country code>.kernel.org/ (예를 들어 ftp.ca.kernel.org처럼)라는 주소로 미러 사이트에 접속할 수 있을 것이다.
5.2 Configuring the kernel 커널 패키지 압축을 푼다. 커널 환경을 설정하는 방법 하나를 선택하고(설정방법에 대해 더 자세한 정보를 알고 싶으면 README 파일을 읽는다) 옵션을 설정하는데, 이 단계에서는 어떤 것도 모듈로 설정해서는 안된다. 당분간은 커널 모듈을 로드할 수 있는 소프트웨어가 없기 때문이다. 커널 환경설정이 끝나면 ‘make dep’ 명령을
실행한다.
5.3 Updating LILO /etc/lilo.conf 파일을 편집기로 열어 LFS 섹션으로
간다. (”3ㆍ3”에서 만든 부분)
5.4 Copying the new kernel source tree to $LFS 새로운 커널 소스 전체 트리를 $LFS/usr/src 아래 복사한다. ‘cp -av <kernel directory> $LFS/usr/src’ 명령으로 쉽게 복사된다.
5.5 Updating sysmlinks 대개 /usr/local/include/linux 디렉토리는 /usr/src/linux 디렉토리에 심볼릭 링크되어 있고, /usr/src/linux 디렉토리는 /usr/src/<kernel version>에 심볼릭 링크되어 있다. /usr/src/linux 디렉토리는 여러분이 이 장의 첫 부분에서 소스 패키지를 풀어놓은 디렉토리를 가리키고 있어야 한다. /usr/include/linux가 /usr/src/linux 디렉토리를 가리키게 할 수도 있다. - 이 방법은 여러분이 사용하는 배포판에 의존한다. LFS 시스템에서 아래 명령들을 실행해서 적당한
심볼릭링크들을 생성한다.
5.6 Testing the system 시스템을 재부트해서 LFS 시스템을 시작한다. 새로 인스톨한 커널이 이상 동작을 보이지 않는지 검사한다.(crashing 같은)
------------------------------------------------------------------------ 6. Installing the GNU C Library
6.1 Preparing the system for the GNU C Library installation 이 섹션에서 우리는 Glibc를 설치할 것이다. 그렇지만 이들 라이브러리를 설치하려면 먼저, 다른 소프트웨어들을 LFS 시스템에 설치해야 한다. 이것은 임시 작업 가운데 매우 작은 한 부분을 뜻하는데, Glibc와 GNU CC 컴파일러가 인스톨 된 다음 먼저 설치된 프로그램들이 동적으로 라이브러리에 링크되므로 이 후에 프로그램 모두를 다시 설치할 것이다. 먼저 모든 소프트웨어를 정적으로 구성하고 다시 그들을 동적으로 재구성하는 복잡한 과정을 거치지 않고도 이 작업을 할 수 있는 더 좋은 방법을 알고 있다면 부디 내게도 알려주기 바란다. 나는 다른 방법을 하나 더 아는데 전처리된 바이너리를 이용해 Glibc를 설치하는 것이다. 그렇지만 그 방법은 우리가 지금 하는 작업(소스만으로 리눅스 시스템을 구성하는)에 어울리지 않는다. 그러므로 그 방법은 선택하지 않겠다. 이 섹션에서 설치되는 모든 소프트웨어는 우리가 지금 작업중인 normal Linux 리눅스 시스템에서 컴파일되고 다시 LFS 시스템으로 복사될 것이다. 여러분은 이런 소프트웨어 설치가 대개의 경우 매우 쉽다는 것을 알게 될 것이다. 나는 또, 이런 소프트웨어는 모두 일상적인 것들로, 각각 어떤 일을 하는지 굳이 설명하지 않을 것이므로, 만약 어떤 곳에 쓰이는 프로그램인지 모른다면 그 때마다 여러분 스스로 README 파일과 다른 문서들(/usr/doc 또는 http://kldp.org/에서 제공하는 문서들)을 읽는 것이 좋겠다. Installing Make Make 패키지의 압축을 푼다. Installing Sed sed 패키지의 압축을 푼다. Installing Shell Utils Shell Utils 패키지의 압축을 푼다. Installing File Utils File Utils 패키지의 압축을 푼다. Installing Util Linux Installing Utils 패키지의 압축을 푼다. Installing Text Utils Text Utils 패키지의 압축을 푼다. Installing Tar Tar 패키지의 압축을 푼다. Installing Gzip Gzip 패키지의 압축을 푼다. 나는 Gzip 버전 1.2.4를 사용하는데 컴파일 작업을 진행하는 동안 에러 메시지를 만났다: basename에 설정된 자료형이 상충된다는 것이다. 여러분에게도 이 에러에 의한 문제가 생긴다면, 다음 과정을 통해 바로잡을 수 있다: gzip.h 파일을 편집기로 열어 다음 줄을
찾는다: 이 줄을 다음과 같이 바꾼다: extern char
*basename2 util.c 파일을 열어 다음 줄을 찾는다: 이제 패키지를 다시 컴파일 해보면(make LDFLAGS=-static 명령을 다시 실행한다.) 에러가 고쳐졌을 것이다. 뭐가 잘못되었을까? 내 시스템에서 표준 시스템 헤더 파일 가운데 하나가 ‘basename’이란 이름을 가진 함수였다.(내가 생각하기에 string.h였던 것 같은데 더 이상은 잘 모르겠다) Gzip 프로그램은 그 자체에 이 함수를 가지고 있고, 또 basename이란 이름을 똑같이 사용하므로 아마 여러분에게도 그런 문제가 생길 것이다. Gzip 소스에서 basename 함수를 basename2라는 이름으로 바꾸면 문제가 해결된다. .in이라는 꼬리(extension)를 가진 다음 파일들을 지운다: gzexe.in zdiff.in zforce.in zgrep.in zmore.in znew.in 다음 파일들을 $LFS/bin 디렉토리에 카피한다:
Installing Binutils BinUtils 패키지의 압축을 푼다. Installing Grep Grep 패키지의 압축을 푼다. Installing Bison Bison 패키지의 압축을 푼다. Installing Mawk Mawk 패키지의 압축을 푼다. Installing Find Utils Utils 패키지의 압축을 푼다. 나는 Find Utils 4.1 버전을 사용하는데 컴파일을 진행하는 동안 에러를 만나게 되었다. 치명적인 에러(fatal error)이기는 하지만 에러가 발생했을 때 컴파일 작업이 멈추지는 않았다. 여러분이 다음 에러를 만난다면 컴파일 과정에서 출력되는 정보들을 주의 깊게 살펴볼 필요가 있다: defs.h304: 역시 basename 자료형이 상충하는 것이다. 그런 에러 때문에 문제가 생긴다면 다음 과정을 통해 바로잡을 수 있다: find/Makefile 파일을 편집기로 열어 다음
변수를 찾는다: CFLAGS 그 줄을 다음과 같이 바꾼다: 이 줄은 두 줄로 분리된다 (“char *”가 첫 번째 줄이고 두 번째 줄은 “basename (fname)”이다) 그 줄을 다음과 같이 바꾼다: 굳이 두 줄로 계속 두지 않아도 되지만, 꼭 그렇게 하고 싶다면 여러분이 원하는 대로 두어도 상관없다. 여러분이 보기에 더 맘에 드는 것으로 정한다. 이제 패키지를 다시 컴파일 해보면(make LDFLAGS=-static 명령을 다시 실행한다.) 에러가 고쳐졌을 것이다. find 디렉토리에서 다음 파일을 $LFS/usr/bin 디렉토리로 복사한다: find Installing Diff Utils Diff 패키지의 압축을 푼다. Installing Ld.so Ld.so 패키지의 압축을 푼다. Installing Perl Perl 패키지의 압축을 푼다. 여러분은 아래 질문들을 제외하고, 모든
질문에 대해 기본 값을 그대로 두어도 된다.
Installing M4 M4 패키지의 압축을 푼다. Installing Texinfo Texinfo 패키지의 압축을 푼다. Installing Automake automake 패키지의 압축을 푼다. 다음 파일들을 $LFS/usr/share/automake 디렉토리에 카피한다: All *.am files 다음 디렉토리를 만든다: Installing Autoconf Autoconf 패키지의 압축을 푼다.
6.2 Installing the GNU C Library 우리는 최근 Glibc 버전인, 2.1.2를 설치하지 않고 이전 버전 2.0.7pre6을 사용할 것이다. 그 까닭은 glibc 2.1.2 버전이 최소한 gcc 2.8(또는 egcs 1.1)버전 이상을 요구하기 때문이다. 내 시스템에는 gcc 2.7.2.3 버전이 설치되어 있으므로 나는 glibc 2.1.2 라이브러리를 컴파일 할 수 없다. 그리고 또, 나는 지금 사용중인 리눅스 시스템을 gcc 2.95.2 버전으로 업그레이드할 생각도 없다.(gcc 2.95.2는 이 글을 쓰는 동안 가장 최근 버전이다.) 컴파일러를 업그레이드하는 것이 말처럼 그렇게 쉬운 일도 아니고 나는 내 시스템이 어쩌다 망가지는 것을 결코 바라지 않는다. 그러므로 나는 glibc 2.0.7pre6 버전을 설치해야 한다. 그렇지만, 우리는 gcc 2.95.2 컴파일러는 설치하게 될 것이다. 그리고, 어떤 소프트웨어는 gcc 2.95.2 버전에서는 컴파일되지 않는 것도 있으므로, 그런 것들을 위해 gcc 2.7.2.3 컴파일러도 설치해야 한다. (진짜 버그가 아닌데도 프로그램 상의 버그 때문에, gcc 2.95.2 컴파일러는 버그라고 판단한다. 그렇다고 컴파일러 버그는 아니고, C 표준이 바뀐 것이다(내가 제대로 이해하고 있다면 아마..) 아래는 glibc-crypt 패키지상의 노트이다. 아래는
ftp://ftp.gnu.org/gnu/glibc에서 구한 glibc-crypt-README 파일로부터
인용한 글이다:
Glibc 패키지의 압축을 푼다. 다음 내용을 넣어서 configparms 파일을 새로
만든다.
여러분의 normal Linux 파티션 bin 디렉토리에 있는 ls 프로그램을 실행해서 새로 설치한 라이브러리를 간단하게 테스트할 수 있다. 여러분이 어떤 에러도 만나지 않고 이 프로그램을 실행할 수 있다면 GNU C 라이브러리는 제대로 인스톨 된 것이라고 보면 된다.
------------------------------------------------------------------------ 7. Installing the GNU CC compilers 여러분은 gcc 컴파일러를 컴파일하기 위해 시스템을 다시 시작해서 normal Linux으로 돌아가야 한다.
7.1 Installing GCC 2.95.2 GCC 설치 노트는 오브젝트 파일을 별도의 디렉토리에 둘 것을 권한다. 이것은 gcc 소스가 놓인 디렉토리와, 컴파일된 파일들이 놓일 또 다른 디렉토리가 만들어져야 한다는 것을 뜻한다. 예를 들어 gcc 패키지를 /usr/src/gcc-2.95.2 디렉토리에 풀어놓고, /usr/src/gcc-install 이란 이름으로 다른 디렉토리를 만들 수도 있다. GCC 패키지의 압축을 푼다.
7.2 Installing GCC 2.7.2.3 gcc-2.7.2.3 패키지의 압축을 푼다. configure --prefix=/usr/gcc2723 --enable-shared 명령을 실행해 패키지 환경을 설정한다. <cpu> 자리에는 여러분 시스템에 맞는
값을 넣는다. 여러분이 Pentium 시스템을 가지고 있다면 i586을
입력한다. 여러분이 PII 또는 그 이상의 시스템을 가지고 있다면
i686을 넣는다. 만약 여러분이 Intel 기반의 플랫폼을 가지고 있지
않다면, 무엇을 넣어야 할지 스스로 판단해야 한다. 아래 명령들을 순서대로 실행해서 컴파일러를
만든다:
make install CC=”stage2/xgcc -Bstage2/” CFLAGS=”-g -O2” 명령을 실행해서 패키지를 인스톨한다.
------------------------------------------------------------------------ 8. Installing login utilities
8.1 Installing agetty + login 이 장에서는 텍스트 에디터가 필요하므로 normal Linux 시스템을 사용해서 모든 작업을 한다. 이 장에서 여러분에게는 Util Linux 패키지가 필요하다. 만약 Util Linux 소스 디렉토리를 아직 지우지 않고 있다면, 여러분은 처음 두 단계를 거치지 않아도 좋다. Util 리눅스 패키지의 압축을 푼다.(만약 여러분이
지난번에 사용했던 Util 리눅스 패키지를 지웠다면)/configure를
실행해 패키지 환경을 설정한다.
8.2 Modifying $LFS/etc/inittab 다음 단계는 우리가 시스템을 켤 때마다 agetty가 가상 콘솔상에서 시작될 수 있도록 $LFS/etc/inittab 파일을 편집하는 것이다. 이렇게 해서 모든 리눅스 시스템은 아니라도 거의 다 작동한다. $LFS/etc/inittab 파일을 편집기로 연다.
8.3 Creating the UTMP record file 여러분이 리눅스 시스템에 로그온 할 때마다, /var/run/utmp 파일이 고쳐진다. 이 파일이 없을 때에는, agetty와 login을 비롯한 매우 많은 프로그램들이 투덜거리기 시작한다. 그러므로 우리는 비어 있는 $LFS/var/run/utmp 파일을 만들어서 그런 프로그램들이 더 이상 투덜거리지 않게 만들어야 한다. $LFS/var/run 디렉토리를 만든다.
8.4 Testing the system 여러분이 만약 지금 시스템을 테스트하려 한다면 시스템을 다시 시작해서 LFS 시스템으로 부트한다. 커널과 sysvinit이 로드된 다음, agetty가 시작되고, username과 함께 부트과정이 끝났음을 여러분에게 알린다. 현재 root 사용자 하나만 있으므로 여러분은 root로 로그인한다.
------------------------------------------------------------------------ 9. Installing Vim Vim이 설치된 다음부터는, 우리는 LFS 시스템을 “꾸미는 데(dress up)” 더 이상 normal Linux을 사용할 필요가 없다. 이 것은 여러분이 지금부터 오래지 않아 normal Linux 시스템을 재부트해서 우리의 LFS 시스템으로 돌아가야 한다는 것을 뜻한다.
9.1 Preparing the system for the Vim installation Installing Ncurses Vim을 설치하기 위해 ncurses 라이브러리를 설치할 차례이다. Ncurses 패키지의 압축을 푼다. Ncurses는 최근 버전의 C 표준을 100% 정확하게 따르지 않으므로, gcc2723으로 컴파일할 필요가 있다. make CC=/usr/gcc2723/bin/gcc 명령을
실행해서 프로그램들을 컴파일한다.
9.2 Installing Vim Vim은 두 부분으로 되어 있는데 src 패키지와 rt (run-time)패키지이다. 여러분은 vim을 설치하기 위해 두 패키지 모두 가져와야 한다. 여러분이 만약 두 패키지를 모두 한 디렉토리에 넣었다면, 여러분이 처음 압축을 풀 때 생긴 디렉토리에 두 패키지로부터 풀어놓은 파일들이 같이 있을 것이다.(어떤 것을 먼저 풀어놓는가는 문제되지 않는다) Vim-src와 Vim-rt 패키지의 압축을
푼다. Vim도 역시 gcc 2.95.2에서 컴파일되지 않으므로 잘 수행되는 gcc 2.7.2.3에서 컴파일해야 한다. make CC=/usr/gcc2723/bin/gcc 명령을
실행해서 프로그램들을 컴파일한다.
------------------------------------------------------------------------ 10. Creating initial boot scripts
10.1 Preparing the directories and master files 이 섹션에서 설명하는 프로그램을 설치하려면 Sysvi-nit 패키지가 필요하다. 다음 명령을 수행해서 필요한 디렉토리들을 만든다:
10.2 Creating the reboot script 다음 내용을 담아 새로운 reboot 파일을 만든다:
10.3 Creating the halt script 다음 내용을 담아 새로운 halt 파일을
만든다:
10.4 Creating the mountfs script 다음 내용을 담아 새로운 mountfs 파일을 만든다:
10.5 Creating the umountfs script 다음 내용을 담아 새로운 umountfs 파일을 만든다:
10.6 Creating the sendsignals script 다음 내용을 담아 새로운 sendsignals 파일을
만든다:
10.7 Set file permissions and create symlinks chmod 755 reboot halt mountfs umountfs sendsignals
명령으로 적당한 파일 퍼미션을 설정한다.
10.8 Creating the /etc/fstab file 다음 내용을 담아 /etc/fstab 파일을
만든다:
10.9 Testing the system 여러분의 컴퓨터를 다시 시작하고 LFS로 부트해서 시스템을 테스트한다. 에러 메시지들이 지나가고 여러분의 루트 파티션이 read-write 모드로 자동으로 마운트 될 것이다. 이제는 shutdown -r now 등 명령으로 여러분의 컴퓨터를 재시작할 수 있다.
------------------------------------------------------- 이 글의 남은 부분(11장∼19장)은 다음 달에 다룬다. |