■ 리눅스 커널 소스는 압축된 것이 약 20MB 이상이다. 그러므로 수 많은 디렉토리와 수 많은 파일을 포함하고 있다.  여기서는 리눅스 커널 소스의 압축을 풀면 생기는 디렉토리에 대해 알아보자.(아래의 내용은 버전 2.4.16 ~ 2.4.18의 것을 참조한 것이다.)

- 모든 코드는 /usr/src/linux에서 시작한다고 가정한다.


(1) 커널 소스 디렉토리 구조

○ Documents
: 커널에 관계된 문서들이 들어 있다. 커널을 분석하거나 할 때 필요한 정보는 여기를 먼저 보고나서 다른 곳을 찾는 것이 빠른 정보를 얻는 길이다.

○ kernel
: 커널의 핵심 코드,스스템콜,스케쥴러,시그널 핸들링
 
○ ipc
: 전통적 프로세스간의 통신,세마포어,공유메모리,메세지큐
 
○ lib
: 커널 라이브러리 함수(printk와 같은 것 들)
 
○ mm
: 버추얼 메모리 관리,페이징, 커널 메모리 관리
 
○ scripts
: 코드 사이의 의존성을 만들어주는 등의 스크립트나 실행 파일이 모여있다.
 
○ arch
: 아키텍쳐에 관계된 코드가 들어있다.
- alpha
- arm
- m68k
- mips
- ppc
- sparc
- i386
     boot - 부트스프랩코드,메모리/디바이스 설정
     kernel - 커널 시작점,컨텍스트 스위칭
     lib
     math - emu
     mm - 각 아키텍쳐에 관계된 메모리 코드

○ fs
: 버추얼 파일 시스템 인터페이스,여러 파일시스템 지원
- coda
- ext2
- hpfs
- msdos
- nfs
- ntfs
- ufs

○ init
: 커널이 실행되기 위한 모든 코드,프로세스 0,프로세스 생성
 
○ include
: 커널에 관계된 헤더 파일,asm-*은 아키텍쳐 관련,linux는 리눅스 커널 관련
- asm-alpha
- ...
- asm-i386
- linux
- net
- scsi
- video
- ...

○ net
: 많은 종류의 네트웍 프로토콜 지원,소켓 지원
- 802
- appletalk
- decnet
- ethernet
- ipv6
- unix
- sunrpc
- x25
...

○ driver
: 하드웨어에 대한 드라이버
- block : 하드디스크 같은 블럭 디바이스
- cdrom
- char : 시리얼 포트,모뎀,tty 같은 문자 디바이스
- net : 네트웍 카드
- pci : PCI 버스 컨드롤
- pnp
- sbus
- scsi : SCSI 카드
- sound : 사운드 카드
- viceo
- ...

 
※ 참고자료.
2012/06/19 - [B ook summary/Kernel Internal] - Chapter 2 :: 리눅스 커널 구조 

 

by 민트앤라떼 2011. 10. 5. 09:42