blogging

배포판만들기

hongiiv 2006. 7. 24. 00:46
반응형
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이며 이 위치에 파일을 작성/저장한다.

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

*

X Window System
*

GNOME
*

Mail/WWW/News Tools
*

Kernel Development

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

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


* 옵션 설명

*

-R : 8.3이 넘는 긴 화일명을 사용
*

-T : 디렉토리별로 TRANS>TBL 화일을 만들어 줍니다.
*

-V : 볼륨명
*

-b : boot.img 의 위치를 적어줍니다. (상대 경로)
*

-c : 이미지 화일을 적어 줍니다.
*

마지막 경로 : 기본 디렉토리의 절대 경로입니다.

이때 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
반응형