강의 목표 커널 구성 커널 컴파일

Download Report

Transcript 강의 목표 커널 구성 커널 컴파일

제 6 강 커널 컴파일
목 차

강의 목표

커널 구성

커널 컴파일
강의 목표

커널의 컴파일 과정을 안다.

Makefile을 이해 한다.

커널의 모듈화를 이해한다.

커널에 디바이스를 포함시키는 방법을 안다.
커널 구성

커널이란 운영체제의 핵심을 이루는 요소로서 컴퓨터내의 자원
을 사용자 프로그램이 사용할 수 있도록 관리하는 프로그램

커널의 역할은 사용자가 작동시키는 응용프로그램과 하드웨어
간의 조정자 역할

동시에 수행되는 여러 응용프로그램들(엄밀히 말하자면 프로세
스들과 쓰레드들이다.)을 위해 메모리 관리

컴파일이란 컴파일러를 이용하여 프로그램 소스로부터 수행 가
능한 바이너리 코드를 만드는 과정
커널 구성 실습

CD의 내용을 /320 디렉토리 아래에 모두 복사하도록 하자.

mkdir /320
mount /dev/cdrom /media
cp –R /media/* /320


커널 구성
CD의 Kernel/linux/arch/arm/configs
디렉토리 아래에 있음

커널 디렉토리 최상위 위치에서 아래와 같이 명령
make xhyper320_tku_defconfig
 make xhyper320tku_defconfig은 커널을 컴파일 할 때 필요한 옵션을
X-Hyper320-TKU에 맞추어 지게 만들어 놓은 것이다. 이는 한번만 실행
한다.
320 디렉토리아래의 Kernel/linux/ 디렉토리에 가서
명령을 수행함
커널 구성

make menuconfig 명령으로 kernel configuration 창으로 들어간다
커널 구성


make menuconfig 명령으로 kernel configuration 창으로 들어간다
여기서 커널을 built-in(*)을 할 것인지 Module(M) 형태로 할 것인지
등을 선택하고 컴파일 하는 과정이다. 또한 메뉴를 새로 추가 할 수도
있다.
커널 구성
 커널 컴파일 메뉴사용법

메뉴방식의 화면에서 단축 글쇠(황색 글자)와 방향키로 메뉴 사이를
옮겨 다닐 수 있다.

∙ “---->” 표시가 있는 곳에서 엔터키를 누르면 하위 메뉴가 열린다.

∙ <ESC>를 두 번 누르거나 <Exit>를 선택하면 상위 메뉴로 올라간다.

∙ “h” 키를 누르거나 아래의 <Help>를 선택 하게 되면 도움말을 볼 수
있다.
커널 구성
 커널 컴파일 메뉴사용법

∙ <Tab> 키를 누르면 컨트롤 사이를 옮겨 다닌다.

∙ 질문에 대해 Y는 커널에 포함, N은 제외, M은 모듈을 뜻한다.


∙ 설정 상태는 [ ] 또는< > 안에 “ * ”(선택), “ M ” (모듈), 빈칸(제외)로
표시된다.
∙ 모듈기능(M)은 “< >”으로 표시된 질문에만 쓸 수 있다.
커널 구성

1) Code maturity level options ↲
커널 구성

[*] Prompt for development and/or incomplete code/drivers
 커널 코드의 성숙
도를 선택하는 부분
으로 개발버전 수준
의 소스를 사용하게
선택해 주는 것이다.
커널 구성

General setup ---> ↲
 ① 버스 프로토콜, 절
전기능 등 시스템에 전반
적으로 영향을 주는 설정
커널 구성

3) Loadable module support --->↲
 ① [*] Enable Loadable module Support↲
 ② [*] Module unloading
 ③ [*] Forced module unloading
 버전 1.2 이후부터 리눅스 커널은 모듈 기능을 이용한다.
 모듈을 이용하면 메모리를 효율적으로 사용할 수 있고, 커널 크기가 감
소한다.
 모듈은 스스로가 컴파일 되어 독자적인 기능을 가지므로 모듈로 설정한
기능에 변화가 있더라도 전체 커널에는 손대지 않을 수도 있다. 반드시 [*]
를 선택한다.
커널 구성

3) Loadable module support --->↲
 모듈을 이용하면 자주 쓰
이지 않는 장치 드라이버나
기능들을 커널 바깥에 모듈
로 만들어 두었다가 필요할
때에만 동적으로 메모리에
적재하여 사용한다. 작업이
끝나면 메모리에서 다시 제
거하므로 메모리를 효율적으
로 사용할 수 있고, 커널 크
기가 감소한다.
커널 구성

4) System Type
 ① System Type --->↲
 ARM system type
(PXA2xx-based) --->↲
 시스템 Type 중 X-HYPER
PXA의 CPU 타입을 설정하는
창이다.
커널 구성

4) System Type
 PXA2xx-based를 선
택하여 그 안의
PXA2xx-based가 기본
적으로 설정되어 있는
것을 확인한다
커널 구성

4) System Type
 ② System Type --->↲
 Intel PXA2xx
Implementations --- >↲
커널 구성

4) System Type
 하위 창으로 이동하면
아래와 같이 X-hyper320
TKU Development Platform
가 선택되어 있는 것을 볼
수 있다.
커널 구성

4) System Type
 PXA320 Processor 선택
커널 구성

5) General setup --->↲
커널 구성

5) General setup --->↲
 커널 커맨드를
(CONFIG_CMDLINE) 아래와 같이
한다.
 (root=/dev/mtdblock2 rw
rootfstype=yaffs2
init=/sbin/init
console=ttyS0,38400 rw
mem=128M)
 CONFIG_CMDLINE - Kernel로
넘겨지는 기본 인자들. Console
세팅, 메모리 사이즈, Root
filesystem의 종류 등을 세팅한
다.
커널 구성

6) Floating point emulation --->↲
 [*] NWFPE math emulation
 [*] Support extended precision
커널 구성

7) Userspace binary formats --->
 [*] Kernel support for ELF
binaries
커널 구성

8) Power management options --->
커널 구성

9) Networking --->
커널 구성

9) Networking --->
Ⓐ <*> Unix domain sockets
Ⓑ [*] TCP/IP networking
리눅스 시스템이 TCP/IP 네트워크가 되게 지원해주는 기능
Ⓒ [*] IP: kerneL LeveL autoconfiguration:
Ⓓ [*] IP: DHCP Support
Ⓔ [*] IP: BOOTP Support
Ⓕ [*] IP: RARP Support
클라이언트 시스템이 부팅할 때 DHCP나 BOOTP 서버로부터 네트워크 설
정 정보를 가져오는 기능이다. 디스크가 없이 부트하는 시스템에 쓰이
며, “NFS를 통한 루트 파일시스템” 항목도 역시 [Y]를 선택해야 한
다.
커널 구성

9) Networking --->