7.3. 맞춤 커널의 빌드와 설치

먼저, 커널 빌드 디렉토리에 대해서 간단히 알아보겠습니다. 여기서 언급하는 모든 디렉토리는 /usr/src/sys 디렉토리에 대한 상대 위치로 나타날 것입니다. 이 디렉토리는 /sys로부터도 접근할 수 있습니다. 그 아래에는 커널의 각 부분을 나타내는 많은 디렉토리들이 있지만, 우리가 보아야 할 가장 중요한 것은 arch/conf 과 compile 이 될 것입니다. arch에서 여러분은 맞춤 커널에 대한 설정을 수행할 것입니다. 또한, compile에서 커널이 실제로 빌드될 것입니다. arch 은 i386, alpha, 또는 pc98 을 의미합니다. (PC98은 일본에서 인기있는 또다른 PC 하드웨어의 개발 가지입니다.) 특정 아키텍처(i386, alpha, pc98등)의 디렉토리에 들어있는 모든 것은 그 아키텍처에만 적용되는 것이며, 나머지는 모두 FreeBSD가 포팅될 수도 있는 모든 플랫폼들에 대해 일반적인 것들입니다. 각각의 지원되는 장치, 파일시스템, 그리고 그 자신의 서브디렉토리 내에 있는 옵션들과 함께 논리적인 디렉토리 구조를 이햐하시기 바랍니다.

Note: 만약 /usr/src/sys 디렉토리가 존재하지 않는다면 커널 소스는 설치되어 있지 않은 것입니다. 커널 소스를 설치하는 가장 쉬운 방법은 /stand/sysinstall를 루트 권한으로 수행하는 것입니다. 그리고 메뉴에서 Configure를 선택하고 이어서 Distributions를 선택한 후에 src을 선택하세요. 마지막으로 sys를 선택하면 됩니다.

다음으로, arch/conf 디렉토리로 가서 GENERIC 설정 파일을 여러분이 커널에 부여하고자 하는 이름으로 복사하십시오. 예를 들어서:

    # cd /usr/src/sys/i386/conf
    # cp GENERIC MYKERNEL

보통, 이 이름은 모두 대문자로 기술합니다. 만약 여러 대의 다른 하드웨어에 설치되어 있는 FreeBSD를 관리하고 있는 경우라면 이 이름의 앞머리에 각 머신의 호스트명을 넣는 것이 좋습니다. 이 예에서는 MYKERNEL이라고 부르도록 하겠습니다.

Note: 앞으로 설명되는 모든 명령어는 root 계정에서 수행하여야 합니다. 그렇지 않으면 permission denied에러가 발생할 것입니다.

자, 이제 MYKERNEL을 여러분이 좋아하는 에디터를 이용해서 편집해 봅시다. 만약 시스템을 설치한 후라면, 사용가능한 에디터는 vi뿐일 것입니다. 이 에디터는 여기서 설명하기엔 너무 복잡하므로 설명하지 않습니다. 하지만, 참조 서적에 있는 책들을 참조하십시오. 그렇지만, FreeBSD에는 "ee"라고 하는 보다 쉬운 에디터가 있습니다. 만약 여러분이 익숙하지 않은 조보자라면 이 에디터를 택하십시오. 가장 위에 있는 주석들을 변경해서 여러분의 구성 파일임을 표시하고, 변경한 사항들을 주저없이 기록하세요. 그렇게 해서 GENERIC 과 구별되게 해 놓으세요.

만약 SunOS나 다른 BSD 운영체제를 빌드한 적이 있다면, 이 파일의 대부분은 매우 친숙할 것입니다. 반면, DOS와 같은 다른 운영체제를 사용했었다면 GENERIC설정 파일이 매우 어렵게 보일 수도 있습니다. 그렇다면 설정 파일절을 천천히 주의깊게 읽어 보십시오.

Note: 만약 소스 트리를 최신의 FreeBSD 프로젝트에 있는 소스 트리와 동기화 시키는 경우라면, 작업을 수행할 때에는 항상 미리 /usr/src/UPDATING을 확인하도록 하십시오. 이 파일 내에는 FreeBSD를 갱신하는 데 있어서 중요한 사항들이 기술되어 있습니다. /usr/src/UPDATING은 항시 여러분의 FreeBSD 버전에 맞추어서 갱신되고 있기 때문에 관련된 정보에 대해서는 이 핸드북보다 정확한 정보를 가지고 있습니다.

만약 FreeBSD 4.0 전의 버전을 사용하고 FreeBSD 4.0이나 더 높은 버전으로 업그레이드할 의사가 없다면, 또는 FreeBSD의 release version을 사용하고 있으며 /usr/src디렉토리에 sys/디렉토리만 있는 경우에는 다음과 같은 명령으로 커널을 컴파일하고 설치하십시오.

When you are finished, type the following to compile and install your kernel if you are using FreeBSD prior FreeBSD 4.0 and don't want to upgrade to FreeBSD 4.0 or higher with this step, or if you are using a release-version of FreeBSD and your /usr/src/ directory only contains the sys/ sub-directory.

Note: 만약 FreeBSD 커널을 업그레이드하는 경우라면 새로운 커널 소스를 얻은 장소에서 새 버전의 config(8)을 가져와야 합니다. 이것은 /usr/src/usr.sbin에 있습니다. 이 소스 코드를 함께 다운로드받으세요. 그리고 다음 명령어를 실행하기 전에 config(8)을 빌드하고 설치하십시오.

    # /usr/sbin/config MYKERNEL
    # cd ../../compile/MYKERNEL
    # make depend
    # make
    # make install

만약 4.X 대 또는 더 높은 버전으로 업그레이드하는 지금 막 업그레이드한 경우라면(예를 들어 3.X 에서 4-STABLE 로, 또는 4-STABLE에서 나중 버전의 4-STABLE로 가는 경우 ) build the world(make build)를 하였는지를 확인한 뒤에 다음 명령을 수행하십시오.

    # cd /usr/src
    # make buildkernel KERNEL=MYKERNEL
    # make installkernel KERNEL=MYKERNEL

만약 어떤 경로로든 간에 소스 트리를 업그레이드하지 않은 상태라면 (CVSup, CTM를 수행시키지 않았든지, anoncvs를 사용하지 않은 상태라면 ) config, make depend, make, make install 의 과정을 수행하십시오.

Warning만약 여러분의 소스를 마지막으로 커널 빌드를 수행한 다음에 업그레이드한 적이 있다면 반드시 make buildkernel를 사용하여야 합니다. 그렇지 않으면 기존의 유틸리티 프로그램들이 커널을 빌드하는데 사용될 것이며, 이로 인해 작업이 실패할 수도 있습니다. 소스를 업데이트한 상태라면, config/make는 사용하지 마십시오!

새로운 커널은 루트 디렉토리에 /kernel이라는 이름으로 복사되고, 기존의 커널은 /kernel.old 이라는 이름으로 보존됩니다. 자, 이제 시스템을 재부팅하십시오. 무언가가 잘못되었다면 이 문서 맨 끝에 있는 무언가 잘못되었을 때 란을 참조하십시오. 새로운 커널이 부팅되지 않을 때절을 부팅되지 않을 때를 대비하여 확실히 읽어 두십시오.

Note: 새로운 장치(사운드 카드와 같은)을 추가하였다면 몇몇 장치 노드를 추가해야 할 수도 있습니다. 이러한 장치 노드는 사용하기 전에 /dev에 추가되어야 합니다.