9. 기타 주제들

9.1. 램디스크 아닌 루트 파일시스템

4절 편에서는 시스템 부팅과 동시에 램디스크로 로드되는 압축 루트 파일시스템 제작법을 설명했습니다. 이 방법이 많은 장점이 있어 주로 사용됩니다만 메모리가 부족한 일부 시스템은 램이 램디스크를 만들만한 용량도 못되는 수가 있으므로 이때는 디스켓 상에서 직접 마운트되는 루트 파일시스템을 만들어야 합니다.

이러한 파일 시스템은 다른 디바이스가 아닌 디스켓 위에 그대로 만들수 있고, 또 압축도 필요없기 때문에 사실 압축 루트 파일시스템을 만드는 것보다 쉽습니다. 위에서 우리가 배운 절차와는 조금 다르므로 그 개요를 적어보겠습니다. 이 방법을 택하면 사용할 수 있는 공간이 훨씬 적어진다는 사실을 잊지 마십시요.

  1. 루트파일들에 할당할 수 있는 공간이 얼마나 되는지 계산한다. 만일 한장짜리 boot/root 디스크를 만든다면 커널의 블록과 루트 파일시스템의 블록을 더한 값이 디스켓 한 장의 용량에 맞아야 한다.

  2. mke2fs 를 써서 디스켓 위에 적절한 크기의 루트 파일시스템을 만든다.

  3. 앞에서 배운 대로 파일 시스템을 구성한다.

  4. 다 되었으면 파일 시스템을 언마운트시킨 후 디스크파일 한개로 만든다. 단, 압축시키지는 말라.

  5. 앞에서 배운대로 커널을 플로피디스켓에 담는다. 램디스크 워드를 계산할 때는 비트 14 를 0 으로 설정한다. 이는 루트 파일시스템이 램디스크로 로드되지 않도록 하는 것이다. 앞에서 배운 대로 rdev 를 실행한다.

  6. 앞에서 배운대로 루트 파일시스템을 플로피 디스켓에 담는다.

몇가지 지름길이 있습니다. 만일 두장의 디스크 세트를 만든다면 직접 두번째 디스크 상에 루트 파일시스템을 만들면 됩니다. 굳이 하드디스크 위에서 만들어 옮겨올 필요가 없지요. 또한 한장짜리 boot/root 디스크를 만들면서 LILO를 사용하겠다면, 한장의 디스켓에 단일한 파일시스템을 만들후 여기다가 커널, LILO 에 필요한 파일들, 루트파일들 셋을 모두 집어넣은 후 최후에 LILO 를 실행시켜주면 됩니다.

9.2. 유틸리티 디스크 만들기

유틸리티 디스켓을 만드는 것은 비교적 쉽습니다 -- 그저 포맷된 디스크에 파일 시스템을 만들고 거기에 파일들을 복사하면 됩니다. 부트디스켓에서 이 유틸리티 디스켓를 이용하려면 시스템이 부트된 후 유틸리티 디스켓을 수동으로 마운트하면 됩니다.

이 문서의 앞부분에서 유틸리티 디스켓를 /usr 디렉토리에 마운트할 수 있다고 말했습니다. 이 경우 바이너리들은 현재 유틸리티 디스켓 상의 /bin 디렉토리 아래에 위치하고 있으므로 /usr/bin 을 PATH 에 포함시켜두면 이를 액세스할 수 있습니다. 실행화일에 필요한 각종 라이브러리들은 유틸리티 디스켓의 /lib 디렉토리에 두면 됩니다.

유틸리티 디스크 제작시 명심해야할 중요한 사항들이 몇가지 있습니다.

  1. 핵심적인 시스템 바이너리나 라이브러리들은 유틸리티 디스크에 담지 마십시요. 유틸리티 디스크는 시스템이 부트된 후에야 마운트될 수 있기 때문입니다.

  2. 플로피 디스켓과 플로피 테이프드라이브를 동시에 엑세스할 수는 없습니다. 이 말은 플로피 테이프 드라이브를 가지고 있다해도 유틸리티 디스켓이 마운트 되어있는 동안에는 이 테이프 드라이브를 액세스 할 수 없다는 뜻입니다.

  3. 유틸리티 디스켓에 있는 파일을 엑세스하는 속도는 상당히 느립니다.

부록 D 은 유틸리티 디스크에 들어가는 파일들의 예를 보여줍니다. 도움되는 아이디어를 발견할 수 있을 것입니다: 디스크를 다루는 프로그램들(format, fdisk)과 파일 시스템용 프로그램들(mke2fs, fsck, debugfs, isofs.o), 간단한 텍스트 에디터 (elvis, jove), 압축및 아카이브 유틸리티(gzip, bzip, tar, cpio, afio), 테이프 유틸리티(mt, ftmt, tob, taper), 통신 유틸리티(ppp.o, slip.o, minicom), 디바이스용 유틸리티(setserial, mknod) 등이 들어있습니다.