강의 목표 커널 구성 커널 컴파일
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 --->