2012-09-09

FreeBSD ] FreeBSD Update(운영체제 소스 업데이트하기)



운영체제 소스 업데이트

* cvsup을 이용하여 운영체제 소스를 업데이트 한다.

# cat  /usr/local/user_bin/cvs_update.sh


내용 =================================

#!/usr/local/bin/bash

CVS_PRO=/usr/local/bin/cvsup
SUPFILE_DIR = /usr/local/etc/cvsup
$CVS_PRO -g -L 2 $SUPFILE_DIR/statble-supfile
$CVS_PRO -g -L 2 $SUPFILE_DIR/ports-supfile


* stable-supfile, ports-supfile을 미리 설정해야 한다.


/etc/make.conf설정

* /etc/make.conf 는 시스템을 컴파일하거나 업데이트할때 필요한 옵션을 설정하는 파일이다.

/etc/defaults/make.conf 파일에 쓸 수 있는 모든 항목이 열거되어 있는데 사용자가 바꾸고자 하는 파일은 /etc/make.conf 에 적용하면 된다.


* diff -r /etc/defaults/make.conf /usr/src/etc/defaults/make.conf  =>바뀐부분 확인


내용=======================================

 # grep -v ^# /etc/make.conf

 CPUTYPE=i686
 CFLAGS= -O -pipe
 BDECFLAGS=      -W -Wall -ansi -pedantic -Wbad-function-cast -Wcast-align
                 -Wcast-qual -Wchar-subscripts -Winline
                 -Wmissing-prototypes -Wnested-externs -Wpointer-arith
                 -Wredundant-decls -Wshadow -Wstrict-prototypes -Wwrite-strings

 NO_FORTRAN=     true    # do not build g77 and related libraries
 NO_I4B= true    # do not build isdn4bsd package
 NO_LPR= true    # do not build lpr and related programs
 NO_OPENSSH=     true    # do not build OpenSSH
 NO_SENDMAIL=    true    # do not build sendmail and related programs
 NOGAMES=        true    # do not build games (games/ subdir)
 NOPROFILE=      true    # Avoid compiling profiled libraries
 NOUUCP= true    # do not build uucp related programs
 SUP_UPDATE=     yes
 SUP=            /usr/local/bin/cvsup
 SUPFLAGS=       -g -L 2
 SUPHOST=        cvsup.kr.FreeBSD.org
 SUPFILE=        /usr/local/etc/cvsup/stable-supfile
 PORTSSUPFILE=   /usr/local/etc/cvsup/ports-supfile
 SENDMAIL_CFLAGS=-I/usr/local/include -DSASL=2
 SENDMAIL_LDFLAGS=-L/usr/local/lib
 SENDMAIL_LDADD=-lsasl2
 KERNCONF=FBMyKernel


* openssh, sendmail을 운영체제에 들어있는것을 사용하지 않고 별도로 포트에 있는것 설치하여 사용. 보안업데이트를 편하게 하기 위한 방법입니다. openssl 은 운영체제에 있는것을 사용하였구요.  sendmail은 별도로 설치하여 사용하므로 위의 sendmail옵션은 불필요할 것입니다.



업데이트하기

* object파일 지우기

  # cd /usr/src && make clean

* make -j 8 world :

  두가지 작업으로 나윈다. make build world는 소스코드를 /usr/obj 디렉토리에 컴파일한다. 성공적으로 끝날경우 make installworld를 하게 되면 컴파일된 바이너리를 적당한 위치에 설치한다. (-j옵션을 이용하여 SMP 기능을 사용할 수 있다.)

* -j 는 동시에 몇개의 작업을 수행할 것인지 정하는 옵션으로 SMP일 경우 8이상의 값을 주어 시간을 단축할 수 있다.

* P-3, 메모리 1G인 서버사양에서 make world에 1:30분정도 소요되었다.



컴파일 후 작업

*mergemaster 스크립트를 이용하여 /etc 디렉토리의 설정파일을 업그레이드 한다.

* /dev 디렉토리 업데이트

  # cd /dev/ ; sh MAKEDEV all

* /stand 디렉토리 업데이트

  # cd /usr/src/release/sysinstall; make all install

* 커널 컴파일 및 리부팅



 커널 컴파일하기

* 설정파일 작성

 # cd /usr/src/sys/i386/conf

 # cp GENERIC FBMyKernel

 # FBMyKernel 편집

 # cd /usr/src

 # make kernel KERNCONF=FBMyKernel (KERNCONF 는 /etc/make.conf에 지정됨)

    make kernel은 make buildkernel과 make installkernel 로 구성됨

 # reboot

 ....

 리부팅후

 # uname -a 로 확인

댓글 없음:

댓글 쓰기