Download presentation
Presentation is loading. Please wait.
1
2010. 10 안양대학교 전기전자공학과 서 삼 준 Kernel Image Generation
2
Contents Understanding of Linux kernel – 기능 – 구조 –file system Kernel image generation (compile) 방법 –CPU dependent patch: ARM(SA 1100), Xscale(PXA 255) – make menuconfig, make depend, make clean, make zImage Kernel zImage generation Summary
3
Kernel ? Kernel, Nucleus – 운영체제의 핵심 기능 (core functions) 을 담당 –DRAM 에 상주하며, 시스템 구동에 필요한 환경설정과 수행되는 프 로세스의 scheduling Kernel 기능 –Process Management –Memory Management –File System Management –Device Driver Management –Network Management – 기타 : Interrupt processing, Procedure Call/Recover 정보통신, 컴퓨터기술의 발전으로 커널의 기능 변화 – 종래 커널은 단순한 process, memory, device, file system 관리에서 network, GUI 관리까지 확장
4
Kernel Function Core (kernel) + Utilities Hardware Scheduler User Processes System Call User Processes Interface(Library Routines) I/O ServicesProcess Management Memory ManagementFile System I/O Buffer Device Driver Kernel
5
Linux Kernel 기본 구조 Process, Memory, File System, Networking, Device Drivers Management 사용자 관점에서 Kernel: User program (User Application), Library & Shell, System Call, Kernel, Hardware
6
Kernel 의 세부 기능 Process management – 프로세스의 생성 및 소멸, 프로세스간의 통신 (IPC, pipe, signal), CPU 스케 줄링 동기화, 제한된 자원에서 다중 프로세서의 효율적인 관리 기법 등 Memory management – 가상 메모리 관리기법, 메모리 하드웨어의 효율적인 관리 File system management – 가상 파일 시스템 ( VFS ) 에 의한 여러 파일 시스템 지원, 디스크의 물리구조에 따른 논리기법 표현, 파일 /directory 관리, block 입출력을 위한 버퍼 cache 관리 Device management – 입출력 요청의 검증, 입출력 작업 scheduling, 주변장치간의 자료전송, 제어 기 관리, 인터럽트 요청 및 처리 Network management – 통신 프로토콜 구현 (TCP/UDP, IP 등 ), 네트워크 routing 및 주소 지정, 네트 워크 제어기 관리, 네트워크 드라이버와 접속
7
Linux kernel 특징 (1) The process/Kernel mode –System call: User mode, kernel mode 로 수행 –Kernel threads: Boot 초기에 init 를 kernel thread 로 생성 Process Implementation –Process descriptor Reentrant Kernels –Reentrant, Reentrant functions, Kernel control path Process Address Space – mmap( ) Synchronization & Critical Regions –Non-preemptive kernel, interrupt disabling, semaphores, spin locks, avoiding deadlock
8
Linux kernel 특징 (2) Signal & IPC –Notifications, synchronous errors & exceptions –Semaphores, message queues, shared memory Process Management –Process groups, login sessions Memory Management –Random access memory usage, kernel memory allocator, process virtual address space handing, swapping & caching Device Drivers
9
Linux Kernel Architecture (1) 5 Functional Blocks –File system management: VFS(Virtial File System) –Process management –Device (I/O) management –Memory management –Network management Device Interface –Device Driver (Character, Stream, Block unit) System Call Interface –User mode, Supervisor/Kernel mode
10
Linux Kernel Architecture (2) Process-1Process-2Process-3Process-n System Call Interface File Manager Ext2fs, proc, nfs Msdoc, ………. Process Manager Task manager Scheduler Signaling Memory Manager Network Manager Ipv4, ipv6 Ethernet, ATM, … Device Manager Console, Keyboard SCSI, CD-ROM PCIbus BlockChar Device Interface Device-1Device-2Device-3Device-n buffer cache User Space Device Space Kernel Space VFS (Virtial File System)
11
Monolithic vs Micro kernel (1) Monolithic kernel – 하나의 커널에 필요한 모든 기능이 통합되어 있는 형태 – 코널 내부에 시스템 운영에 필요한 서비스 루틴으로 구성 – 적은 메모리 공간에 필요한 기능을 내장 함으로서 “ function call ” 로 기능 제공 – 구현이 간단, 시스템 자원을 효율적으로 관리하는 장점 – 다양한 환경의 시스템에 포팅이 어려운 단점과 커널의 크기가 상대적으 로 커지는 단점 – Linux, Solaris, AIX, HP-UX, DG-UX, IRIX 등 Micro kernel – 핵심적인 기능 구현한 최소한의 기능을 커널로 구성 – 서버 모듈 ( 서비스 프로세스 ) 로 나눠 설계하고, 이들 서버를 관리하는 기능 을 커널로 구성 – 기능 확장이 용의, 시스템의 재사용에 장점 – 메시지 전달 방식에 의한 기능 접근으로 태스크 스위칭에 오버헤드 – 자원의 효율적 이용에 단점 –CPU Mach OS, Digital Unix, Sunsoft Chorus 등
12
Monolithic vs Micro kernel (2) Monolithic, Micro kernel 구조 (b) Micro kernel(a) Monolithic kernel System Service API Hardware Integrated Kernel Architecture 1 1 n n 2 2 System Service API Hardware Micro Kernel Architecture 1 1 n n 2 2 Service Server
13
System Call User 모드에서 커널 모드로 변환 : System Call, Interrupt 모드 변환과정 –Trap –IRQ(IRQ service : ISR, Interrupt Service Routine) User ModeKernel Mode System Call & Interrupt (trap, IRQ)
14
System Call: Mode Conversion Mode Conversion Task is Running Execute ISRSystem Call Placed Execute System Functions Return from System Call Schedule New TaskTask Continues Running Schedule Bottom half if Needed IRQTrap Slow Fast ret_from-sys_call ISR: Interrupt Service Routine res_from-sys_call
15
Kernel 모듈과 관계 프로그램 수행 모드 : Kernel model, User mode Context Switch ( 환경 전환 ) User Application 은 1) System Library, 2) Software Interrupt 를 이 용하여 Trap 을 걸어서 Kernel 에 접근 : System call interface User mode System mode(TRAP) Kernel mode : ret_from_sys_call( )
16
Kernel Generation Procedures (1) Kernel source 를 작업 디렉토리 (/usr/src/linux) 에 복사 Tool Chain 환경 설치 확인 : cross-compiler (/usr/local/arm/bin) ARM, Xscale 환경으로 patch ---------------------------- 커널의 컴파일 환경을 타켓보드에 맞게 적용 : make empos_config 작업 디렉토리에서 이전에 작업한 관련 커널 작업 환경을 삭제 : make clean 커널 설정 수행 ( make menuconfig ):. config – Make empos_config 를 통해 구성된 메뉴를 소스에 적용 GNU C compiler 를 이용하여 Makefile 간의 상호 연관성 파일 생성 : make dep (.depend 파일에 소스의 pass 정보가 저장 ) – 컴파일을 수행한 후에 불필요한 object 파일을 삭제 : make clean 커널을 compile ( make zImage ): arch/arm /boot/zImage
17
Kernel Generation Procedures (2) 주요 kernel generation 작업 make menuconfig make depend make zImage Kernel Image file: zImage Kernel configuration file:.config depend file:.depend Device Drivers Hardware Environments
18
Kernel Source 구조 커널 소스 : http://www.kernel.org/pub/linux/v2.4 소스 버전 할당 원칙 : 2.4.19 – 메인 버젼 번호 ( 커널 상의 변화 ) – 짝수 버젼은 안정 버전으로 일정 시험을 통과, 홀수 버전은 시험용 버전 – 커널의 작은 변화에 따른 업그레이드 버전 주요 소스 디렉토리 –arch( arch/arm/kernel, mach-sa-1100, mm ), drivers –init, kernel, fs, mm, net, lib, include
19
Linux File system Ext2 파일 시스템 사용 –NTFS, VFAT, UFS, NFS 등의 다양한 파일 시스템의 사용 가능 –VFS 으로 실제 사용자와 인터페이스 : 커널과 파일 시스템 의 중간에서 일 관성 있는 파일 시스템을 제공 –2Gbytes 의 파일 크기와 4Tbytes 늬 전체 파일 시스템 구성 가능 – 가변 블록 크기와 확장가능 기능 JFFS(Journalling Flash File System) – 스웨덴 Axis Communications 에세 개발, 디스크가 없는 임베디드 시스템 에 flash 메모리를 이용한 전원 / 파손에 안전한 파일 시스템 –MTD 디바이스를 통해 접근 디렉토리 /root bin boot dev etc home lib mnt proc root sbin tmp usr var user1 user2 include lib local sbin src
20
Kernel Source Directories Source directory LINUX Modules mmnetkernelinitlib include lpc unix inet fsarchdrivers mips alpha sparc ppc i386 net char block scsi sound asm-alpha linux asm-i386 asm-m88k asm-generic asm-mips asm-sparc ext ext2 xiafs lsofs hpfs unsdos nfs proc minix msdos sysv kernel boot mm math-emu
21
Kernel Compile Blob> tftp zImage kernel Blob> flash kernel #jflash-Xscale zImage make menuconfig make depend make zImage Kernel Image file: /arch/arm/boot/ zImage (compressed image file) Kernel configuration file:.config (make empos_config, make oldconfig) depend file:.depend Device Drivers Check Hardware Environments make clean Delete object files (xxx.o) Target Board: HB-EMPOS Step 1 Step 2 Step 3 Step 4 Step 5 Step 6 move zImage to ROM 득정 하드웨어인 경우 scripts 로 설정
22
make menuconfig (1)
23
make menuconfig (2)
24
make menuconfig (3)
25
make menuconfig (4)
26
make menuconfig (5)
27
make menuconfig (6)
28
Configuration (1).config ( make menuconfig ) 에서 해당 하드웨어 환경에 따른 Configuration Parameter 를 정의 – COBFIG_CPU_32=y, COBFIG_CPU_SA1100=y, CONFIG_VT=y 등등 하드웨어 환경에 따른 설정에 해당되는 서브 모듈을 해당 디렉토리에서 바인딩 (make dep): Config.in 가상터미널 설정 환경의 예제
29
Configuration (2) UART 예제 Makefile
30
make menuconfig (7)
31
make menuconfig:.config (1)
32
make menuconfig:.config (2)
33
make dep: end (2)
34
make dep: start (1)
35
make dep:.depend
36
make dep:.hdepend
37
make clean: start (1)
38
make clean: end (2)
39
make zImage: start (1)
40
make zImage: end (2)
41
Summary Understanding of Linux Kernel (for Embedded System) The procedure of kernel configuration (regeneration) Problems –Understanding of kernel functions and sources –Hardware Environments: device drivers –The Basics of kernel and embedded system “ 백번 듣는 것보다 한번 보는 것이 이해하는데 유리하다 ”
42
Report Lunux 에서 제공되는 파일 시스템에 대한 조사 예 ) ext2, ext3, cramfs, jffs2, MTD 등 Root File System ext2ext3cramfsjffs2 RAM Frash ROM HDD DOC Which file system ? What media ? What method ? initd MTD
Similar presentations