Anaconda, anaconda-runtime 패키지
Anaconda-runtime이 설치된 경로를 PATH에 추가한다.
export PATH=$PATH;/usr/lib/anaconda-runtime |
레드헷의 시디를 마운트 하면 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 는 레드햇 빌드 스크립트를 이용하면 만들수 있다.
rpm저장소 생성
comps 작성
초기 hdlist 작성
패키지순서 파일 및 img파일 생성
iso파일 생성 및 크기 분할
분할된 크기에 맞는 hdlist재 생성
* 2~3 번까지는 4번의 buildinstall 작업을 위한 선행작업으로, hdlist와 comps는 밀접한 관계가 있다.
/작업 디렉토리/i386/RedHat/RPMS/*.rpm /base/comps |
파일만 있으면 빌드 스크립트를 이용해서 배포판에 필요한 모든 작업을 하여 iso 를 만들어 준다.
배포판 생성에 필요한 rpm들을 특정 저장소에 위치 시킨다. rpm의 초기 위치는 /임의 작업디렉토리/i386/RedHat/RPMS로 변경 할 수 없다.
* 여기서는 임의의 작업 디렉토리를 /home/work/로 가정한다.
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 를 확인 한다.
# 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# |
가상의 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 부터 추가 되어 하위 버전의 경우는 수동으로 작업처리해야 한다.
iso 크기에 맞는 패키지들의 목록을 다시 작성한다.
# genhdlist 옵션 --fileorder pkgorder파일 분할작업디렉토리1 ...n
예)
genhdlist --withnumbers --fileorder ./pkgorder `pwd`/i386-disc1/ `pwd`/i386-disc2/ |
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 가 자동으로 만들어 줍니다. 그래서 읽고, 쓰기가 가능해야 합니다.