다음 이전 차례

6. 사용 시나리오

initrd 구현에 대한 주요 동기는 시스템 설치시에 모듈식의 커널 설정을 가능하게 하기 위해서였다. 그 과정은 다음과 같이 동작한다.

  1. 시스템은 플로피나 다른 매체에서 최소화된 커널로 부팅한다(예, RAM 디스크, initrd, a.out, Ext2 FS 지원) 그리고 initrd 를 로드한다
  2. /linurc 는 (1) "진짜" 루트 FS (즉, 디바이스 종류, 디바이스 드라이버, 파일 시스템) 를 마운트 하는데, (2) 배포 매체(즉, CD-ROM, 네트웍, 테잎 등) 에 필요한 것이 무엇인지 결정한다. 이것은 사용자에게 묻거나, 자동으로 조사하거나, 둘을 합친 방법에 의해 수행된다.
  3. linuxrc 는 필요한 커널 모듈을 로드한다
  4. linuxrc 는 루트 파일 시스템을 생성하고 정착시킨다 (이것은 아직까지는 최적의 사용할만한 시스템일 필요는 없다)
  5. linuxrc 는 pivot_root 를 호출하여 루트 파일 시스템을 바꾸고 chroot 를 이용해 설치를 계속할 프로그램을 exec 한다
  6. 부트 로더가 설치된다
  7. 부트 로더는 시스템을 가동하기 위해 사용된 모듈의 집합을 가진 initrd 를 로드하도록 설정된다(예, /initrd 는 수정되고, 나중엔 언마운트되고, 마지막으로 이미지는 /dev/ram0 나 /dev/rd/0 에서 파일로 쓰여질 수 있다)
  8. 이제 시스템은 부트 가능하고 추가적인 설치 작업이 수행된다

여기서 initrd 의 주 역할은 (쓸데없이) 부풀려진 "범용" 커널을 사용하지 않고 커널을 다시 컴파일하거나 링크하지 않고도 보통의 시스템 작업 동안 설정 자료를 재사용하기 위함이다.

두번째 시나리오는 단일 관리적인 범위안에 있는 서로 다른 하드웨어 설정을 가진 시스템에 리눅스를 돌리는 경우의 설치이다. 그러한 경우에, 커널의 최소 집합 (이상적으로는 오직 하나) 만을 만들고 설정 정보의 시스템 특정 부분은 가능한 작게 유지하는 것이 이상적이다. 이 경우, 공통의 initrd 모듈이 모든 필요한 모듈을 가지고 생성될 수 있다. 그후, 오직 그것에 의해 읽혀지는 /linuxrc 나 파일만이 다르게 될 것이다.

세번째 시나리오는 보다 편리한 복구 디스크이다. 왜냐하면 부팅시에 루트 FS 파티션의 위치같은 정보들이 제공될 필요가 없기 때문이다. 그러나 initrd 에서 로드된 시스템은 사용자 친화적인 대화창을 통해 몇몇의 정확도 검사를 수행할 수 있다(혹은 자동 탐지의 어떤 형태로서도)

마지막으로, CD-ROM 배포자들은 보다 나은 CD 에서의 설치를 위해 사용할 수 있다. 그 예로 부트 플로피를 사용하고 보다 큰 RAM 디스크를 CD로부터 initrd를 통해 부트스트래핑 하거나, LOADLIN 같은 로더를 통해서나 직접 CD-ROM 에서 부팅하고, 플로피가 필요 없이 CD 에서 RAM 디스크를 읽어들이는 것이다.


다음 이전 차례