A.2. 커널 만들기

맞춤 커널을 만드는 방법은 다음과 같습니다 (모든 작업을 루트로 실행하셔야 합니다):

알림알림
 

이 예시에서는 2.4.21-1.1931.2.399.ent을 커널 버전으로 사용합니다 (커널 버전은 다를 수도 있습니다). uname -r 명령을 입력하시면 커널 버전을 알 수 있습니다. 2.4.21-1.1931.2.399.ent을 알아낸 커널 버전으로 바꾸십시오.

  1. 쉘 프롬프트를 열고 /usr/src/linux-2.4/ 디렉토리로 이동합니다. 앞으로 모든 명령어는 이 디렉토리에서 실행되어야 합니다.

  2. 안정적인 환경에서 소스 트리를 사용하여 커널 개발을 시작하는 것이 중요합니다. 따라서 먼저 make mrproper 명령을 사용하여 소스 트리 주위에 흩어져 있는 이전 버전의 잔여물이나 설정 파일을 제거해 주십시오. 만일 /usr/src/linux-2.4/.config라는 기존 설정 파일이 있다면, 이 명령을 실행하기 전에 다른 디렉토리로 백업하신 후 나중에 다시 이 디렉토리로 가져옵니다.

  3. 기본 Red Hat Enterprise Linux 커널의 설정을 사용하여 시작하시길 권장합니다. 이렇게 하시려면, /usr/src/linux-2.4/configs/ 디렉토리에서 시스템 구조에 맞는 설정 파일을 /usr/src/linux-2.4/.config로 복사하시기 바랍니다. 만일 시스템에 한 개 이상의 프로세서가 있다면, 키워드 smp를 포함한 파일을 복사하십시오. 그러나 만일 시스템의 메모리가 4 기가바이트 이상이라면 키워드 hugemem을 포함한 파일을 복사하셔야 합니다.

  4. 다음으로 셋팅을 사용자 설정하십시오. make menuconfig 명령을 사용하여 리눅스 커널 설정 프로그램을 실행하는 방법을 사용하시길 권장합니다. X 윈도우 시스템을 필요하지 않습니다.

    설정을 마친 후, 종료을 선택하신 후 새 커널 설정 파일 (/usr/src/linux-2.4/.config)을 저장하기 위해 네 버튼을 선택하십시오.

    설정에 아무런 변화를 주지 않은 경우에도 계속 진행하시기 전에 make menuconfig (또는 커널을 설정하는데 사용된 다른 방법)을 실행하셔야 합니다.

    커널 설정을 위해 사용 가능한 다른 방법들은 다음과 같습니다:

    • make config — 상호 대화식 텍스트 프로그램. 한 줄에 한 개씩 구성 요소들에 대한 질문이 나타나면 여러분은 한번에 한개씩 대답합니다. X 윈도우 시스템이 필요하지 않는 방법으로서, 이전 질문에 대한 대답 변경이 불가능합니다.

    • make xconfig — 이 명령은 X 윈도우 시스템과 tk 패키지가 있어야 실행 가능합니다. 이 명령은 설정 파일을 믿을 수 있게 구문 분석하지 못하므로 사용이 권장되지 않습니다.

    • make oldconfig — 기존 설정 파일을 읽은 후 이전에 존재하지 않은 새로운 질문에 대한 응답만을 요구하는 비대화식 스크립트입니다.

    알림알림
     

    kmod와 커널 모듈을 사용하시려면, 설정 과정에서 kmod support와 module version (CONFIG_MODVERSIONS) support에 대해서 Yes라고 대답하셔야 합니다.

  5. /usr/src/linux-2.4/.config 파일을 생성하신 후, 모든 의존성 관계를 올바르게 설정하기 위하여 make dep 명령어를 실행하시기 바랍니다.

  6. make clean 명령을 사용하여 커널 개발에 사용될 소스 트리를 준비합니다.

  7. 기존 커널을 덮어쓰지 않도록 개발 중인 사용자 정의 커널에 다른 버전 번호를 부여하시기를 권장합니다. 이렇게 하시는 것이 사고 발생시 가장 쉽게 복구할 수 있는 방법입니다. 다른 방법에 대하여 알고 싶으시다면, http://www.redhat.com/mirrors/LDP/HOWTO/Kernel-HOWTO.html 또는 /usr/src/linux-2.4/의 Makefile에서 자세한 사항을 참조하시기 바랍니다.

    /usr/src/linux-2.4/Makefile 파일을 보시면, EXTRAVERSION로 시작하는 줄 마지막에는 custom이라는 단어가 기본으로 포함되어 있습니다. 줄 마지막 부분에 문자열을 삽입하시면 아직 작동하는 이전 커널과 새 커널 (2.4.21-1.1931.2.399.entcustom 버전)이 시스템 상에 동시에 존재하게 됩니다.

    커널에 고유한 이름을 부가하시려면, 이 문자열 마지막에 날짜 (또는 다른 식별자)를 함께 첨가해 주십시오.

  8. x86, AMD64 및 Intel® EM64T 구조에서는 make bzImage 명령을 사용하여 커널을 만드십시오. Itanium 구조의 경우 make compressed 명령을 사용하시기 바랍니다. S/390 및 zSeries에서는 make image를 사용하시고, iSeries와 pSeries에서는 make boot을 사용하여 커널을 만드시면 됩니다.

  9. make modules 명령을 사용하여 설정하신 모듈을 만듭니다.

  10. make modules_install 명령을 사용하여 커널 모듈을 설치하실 수 있습니다. (커널 모듈을 만들지 않은 경우에도 설치 가능합니다). 반드시 밑줄 (_)을 입력하는 것을 잊지 마십시오. 이 명령은 /lib/modules/<KERNELVERSION>/kernel/drivers 디렉토리 경로에 커널 모듈을 설치할 것입니다. (앞의 경로에서 KERNELVERSION은 Makefile에서 지정된 커널 버전입니다). 이 예시에서 디렉토리 경로는 /lib/modules/2.4.21-1.1931.2.399.entcustom/kernel/drivers/가 됩니다.

  11. make install 명령을 사용하여 새 커널과 관련 파일들을 적절한 디렉토리로 복사해 주십시오.

    이 명령은 /boot 디렉토리에 커널 파일을 설치할 뿐만 아니라 새로운 initrd 이미지를 만드는 /sbin/new-kernel-pkg 스크립트를 실행하고 부트로더 설정 파일에 새로운 항목을 추가합니다.

    SCSI 어댑터를 가지고 계신 경우, SCSI 드라이버를 모듈로 컴파일하거나 (Red Hat Enterprise Linux에서 디폴트인) ext3 지원을 갖춘 커널을 모듈로 컴파일하기 위해서는 initrd 이미지가 필요합니다.

  12. initrd 이미지와 부트로더가 올바르게 만들어졌는지와 2.4.21-1.1931.2.399.ent 대신 맞춤 커널 버전을 사용하는지 확인해 주십시오. 이러한 수정된 사항을 확인하는 방법에 대한 보다 자세한 정보를 원하신다면, 39.5 절과 39.6 절을 참조하시기 바랍니다.