1. CD 만들기

1.1. 필요사항(파일)

Anaconda, anaconda-runtime 패키지

Anaconda-runtime이 설치된 경로를 PATH에 추가한다.

export PATH=$PATH;/usr/lib/anaconda-runtime
  

1.2. 부팅 관련 이미지 만들기

레드헷의 시디를 마운트 하면 RedHat/base/ 각종 이미지 화일이 들어가 있다.

stage2.img 화일은 시디가 부팅이 되고 램디스크에 리눅스의 기본 디렉토리, 기본 화일, 아나콘다가 들어 있다.

tmp 에 디렉토리를 만들고 다음과 같이 마운트를 한다.

mount -o loop stage2.img /tmp/stage/
  

그러면 다음과 같은 디렉토리가 압축이 되어 있다.

etc lib lost+found modules proc usr var

이곳에 usr/bin 에 anaconda 실행 화일이 들어 있고, 나머지 화일들은 /usr/lib/anaconda 에 들어 있다.

stage2.img 는 레드햇 빌드 스크립트를 이용하면 만들수 있다.

1.3. 작업 순서

  1. rpm저장소 생성

  2. comps 작성

  3. 초기 hdlist 작성

  4. 패키지순서 파일 및 img파일 생성

  5. iso파일 생성 및 크기 분할

  6. 분할된 크기에 맞는 hdlist재 생성

* 2~3 번까지는 4번의 buildinstall 작업을 위한 선행작업으로, hdlist와 comps는 밀접한 관계가 있다.

/작업 디렉토리/i386/RedHat/RPMS/*.rpm
                        /base/comps
  

파일만 있으면 빌드 스크립트를 이용해서 배포판에 필요한 모든 작업을 하여 iso 를 만들어 준다.

1.4. rpm저장소 생성

배포판 생성에 필요한 rpm들을 특정 저장소에 위치 시킨다. rpm의 초기 위치는 /임의 작업디렉토리/i386/RedHat/RPMS로 변경 할 수 없다.

* 여기서는 임의의 작업 디렉토리를 /home/work/로 가정한다.

1.5. comps 파일 작성법

comps 파일은 설치 과정에서 패키지들이 어떻게 꾸려지는지를 정의하며, 기본 위치는 /i386/RedHat/base이며 이 위치에 파일을 작성/저장한다.

이 파일은 패키지들을 기능에 따라 분리/정의 한다. 아래의 예 :

설치하는 도중에 사용자는 "설치 유형" 과 "패키지 선택" 화면을 보고 받게 된다. 어떠한 패키지(컴포넌트)들은 미리 선택되어 있고 어떤 것들은 그렇지 않다.

comps 형식 버전

[1|0] [--hide] [패키지명] {
	? [패키지명] { 
		rpm명
	}
	@ 정의된 패키지명, 
	[(lang language명) : | 아키텍쳐명 : rpm명]
	...
}
  

comps 파일은 첫번째 줄에-최초 한번-현재 comps 양식의 버전을 기술하는 것으로 시작한다.

comps형식버젼과 패키지명, 패키지명과 패키지명 사이는 반드시 공란으로 비워야 하며, “{ }” 로 패키지를 묶어 구분한다.

패키지명과 "{}" 사이는 하나의 공백이 존재한다.

4

1 Base {
  MAKEDEV
  SysVinit
  alpha: aboot
  anacron
  i386: apmd
  ash
  ...
  (lang ko) : han2
}

1 Printer Support {
  a2ps
  psutils
  ...
  chkfontpath
}

0 Kernel Development {
  @ Development
  kernel-source
}

0 Emacs {
  ? X Window System {
    emacs-X11
  }
  ? Authoring/Publishing {
   psgml
  }
  emacs
  emacs-nox
  tamago
  (lang ko): semi
}

0 --hide Server {
  @ Mail/WWW/News Tools
  @ ProFTPD Server
  @ Printer Support
  @ Networked Workstation
  @ Dialup Workstation
  @ Network Server
  @ Network Management Workstation
  @ Development
  @ Utilities
}
  

각 컴포넌트의 이름 앞 기본 선택을 나타내는 1이나 0이 주어진다. 1은 그 컴포넌트가 기본적으로 선택된다는 것을, 0은 선택되지 않음을 의미한다.

첫번째 컴포넌트는 Base이고, 반드시 존재해야 하며 대화상자에 나타나지 않는다는 점에서 특별하다. 당연히 기본 설치는 선택하지 않을 수 없다.

다음에는 그 컴포넌트에 해당하는 rpm 패키지들의 목록이 나온다. 이름들이 rpm 파일 안에 저장되어 있는 이름이 라는 점에 주의하여야 한다.

--hide 옵션은 expert 설치과정을 선택하지 않는다면 목록을 볼 수 없음을 의미한다. (설치유형에서만 보여진다.)

? 는 컴포넌트를 설치할 때 지정한 컴포넌트가 선택되어 있다면 추가로 설치할 패키지를 지정할 수 있다. 위의 예제를 보자면 Emacs 컴포넌트를 설치하는데 X윈도우가 선택되어 있다면 emacs-X11 패키지를 설치하는 것이다.

@ 은 미리 정의한 컴포넌트를 다른 컴포넌트에서 사용하고자 할때 사용된다.

(lang ko) : 은 설치환경이 한글(ko) 일 경우에만 설치되는 패키지를 지정해 줄 수 있다.

i386 : 와 같이 플랫폼 환경에 따라 설치할 패키지를 선택해 줄수 있다. !386 과 같이하면 i386 플랫폼을 뺀 나머지 플랫폼에 설치된다.

* 참고 : 이 파일이 어떻게 parse 되는지 알고 싶다면 /usr/lib/anaconda/comps.py 를 확인 한다.

1.6. hdlist 작성

# genhdist 옵션 작업초기디렉토리

예)

/usr/lib/anaconda-runtime/genhdlist --withnumbers /home/work/i386
  

초기 hdlist, hdlist2를 생성한다.

예)

root@wow:/home/work/i386/RedHat/base# l
total 101160
-rw-r--r--    1 root    root        12216 Jun 13  2001 comps
-rw-r--r--    1 root    root      1382180 Apr  9 10:18 hdlist   <- 생성
-rw-r--r--    1 root    root     10846360 Apr  9 10:18 hdlist2  <- 생성
root@wow:/home/work/i386/RedHat/base#
  

1.7. 패키지순서 파일 및 크기분할

가상의 Evrething설치로 패키지 설치 순서를 정하여 pkgorder파일을 생성하며,

이때 설치에 필요한 파일들을 모아 boot 관련 img파일을 생성한다.

# buildinstall --pkgorder 패키지순서목록 작업초기디렉토리

예)

/usr/lib/anaconda-runtime/buildinstall --pkgorder /home/work/pkgorder ./i386/

배포판 images를 생성한다.

iso파일 생성 및 크기 분할

# splitdistro --fileorder 패키지순서목록 --release 릴리즈명 작업초기디렉토리 아키텍처타입

예)

/usr/lib/anaconda-runtime/splitdistro --fileorder `pwd`/pkgorder --release "WOWLINUX" . i386

* splitdistro 스크립트는 anaconda-runtime 버전 7.2 부터 추가 되어 하위 버전의 경우는 수동으로 작업처리해야 한다.

1.8. 크기 분할에 맞춘 확정 hdlist 재작성

iso 크기에 맞는 패키지들의 목록을 다시 작성한다.

# genhdlist 옵션 --fileorder pkgorder파일 분할작업디렉토리1 ...n

예)

 genhdlist --withnumbers --fileorder ./pkgorder `pwd`/i386-disc1/ `pwd`/i386-disc2/  

1.9. ISO 만들기

1) ftp 일 경우

ftp 에 있는 i386 디렉토리안에 있는 내용을 /home/disk 다운받습니다.

2) 배포판 시디 일경우

/mnt/cdrom 마운트 한것을 /home/disk로 카피를 합니다.

(이때 /home/disk에 화일을 작성해야 하기 때문에 read only 상태이면 안됩니다.)

3) 다음과 같이 실행 합니다.

mkisofs 옵션 볼륨레이블 부트 이미지 화일 카타로그 화일 iso 이미지 부트이미지, 카타로그 화일의 디폴트 디렉토리]

mkisofs -R -T -V "Wowlinux 7.1 " -b images/boot.img -c boot.cat -o /root/paran.iso /home/disk
  

* 옵션 설명

이때 boot.cat 을 만들어 줍니다. 이 화일은 없어도 mkisofs 가 자동으로 만들어 줍니다. 그래서 읽고, 쓰기가 가능해야 합니다.

1.10. 확인하기

mount [화일 형식] 옵션 [iso 화일] [iso 내용이 들어갈 디렉토리]

mount -t auto -o loop paran.iso /root/test/

1.11. 시디굽기

cdrecord --scanbus 를 실행해서 장치명을 알아낸다.

cdrecord -v -eject -speed=12 dev=1,0,0 paran.iso