다음 이전 차례

9. 레드햇 설치관리자(RedHat Installer) 수정

만일 설치 과정 자체를 수정하려 한다면 소스 코드를 레드햇 CD-ROM이나 각 지역의 레드햇 미러사이트에서 찾을 수 있다. 소스 코드는 i386 배포본의 최상위 디렉토리의 misc/src/install 디렉토리 아래에 있다.

레드햇 부트 디스크를 살펴보면 리눅스 커널인 vmlinuz 이외에도 큰 용량의 initrd.img등의 화일이 있음을 알 수 있다.

- -rwxr-xr-x   1 root     root          559 May 11 15:48 boot.msg
- -rwxr-xr-x   1 root     root          668 May 11 15:48 expert.msg
- -rwxr-xr-x   1 root     root          986 May 11 15:48 general.msg
- -rwxr-xr-x   1 root     root       968842 May 11 15:48 initrd.img
- -rwxr-xr-x   1 root     root         1120 May 11 15:48 kickit.msg
- -r-xr-xr-x   1 root     root         5352 May 11 15:48 ldlinux.sys
- -rwxr-xr-x   1 root     root          875 May 11 15:48 param.msg
- -rwxr-xr-x   1 root     root         1239 May 11 15:48 rescue.msg
- -rwxr-xr-x   1 root     root          402 May 11 15:48 syslinux.cfg
- -rwxr-xr-x   1 root     root       444602 May 11 15:48 vmlinuz

예상을 했겠지만 initrd.img 화일은 화일로 저장된 ext2 화일 시스템이다. 이 화일은 높은 압축율로 압축되어 있다. 압축을 푼 다음 화일을 마운트할 수 있다.

# gzip -dc /mnt/boot/initrd.img >/tmp/initrd.ext2
# mkdir /mnt/initrd
# mount -o loop /tmp/initrd.ext2 /mnt/initrd

이 화일시스템에서 가장 중요한 부분은 부트 디스크에 포함된 커널 모듈들의 모음이다. 만일 새 버전의 드라이버를 포함시키려 한다면 모듈을 포함시켜 정적으로 컴파일된 커널로 교체하든지 아니면 모듈의 모음을 교체해야 한다. 어쩌면 공간을 마련하기 위해 다른 모듈을 삭제해야 하는 경우도 있다.

모듈들의 모음은 modules/modules.cgz라는 형태로 존재한다. 이 화일을 어떻게 다루어야 할지 의아해 할 것이다. 이 화일은 압축된 cpio 화일이다. 믿거나 말거나. 실제로 RPM은 내부적으로 cpio를 사용한다. 이 화일은 다음과 같은 순서로 압축을 풀고 cpio를 해제한다.

# gzip -dc /mnt/initrd/modules/modules.cgz >/tmp/modules.cpio
# cpio -itv < modules.cpio > modules.listing
# mkdir modules
# cpio -idumv <../modules.cpio

내가 알기로는 요즘 많이 사용되는 리눅스 배포본에서는 압축된 화일시스템을 곧바로 접근할 수 있는 방법이 없다. 만일 더 좋은 방법이 있다면 알려주기를 바란다.

내용을 변경하려 한다면 알아두어야 할 것이 있다.

  1. archive를 재생성하기 위해 cpio를 사용한다. archive를 재생성하는 것은 이 문서를 읽는 여러분들의 연습을 위해 남겨두기로 한다.
  2. 위의 archive를 압축하기 위해 gzip을 사용한다.
  3. 위의 화일을 /mnt/initrd 또는 initrd.img 화일을 풀어놓은 디렉토리에 복사한다.
  4. /mnt/initrd 를 언마운트한다.
  5. gzip을 이용하여 새로운 initrd.img를 다시 압축한다.
  6. 압축된 화일을 부트 디스크 이미지에 넣는다. - 우리가 사용한 예에서는 /mnt/boot/initrd.img
  7. 부트 디스크 이미지를 언마운트 한다.

최종적으로 마침내 수정된 부트 디스크 셋업을 사용하여 새로운 부트 플로피를 만들 수 있다.

# cat boot.img >/dev/fd0


다음 이전 차례