==========================================================================================================

 

저뿐만 아니라 인터넷에는 많은 정보가 공유되어 있습니다.

나 스스로 이해하기에 넘 어려워..(그냥 단순히 순서만 있고 왜 이런것인가에 대해 설명이 없어)

직접 설치하면서 고민하던 것들에 대한 코멘트를 아는한 달면서 정리를 해볼까 합니다.

 

잘못된 부분이 있으면 조언과 지적부탁드립니다.

 

필자는 FreeBSD설치시 - minimum 으로 하여 src 설치 후 시스템을 빌드합니다.

==========================================================================================================

 

시작하기에 앞서 참고자료

http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html
http://www.kr.freebsd.org/doc/KoreanFreeBSDHandbook/KoreanFreeBSDHandbook-Chapter8-kernelconfig.pdf
http://www.kr.freebsd.org/doc/KoreanFreeBSDHandbook/KoreanFreeBSDHandbook-Chapter19-cutting-edge.pdf

http://www.understudy.net/makeworld.html

http://www.kr.freebsd.org/handbook-new/kernelconfig.html
http://www.kr.freebsd.org/handbook-new/x2578.html
http://www.kr.freebsd.org/handbook-new/kernelconfig-config.html

 

1. 먼저 커널 컴파일에 앞서 환경에 맞는 GENERIC 설정 파일을 복사합니다.

 

test# cd /usr/src/sys/i386/conf
test# ll
total 66
-rw-r--r--  1 root  wheel     13 Jun 21  2005 .cvsignore
-rw-r--r--  1 root  wheel    598 Mar  3 15:15 DEFAULTS
-rw-r--r--  1 root  wheel  13290 Mar  3 15:15 GENERIC
-rw-r--r--  1 root  wheel    878 Mar  3 15:15 GENERIC.hints
-rw-r--r--  1 root  wheel    148 Mar  3 15:15 Makefile
-rw-r--r--  1 root  wheel  31969 Mar  3 15:15 NOTES
-rw-r--r--  1 root  wheel   1646 Mar  3 15:15 PAE
-rw-r--r--  1 root  wheel   3487 Mar  3 15:15 XBOX
-rw-r--r--  1 root  wheel   3238 Mar  3 15:15 XEN
-rw-r--r--  1 root  wheel    677 Mar  3 15:15 XENHVM
test# cp GENERIC MYKERNEL                                      //cp 명령어로 GENERIC 복사
test# ll
total 80
-rw-r--r--  1 root  wheel     13 Jun 21  2005 .cvsignore
-rw-r--r--  1 root  wheel    598 Mar  3 15:15 DEFAULTS
-rw-r--r--  1 root  wheel  13290 Mar  3 15:15 GENERIC
-rw-r--r--  1 root  wheel    878 Mar  3 15:15 GENERIC.hints
-rw-r--r--  1 root  wheel  13290 Jun  5 13:50 MYKERNEL
-rw-r--r--  1 root  wheel    148 Mar  3 15:15 Makefile
-rw-r--r--  1 root  wheel  31969 Mar  3 15:15 NOTES
-rw-r--r--  1 root  wheel   1646 Mar  3 15:15 PAE
-rw-r--r--  1 root  wheel   3487 Mar  3 15:15 XBOX
-rw-r--r--  1 root  wheel   3238 Mar  3 15:15 XEN
-rw-r--r--  1 root  wheel    677 Mar  3 15:15 XENHVM

test# vi MYKERNEL                                                     //vi 편집기로 MYKERNEL  수정

 

     21 cpu             I486_CPU
     22 cpu             I586_CPU
     23 cpu             I686_CPU
     24 ident            ident

 

>> 24번째줄 ident에는 설정파일로 수정해줍니다 ( 저는 MYKERNEL로 하였으니 복사한 MYKERNEL로)

>> 즉 ,    24 ident           MYKERNEL

>> 이와 같이 수정해줍니다.

 

 

 

2. make buildworld

 

test# cd /usr/src/

test# make buildworld >> install.txt

 

## 명령의 결과를 파일로 저장하여 확인하기 위해 사용합니다. >> install.txt

 

 

 

 

3. make buildkernel

 

test# make buildkernel KERNCONF=MYKERNEL >> install.txt

 

## 명령의 결과를 파일로 저장하여 확인하기 위해 사용합니다. >> install.txt

## KERNCONF=[MYKERNEL]  (복사하였을때 사용하셨던 이름으로 사용)

 

 

 

4. make installkernel

 

 

test# make installkernel KERNCONF=MYKERNEL >> install.txt

 

## 명령의 결과를 파일로 저장하여 확인하기 위해 사용합니다. >> install.txt

## KERNCONF=[MYKERNEL]  (복사하였을때 사용하셨던 이름으로 사용)

 

 

 

5. make installworld

 

test# make installworld >> install.txt

 

## 명령의 결과를 파일로 저장하여 확인하기 위해 사용합니다. >> install.txt

## KERNCONF=[MYKERNEL]  (복사하였을때 사용하셨던 이름으로 사용)

 

중간 Tip

2~5번까지의 단계는 각각 시간이 걸립니다. 그렇기 때문에 PuTTY로 창을 여러개 띄어 각각 진행하시면 되겠다라고 저는 생각해본적이 있습니다. 그러나. 그렇게 되어지면 시스템빌드가 꼬여버리기 때문에 그리하면 안됩니다.

아래와 같이 4가지 단계를 하나로 뭉쳐서 실행을 해주시고 퇴근을 한다거나 다른데가서 볼일을 몇시간 보고 와서 install.txt 파일을 체크해보면 되겠습니다.!!

 

test# cd /usr/src/

test# make buildworld >> install.txt && make buildkernel KERNCONF=MYKERNEL >> install.txt && make installkernel KERNCONF=MYKERNEL >> install.txt && make installworld >> install.txt

 

 

## 논리연산자 && (AND)를 사용하여 순서대로 실행되도록 해놓고. (전부 2~4시간소요)

## 다른일을 하시다가. 다음날 파일로 저장해둔 install.txt파일로 설치가 제대로 되어진지 확인해봐요.!

## && 순차적으로 진행되어지는 부분중에 error가 발생되어지면 그 뒤에 오는 것들은 중단되어집니다.

 

 

6. 설치확인

 

test# cd /usr/src

test# grep '>>>' install.txt
>>> World build started on Tue Jun  5 14:16:47 KST 2012
>>> Rebuilding the temporary build tree
>>> stage 1.1: legacy release compatibility shims
>>> stage 1.2: bootstrap tools
>>> stage 2.1: cleaning up the object tree
>>> stage 2.2: rebuilding the object tree
>>> stage 2.3: build tools
>>> stage 3: cross tools
>>> stage 4.1: building includes
>>> stage 4.2: building libraries
>>> stage 4.3: make dependencies
>>> stage 4.4: building everything
>>> World build completed on Tue Jun  5 15:05:48 KST 2012
>>> Kernel build for MYKERNEL started on Tue Jun  5 15:23:19 KST 2012
>>> stage 1: configuring the kernel
>>> stage 2.1: cleaning up the object tree
>>> stage 2.2: rebuilding the object tree
>>> stage 2.3: build tools
>>> stage 3.1: making dependencies
>>> stage 3.2: building everything
>>> Kernel build for MYKERNEL completed on Tue Jun  5 15:40:32 KST 2012
>>> Installing kernel MYKERNEL
>>> Making hierarchy
>>> Installing everything
test#

 

## grep 명령어를 활용하여 주요 타이틀이 나올때마다 나오는 '>>>' 를 활용하여 전체적 설치순서를 확인한다.

 

 

test# tail -f install.txt

...

cd /usr/src/etc/../share/man; make makedb
makewhatis /usr/share/man
makewhatis /usr/share/openssl/man

 

## tail 명령어로 install.txt파일의 마지마가부분에 위와 같은 부분으로 마무리 되는지를 확인한다.

 

7. mergemaster

 

 

test# mergemaster

..

*** Comparison complete

..


 

 

 

8. reboot

test# reboot

or

test# shutdown -r now

 

9. uname -a

test# uname -a
FreeBSD test.soulrider.co.kr 8.3-RELEASE-p2 FreeBSD 8.3-RELEASE-p2 #0: Tue Jun  5 15:30:09 KST 2012     root@test.soulrider.co.kr:/usr/obj/usr/src/sys/MYKERNEL  i386

 

## 새로부팅을 하고 나서 uname -a 로 내가 설정한 이름으로 변경되어진것을 확인할 수 있습니다.

 

11. 정리

test# cd /usr/src/
test# make clean
.

.

 

test# cd /usr/ports/
test# make clean
.

.

.

## 이부분은 각각 실행이 가능하니 창을 하나 더 열어 동시에 진행해주세요!!

## 이것도 은근히 시간걸립니다.

 

 

freebsd 핸드북 중. 자주나오는 질문 중 하나..

 

world 만들기를 끝내고 /usr/obj를 삭제할 수 있는가?

간단히 대답하면 삭제할 수 있다.
/usr/obj는 컴파일 하는 동안 생성된 모든 오브젝트 파일을 가지고 있다. 보통 "make world"의 첫 번째 단계는 이 디렉터리를 삭제하고 다시 시작하는 것이다. 만들기를 끝낸 후 /usr/obj를 가지고 있다면 수많은 디스크 공간을 낭비하는 것이다(현재 대략 340MB 정도).
그러나 여러분이 기억하고 있다면 “make world”에서 이 단계를 건너 뛰어도 된다. /usr/obj로 대부분의 소스를 다시 컴파일 할 필요가 없기 때문에 세부적인 빌드를 더욱 빠르게 할 수 있다. /usr/obj를 삭제해야 되는 이유는 이상한 의존성 문제가 발생하여 빌드가 실패한다. 이 문제는 FreeBSD 메일링 리스트에 종종 보고되고 있다.

 

.

.

## 그래서 저는 삭제를 했습니다..-_ - 서버가 무거워지는게 싫어서 필요없는 것들은 바로바로 지워줍니다.

test# cd /usr/obj

test# rm -r usr/

 

## 명령어 설명.

rmdir [옵션] 디렉토리  

; rmdir은 하위 디렉토리나 파일이 없는 디렉토리를 지우는 명령어이다. 

 

test# rmdir usr/
; 디렉토리가 비어있지 않아서 삭제가 되지 않는다.
 만약 하위 디렉토리나 파일이 있는 경우의 디렉토리를 삭제하려면 rm -r 옵션으로 삭제해야 한다. 

test# rm -r usr/
; 이렇게 하면 usr/ 디렉토리에 하위 디렉토리가 있던지 없던지 간에 무조건 삭제한다.

 

 

Posted by SoulrideR

댓글을 달아 주세요