| |
제 목 : 나만의 FreeBSD ISO 이미지 만들기
작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
작성일 : 2012.7.11(수)
수정일 : 2013.1.28(월) FreeBSD 9 환경 추가
FreeBSD 9에서는 generate-release.sh 스크립트의 등장으로 FreeBSD 8버전과는 ISO파일 만드는 방법이 다르다.
FreeBSD 9는 다음 두가지 방법 중에 하나를 선택한다.
1. FreeBSD 9에서 make release로 CD 이미지 만들기
1) buildworld와 buildkernel 하기
| |
root@fb91:/root # cd /usr/src
root@fb91:/usr/src # make buildworld buildkernel
| |
build하기 전에 /usr/src/ 아래에 패치할 소스를 넣어두면, 패치가 적용된 나만의 ISO 버전을 얻을 수 있다.
※ 서버에 있는 소스가 아닌 새롭게 받아와서 release 이미지를 만드려면 buildworld 전에 다음과 같이 실행한 후에 진행한다.
svn co svn://svn.freebsd.org/base/stable/9 /usr/src
2) release 생성
| |
root@fb91:/usr/src # cd release
root@fb91:/usr/src/release # make release
root@fb91:/usr/src/release # make install DESTDIR=/data/release91
| |
/data/release91/ 디렉토리에 나만의 release 버전이 생성되어 있다.
| |
-rw-r--r-- 1 root wheel 149882880 Jan 28 18:58 bootonly.iso
drwxr-xr-x 2 root wheel 512 Jan 28 18:56 ftp
-rw-r--r-- 1 root wheel 700948480 Jan 28 18:58 memstick
-rw-r--r-- 1 root wheel 655753216 Jan 28 18:57 release.iso
| |
2. FreeBSD 9에서 generate-release.sh 스크립트로 CD 이미지 만들기
release용 스크립트 /usr/src/release/generate-release.sh 가 있다. generate-release.sh은 subversion(SVN)을 사용하므로 스크립트 실행전에 설치되어 있어야 한다. /usr/ports/devel/subversion/ 에서 make install clean.
1) buildworld 할 때와 buildkernel할 때 make 옵션에 -j8을 포함시킨다.
그리고 ports 와 doc는 빌드에서 제외한다.
[ g.sh ]
| |
#!/bin/sh
export WORLD_FLAGS=-j8
export KERNEL_FLAGS=-j8
export NOPORTS=1
export NODOC=1
cd /usr/src/release
sh -x ./generate-release.sh stable/9 /data/release91 > /data/make_release_result.txt
| |
위 스크립트를 실행하면 SVN으로 svn://svn.freebsd.org/base/stable/9 소스를 /data/release91/ 아래로 받아온다. 그리고, build -> release -> install 과정을 한번에 처리해준다. ISO 이미지는 /data/release91/R/ 아래에 생성된다.
2) generate-release.sh 실행중에 다음과 같은 에러가 난다면.
| |
+ make installworld distribution DESTDIR=/data/release91
ERROR: Required auditdistd user is missing, see /usr/src/UPDATING.
*** [installcheck_UGID] Error code 1
Stop in /data/release91/usr/src.
*** [installworld] Error code 1
Stop in /data/release91/usr/src.
| |
auditdistd ID를 생성한 후 generate-release.sh를 다시 실행해주면 된다.
| |
# pw useradd -n auditdistd -u 78 -g audit -c "Auditdistd unprivileged user" -d /var/empty -s /usr/sbin/nologin
| |
3. FreeBSD 8에서 ISO CD 이미지 만들기
1) FreeBSD cvs 받아오기
/usr/share/examples/cvsup/cvs-supfile 파일을 복사해서 수정한다. cvsup 서버는 개인적으로 cvsup.freebsd.org 또는 cvsup.jp.freebsd.org 사용하고 있다.
| |
# cp -p /usr/share/examples/cvsup/cvs-supfile cvs-supfile2
| |
[ cvs-supfile2 일부 ]
| |
*default host=
*default base=/data/db
*default prefix=/data/ncvs
*default release=cvs
*default delete use-rel-suffix
src-all
ports-all
doc-all
cvsroot-all
# 다음 2개는 주석 처리
## www
## projects-all
| |
cvsup -g -L 2 cvs-supfile2 명령으로 FreeBSD 소스를 받아온다.
2) buildworld
| |
# cd /usr/src
# make buildworld
| |
3) make release
| |
# cd /usr/src/release
# make release CHROOTDIR=/data/release83 CVSROOT=/data/ncvs RELEASETAG=RELENG_8_3 KERNEL_FLAGS=-j8 WORLD_FLAGS=-j8 NOPORTS=1 NODOC=1 MAKE_ISOS=1
| |
FreeBSD 8.3소스로 빌드(8.x 최신으로 하려면 RELENG_8) 한다. 그리고 make kernel할 때 -j8 옵션을, make buildworld할 때 -j8 옵션을 사용한다. ports와 doc는 빌드하지 않으며 CD 이미지를 생성한다. MAKE_ISOS= 옵션이 없으면 CD이미지를 생성하지 않는다. make release가 완료되면 /data/release83/R/ 아래에 나만의 배포판이 생성되어 있다.
| |
# ls -al R/
total 10
drwxr-xr-x 5 root wheel 512 Jul 11 13:21 .
drwxr-xr-x 18 root wheel 512 Jul 11 12:25 ..
drwxr-xr-x 8 root wheel 1024 Jul 11 13:22 cdrom
drwxr-xr-x 14 root wheel 512 Jul 11 13:21 ftp
drwxr-xr-x 9 root wheel 512 Jul 11 13:21 stage
... 생략 ...
# ls -al R/cdrom/
total 1530356
drwxr-xr-x 8 root wheel 1024 Jul 11 13:22 .
drwxr-xr-x 5 root wheel 512 Jul 11 13:21 ..
-rw-r--r-- 1 root wheel 58738688 Jul 11 13:21 FreeBSD-8.3-20120711-SNAP-amd64-bootonly.iso
-rw-r--r-- 1 root wheel 427085824 Jul 11 13:21 FreeBSD-8.3-20120711-SNAP-amd64-disc1.iso
-rw-r--r-- 1 root wheel 354304 Jul 11 13:21 FreeBSD-8.3-20120711-SNAP-amd64-disc2.iso
-rw-r--r-- 1 root wheel 354304 Jul 11 13:22 FreeBSD-8.3-20120711-SNAP-amd64-disc3.iso
-rw-r--r-- 1 root wheel 724948992 Jul 11 13:22 FreeBSD-8.3-20120711-SNAP-amd64-dvd1.iso
-rw-r--r-- 1 root wheel 501 Jul 11 13:22 FreeBSD-8.3-20120711-SNAP-amd64-iso.CHECKSUM.MD5
-rw-r--r-- 1 root wheel 711 Jul 11 13:22 FreeBSD-8.3-20120711-SNAP-amd64-iso.CHECKSUM.SHA256
-rw-r--r-- 1 root wheel 356595712 Jul 11 13:22 FreeBSD-8.3-20120711-SNAP-amd64-livefs.iso
drwxr-xr-x 3 root wheel 512 Jul 11 13:21 bootonly
drwxr-xr-x 4 root wheel 512 Jul 11 13:21 disc1
drwxr-xr-x 2 root wheel 512 Jul 11 13:21 disc2
drwxr-xr-x 2 root wheel 512 Jul 11 13:21 docs
drwxr-xr-x 18 root wheel 1024 Jul 11 13:21 dvd1
drwxr-xr-x 17 root wheel 512 Jul 11 13:21 livefs
| |
4. 관련 자료
* 맨페이지 man release
http://www.freebsd.org/cgi/man.cgi?query=release&apropos=0&sektion=0&manpath=FreeBSD+9.1-RELEASE&arch=default&format=html
* FreeBSD Release Engineering : Release Building
http://www.freebsd.org/doc/en/articles/releng/release-build.html
* auditdistd user is missing in make kernel
http://forums.freebsd.org/showthread.php?t=36454
|