Download presentation
Presentation is loading. Please wait.
1
목차 커널의 개념 및 기능 커널 포팅 램디스크
2
커널과 파일 시스템 커널이란? 커널의 세부기능(1)
운영체제를 구성하고 있는 핵심(core)로써 타겟보드의 시스템 구동에 필요한 환경 설정과 수행되는 프로그램들을 관리하는 소프트웨어이다. 커널의 세부기능(1) 프로세스 관리(Pocess Management) 메모리 관리(Memory Management) 파일 시스템 관리(File System Management) 디바이스 관리(Device Management) 네트워크 관리(Network Management)
3
커널과 파일 시스템 커널의 세부기능(2) 프로세스 관리 메모리 관리 파일 시스템 관리 디바이스 관리 네트워크 관리
프로세스의 생성 및 소멸 프로세스간 통신 CPU 스케줄링 메모리 관리 가상 메모리 관리 메모리 하드웨어 관리 파일 시스템 관리 가상 파일 시스템에 의한 여러 파일 시스템 타입 지원 디스크 물리적 주소를 논리적 구조로 표현 디바이스 관리 입출력 요청 검증 입출력 요청 작업 스케줄링 주변장치와 메모리간의 자료전송 인터럽트 요청 처리 네트워크 관리 통신 프로토콜 구현 네트워크 라우팅 및 주소지정
4
커널과 파일 시스템 리눅스 커널 소스의 구성 중요 디렉토리 내 용 Documentation
내 용 Documentation 커널 프로그래머를 위한 기술적 문서 파일을 포함한다. arch 포팅할 수 있 각 프로세서 아키텍처에 의존적인 기능들이 구현되어 있다. drivers 모든 하드웨어 디바이스 드라이버들이 서브 디렉토리를 이루면서 존재한다 fs 파일 시스템에 관한 소스 코드들이 존재한다. init 커널을 시작하는 데 필요한 함수들을 포함한다. ipc 프로세스간 통신을 위한 함수들을 포함한다. kernel 커널의 주요 시스템 호출과 기능들이 구현되어 있다. lib 보조함수들과 스트링 관련, 압축 관련 함수들이 구현되어 있다. mm 메모리 관련 소스들이 있다. net 통신과 관련된 프로토콜 등이 구현되어 있다. Documentation : 이 디렉토리에 있는 문서 파일들을 가장 좋은 참고 문서이다. arch : 이 디렉토리의 하위 디렉토리에는 arm, i386, ppc, mips 와 같은 프로세서별 의존적인 소스 코드들이 존재한다. 최상위 Makefile에서 어떠한 프로세서를 설정하느냐에 따라서 해당 디렉토리 소스들이 컴파일 되어 커널을 구성하게 된다.
5
커널과 파일 시스템 커널 패치 커널 소스(linux-2.6.12.tar.gz)를 구한다.
XM-BULVERDE 보드 패치(diff-linux xm_bulverde_p1.gz)를 위의 커널에 패치한다. ~]$ mkdir /work/kernel ~]$ cp /media/cdrecorder/source/kernel/linux tar.gz /working/kernel ~]$ cd /work/kernel kernel]$ tar xvfz linux tar.gz kernel]$ cp /media/cdrecorder/source/kernel/patch/diff-linux xm_bulverde_p1.gz /working/kernel/linux kernel]$ cd /working/kernel/linux linux ]$ zcat diff-linux xm_bulverde_p1.gz | patch –p1 patch 란 :
6
커널과 파일 시스템 커널을 컴파일 커널 퓨징 컴파일된 커널 이미지 파일을 다운로드하여 타겟에 퓨징한다.
make menuconfig : 커널 설정을 메뉴 형태로 설정한다. make empos_xm_config : 커널의 컴파일 환경을 xm-bulverde에 맞게 적용한다. make oldconfig : make empos_xm_config를통해 구성된 메뉴를 소스에 적용한다 make clean : 컴파일후 생성된 여러 오브젝트 파일을 삭제한다. make mrproper : 생성된 오브젝트 파일, config 파일을 삭제한다. make zImage : 실제 커널을 컴파일 하는 명령어이다. 커널 퓨징 컴파일된 커널 이미지 파일을 다운로드하여 타겟에 퓨징한다. 생성된 커널 이미지 파일을 /tftpboot 디렉토리로 복사한다. 타겟에서 tftp 명령을 사용하여 커널이미지를 다운받은 후에 퓨징한다. linux ]$ make empos_xm_config linux ]$ make zImage 커널 컴파일시 사용할 수 있는 make 파일 옵션은 “make help” 명령어를 통해서 확인할 수 있다. 참고로 “make –help”는 Makefile에 관련된 옵션을 출력한다. make empos_xm_config 명령 : empos_xm_config 파일은 xm-bulverde 보드에 맞는 커널 설정이 저장된 파일이다. 커널 설정 파일들은 arch/arm/configs 디렉토리에 존재한다. make oldconfig : 기본적으로 제공되는 .config 의 설정이 적용된다. .config 파일은 커널 설정이 적용(make menuconfig또는 make empos_xm_config)을 통해 적용된 내용이 저장된다. 컴파일 시에 이 파일을 가지고 컴파일을 하게 된다. arch/arm/configs/empos_xm_defconfig 파일과 .config 파일을 비교해본다. empos_xm_defconfig 파일의 내용 설명 CONFIG_SMC91X=y 의 내용은 이더넷 관련된 부분을 커널 이미지에 추가시키겠다는 의미. drivers/net/Makefile 의 obj-$(CONFIG_SMC91X) += smc91x.o 라인과 관련이 있다. 커널 컴파일 시에 커널 설정에 의해서 설정된 오브젝트 파일만을 컴파일하여 커널에 포함시킨다. linux ]$ cp arch/arm/boot/zImage /tftpboot
7
커널과 파일 시스템 커널 소스 수정(1) 커널 소스를 직접 수정해 보고 수정된 커널을 타겟에 퓨징하여 수정된 내용이 적용되는 것을 확인한다. 커널 소스 디렉토리로 이동한 후에 arch/arm/mach-pxa/empos_xm.c 파일을 수정한다. 파일의 내용중에서 아래와 같이 적색으로 표시된 부분을 임의대로 수정한다. 수정후 커널 소스의 최상위 디렉토리에서 커널을 컴파일 한 후에 타겟에 퓨징하여 수정된 내용이 적용되는지를 확인한다. linux ]$ vi arch/arm/mach-pxa/empos_xm.c 401 MACHINE_START(EMPOS_XM, "Hanback Electronics EMPOS_XM Development Platform") MAINTAINER("Hanback Electronics") BOOT_MEM(0xa , 0x , io_p2v(0x )) FIXUP(fixup_empos_xm) MAPIO(empos_xm_map_io) INITIRQ(empos_xm_init_irq) timer = &pxa_timer, INIT_MACHINE(empos_xm_init) 409 MACHINE_END
8
커널과 파일 시스템 커널 소스 수정(2) 부팅 메시지 확인 XM-Bulverde# boot Starting kernel...
Uncompressing Linux done, booting the kernel. Linux version empos_xm (gcc version 3.3. 2) #86 Thu Dec 28 09:58:02 KST 2006 CPU: XScale-PXA270 [ ] revision 7 (ARMv5TE) CPU0: D VIVT undefined 5 cache CPU0: I cache: bytes, associativity 32, 32 byte lines, 32 sets CPU0: D cache: bytes, associativity 32, 32 byte lines, 32 sets Machine: Hanback Electronics EMPOS_XM Development Platform Ignoring unrecognised tag 0x Memory policy: ECC disabled, Data cache writeback Run Mode clock: MHz (*16) Turbo Mode clock: MHz (*2.0, active) Memory clock: MHz (/2) System bus clock: MHz
9
커널과 파일 시스템 파일시스템(FileSystem) 이란? 파일시스템의 구조
디스크의 섹터와 트랙 그리고 실린더 등을 논리적으로 사용하기 위하여, 블록(Block) 단위로 읽고 쓰는 메커니즘을 말한다. 파일시스템의 구조 / (루트, 최상위 디렉토리) bin boot dev etc home lib mnt proc root tmp usr var sbin user1 user2 include local src 루트 파일 시스템이란 : 커널로 부팅해서 디렉토리를 보면서 설명
10
커널과 파일 시스템 파일 시스템 구조 / : 루트 디렉터리 /home : 사용자의 홈 디렉터리
/boot : 부팅 과정에 필요한 모든 구성 요소들이 포함되어 있다 /bin : 실행 파일이 모여 있다 ls, cp, mv, rm, mount, mkdir, vi 등등… /sbin : 시스템 관리를 위한 실행 유틸리티 저장 ifconfig, halt, shutdown, mkfs, fsck 등등… /dev : 시스템의 디바이스에 접근하기 위한 디바이스 드라이버들이 존재 /dev/cdrom, /dev/hda0, /dev/null 등등… /etc : 리눅스 운영에 필요한 설정 파일 및 초기화 스크립트 등이 저장 /etc/passwd : 사용자 정보를 포함하는 문서 /etc/fstab : mount –a명령으로 마운트되는 파일시스템과 스왑 목록 /etc/profile : 쉘에 의해 로그인 할 때 실행되는 파일 /home : 사용자의 홈 디렉터리 /lib : 공유 라이브러리 모듈 저장 /root : 시스템 관리자인 root의 홈 디렉터리 /usr : 공유 가능한 대부분의 프로그램 설치 /usr/local : 3rd party 프로그램 /usr/src : 리눅스 커널 소스 /var : 시스템 로그 및 각종 파일 /var/mail : 저장 /var/log : 시스템 로그 저장 /var/run : 실행 중인 프로그램의 PID /tmp : 임시 저장 디렉터리
11
커널과 파일 시스템 램디스크란? 램디스크의 성질
별도의 물리적 저장장치 없이 메모리의 한 부분을 할당하여 컴퓨터의 하드 디스크처럼 사용 가능하도록 한 것이다. 램디스크의 성질 빠른 실행이 가능하다. 전원을 차단하면 모든 데이터는 초기화 되어 진다. 압축 방법(gzip)을 이용하므로 용량을 효율적으로 관리할 수 있다. 루트파일 시스템을 구성하는 방법 : 램디스크의 경우는 보드가 리셋될 경우 데이터가 초기화 되기 때문에 요즘에는 Flash 메모리에 루트파일 시스템을 구성한다. 램디스크 네트워크 파일 시스템 jffs 루트 파일 시스템 yaffs 루트 파일 시스템
12
생성된 널 이미지를 ext2 파일시스템으로 만든다. dd로 생성된 파일시스템 empos.ramdisk를 “0”으로 채운다
커널과 파일 시스템 Ramdisk 생성과 마운트(Mount) # dd if =/dev/zero of=./empos.ramdisk count=16384 bs=1024 # mkfs –t ext2 empos.ramdisk 블록사이즈를 1K(1024)로 한다. 생성된 널 이미지를 ext2 파일시스템으로 만든다. dd로 생성된 파일시스템 empos.ramdisk를 “0”으로 채운다 16384번 반복하여 생성한다 # mount –t ext2 –o loop empos.ramdisk /mnt/ramdisk -- 파일 추가 삭제 후 -- # umount /mnt/ramdisk # gzip empos.ramdisk mkfs 프로그램 : 파일 시스템을 생성시켜주는 프로그램
13
커널과 파일 시스템 램디스크의 수정 XM-BULVERDE CD에 제공된 ramdisk는 사용자가 임의의 파일이나 폴더를 추가 삭제를 다음과 같이 할 수 있다. ~]$ mkdir /work/ramdisk ~]$ cp /media/cdrecorder/Images/linux/ramdisk gz /work/ramdisk ~]$ cd /work/ramdisk ramdisk]$ gzip –d ramdisk gz ramdisk]$ mkdir /mnt/ramdisk-mod ramdisk]$ mount –t ext2 –o loop ramdisk /mnt/ramdisk-mod ramdisk]$ cd /mnt/ramdisk ramdisk-mod]$ mkdir test ramdisk-mod]$ cd /work/ramdisk ramdisk]$ umount /mnt/ramdisk-mod ramdisk]$ gzip ramdisk gz ramdisk]$ cp ramdisk gz /tftpboot 램디스크 수정시 주의 사항 램디스크 수정 후 마운트를 반드시 umount 시킨 후에 압축해서 사용해야 한다. 그렇지 않으면 파일 시스템이 깨지는 경우가 있다. 커널 부팅후에 램디스크에서 생성했던 모든 파일이나 디렉토리들은 시스템이 꺼지는 순간 날아가 버린다. 램디스크 수정 실습 커널에서 /root 디렉토리에 파일 또는 디렉토리를 생성한 후에 재부팅하여 생성한 파일 또는 디렉토리가 존재하는지 확인 램디스크 수정을 통해서 파일 또는 디렉토리를 생성한 후에 재부팅하여 생성한 파일 또는 디렉토리가 존재하는지 확인
Similar presentations