다음 이전 차례

5. LFS 시스템을 부팅 가능하도록 만들기

5.1 Sysvinit의 설치

일반적인 환경 하에선 커널이 로드되어 여러 시스템 구성 요소들을 초기화한 후 시스템의 부팅 프로세스를 마무리할 init 라 불리는 프로그램을 로드한다. 전부 다는 아닐 지라도 거의 대부분의 리눅스 시스템에 들어있는 패키지는 Sysvinit이며 이것이 우리가 LFS 시스템에 설치하려는 프로그램이다.

마지막 네 줄에 $(ROOT) 부분을 첨가한 후엔 아래와 같이 보일 것이다:

   @if [! -p $(ROOT)/dev/initctl ]; then \
   echo "Creating $(ROOT)/dev/initctl"; \
   rm -f $(ROOT)/dev/initctl; \
   mknod -m 600 $(ROOT)/dev/initctl p; fi
 

make -e LDFLAGS=-static; make install
 

5.2 Sysvinit 설정

Sysvinit가 동작하기 위해서 우리는 설정 파일을 만들어야 한다. 다음을 포함하도록 $LFS/etc/inittab 파일을 만든다:

# Begin /etc/inittab
 
id:2:initdefault:
 
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
 
1:2345:respawn:/sbin/sulogin
 
# End /etc/inittab
 

5.3 passwd 와 group 파일의 생성

여러분이 inittab 파일에서 보는 것처럼 우리가 시스템을 부팅하면 init 가 sulogin 프로그램을 실행시키며 sulogin은 여러분에게 root의 패스워드를 물어볼 것이다. 이는 우리가 LFS 시스템 상에 적어도 passwd 파일은 가지고 있어야 한다는 것을 의미한다.

위의 인코딩된 패스워드 문자열은 lfs123 이다.

여러분의 LFS 시스템에 로그온 할 때 root의 패스워드를 물어온다면 lfs123을 입력하면 된다.

5.4 Bash 쉘의 설치

sulogin 이 root 패스워드를 물어오고 여러분이 패스워드를 입력했다면 쉘이 시작되야 한다. 흔히 bash 쉘이 시작된다. 그러나 아직 설치된 라이브러리가 전혀 없기 때문에 우리는 Sysvinit 에서와 같이 bash 를 정적으로 링크해야 한다.

./configure --enable-static-link
make; make -e prefix=$LFS/usr install
mv $LFS/usr/bin/bash $LFS/bin 
cd $LFS/bin; ln -s bash sh
 

5.5 LILO에 엔트리 추가

이 파티션으로부터 부팅이 가능하기 위해선 우리는 /etc/lilo.conf 파일을 수정해야 한다. 다음 줄들을 lilo.conf 에 추가한다:

image=<currently used image>
   label=<label>
   root=$LFS
   read-only
 

<currently used image>를 여러분이 기존의 리눅스 시스템을 부팅하기 위해 사용하는 이미지 파일로 바꾼다. <label>는 여러분이 원하는 무엇이든 될 수 있다. 나는 "lfs"라 칭했다. 여러분이 <label>에 넣는 것이 부팅할 시스템을 고르기 위해 LILO 프롬프트에서 여러분이 입력하는 것이다.

부트 로더를 갱신하기 위해 lilo 프로그램을 실행한다.

5.6 시스템 검사

이 장을 끝마친 후 우리는 LFS 로 재부팅 하여 시스템을 검사할 수 있으며 그 시스템으로 로그론 할 수 있는지를 볼 수 있다. 여러분이 리부팅한 후 LFS 시스템을 시작하기 위해선 lilo.conf 파일에 삽입했던 label 을 LILO프롬프트에서 입력한다. 그리고 root 패스워드를 입력하면 이제 bash 프롬프트를 얻게 될 것이다. 여러분은 shutdown 같은 프로그램으로 시스템을 shutdown 시킬 수 없을 것이다. 이 프로그램이 있긴 하지만 이를 실행하려 하면 다음과 같은 에러가 날 것이다: "You don't exist. Go away." 이 에러의 의미는 시스템이 password 파일을 찾을 수 없다는 것이다. 비록 shutdown 프로그램이 필요로 하는 라이브러리에 정적으로 링크되어 있지만 GNU C 라이브러리의 일부인 NSS (Name Server Switch) 라이브러리에 여전히 의존하고 있으며 이는 이후 장에서 설치될 것이다. 이 NSS 라이브러리는 (이 경우엔) passwd 파일을 찾을 수 있는 장소에 대한 정보를 넘겨준다.

지금은 시스템을 리부팅하기 위해 reboot -f 명령을 쓸 수 있다. 이 명령은 shutdown 프로그램을 사용하는 종료 과정을 생략하고 곧바로 리부팅을 한다. 파일 시스템이 읽기 전용으로 마운트되어 있기 때문에 어떤 방법으로든 이 리부팅 방식이 우리 시스템에 해를 끼치진 않는다 (시스템을 다음번에 마운트할 때, 이전에 깨끗하게 언마운트 되지 않았으며 파일 시스템을 본래대로 유지하기 위해선 e2fsck를 실행해야 한다는 경고문을 보게될 것이지만 말이다).


다음 이전 차례