목차 커널의 개념 및 기능 커널 포팅 램디스크.

Slides:



Advertisements
Similar presentations
안양대학교 전기전자공학과 서 삼 준 Kernel Image Generation.
Advertisements

2013 년 2 학기 임베디드 프로그래밍. 권장사양  HOST PC 권장사항  리눅스 배포판이 설치된 PC - 권장 배포판 : Asianux open edition3 ( 라곤 하지만 Ubuntu, Fedora, CentOS 등 다양한 리눅스 프랫폼이 가능 )  PC.
KAIST 09 SPARCS 10 안재만 (Kuss).  OS  Kernel & Shell  OS Layer  Linux  Linux / GNU  Linux 역사  Linux 배포판  Linux Directories.
Managing Filesystems, Swap Space, and Devices
조교: 컴퓨터 응용 실험 컴퓨터공학 연구실 2005년 11월 10일
Root File System 충북대학교 지능로봇연구실.
EZ Board-M In-Ho, Roh Real Time System Lab.
임베디드 시스템 개발 환경 (1) Lecture #3.
시작부터 끝까지 진지한 궁서체로 진행하는 완벽한 주입식의 하드코어한 리눅스/장난감 세미나
임베디드 시스템 개발을 위한 리눅스 환경설정.
FTP 09 SPARCS 박철웅 [dothack].
4. 시스템 관리 기본 naldo.
Linux University of Seoul Computer Science Park Jong wook
컴퓨터 네트워크 실습.
Redhat Linux 설치 과정.
Kernel Image Generation
제6장 FUSING.
Cross Compiler를이용한 커널 컴파일 및 포팅
PXA270 개발환경 설정 Ubuntu 실습용.
개발 환경 개발 환경 개요 PXA270과 타겟 시스템 툴체인 환경 구축 JTAG 유틸리티 미니컴 Make 유틸리티
크로스 컴파일 환경 구축.
디렉토리 다루기 ㅎㅎ 유닉스 파일 시스템 현재 디렉토리 확인 : pwd 디렉토리 이동 : cd
제16장 QT/Embedded.
Kernel Porting Lecture #7.
제4장 Cross Compiler 설치.
Minicom,tftp,nfs설정,vnc설정
FUSING.
임베디드 프로그래밍 Lecture #
디바이스 드라이버.
제8장 커널 & 파일 시스템 분석.
[beginning] Linux & vi editor
리눅스 커널의 이해 중에서 1장. 소개 이원구 네트워크 실험실.
임베디드 리눅스 시스템의 기본 개념 강의 목표 내용 임베디드 리눅스 시스템의 기본 개념과 주제 제시 1. 임베디드 시스템
기상연구소 응용 프로그램 (MM5/MPP) 시스템 별 성능 측정 결과 보고
Development Environment of Embedded System : part 1
임베디드 리눅스 설치 및 동작 Lecture #5.
Linux 9.X 기초에서 활용까지 Chapter 07 프로세스 관리.
UNIX Unbounded A Beginning Approach
컴퓨터 네트워크 실습.
임베디드 시스템 개론 3주차 Embedded System..
Embedded System Porting (2)
리눅스 명령어 실습 임베디드 시스템 I.
제2장 유닉스/리눅스 사용.
Linux Kernel Programming newsyscall (since 2004~ textbook 7th 2006~)
리눅스 기본 명령어 기본 명령어 명령어 기능 사 용 예 date 날짜 및 시간을 확인하고 생성.
Root Filesystem Porting
Internet Protocol and Programming
임베디드 소프트웨어 동향. 임베디드 소프트웨어 동향 임베디드 S/W 시장분류 솔루션 측면 시스템 측면 운영체제 개발도구 설계도구 테스트도구 유선통신 무선통신 정보가전 자동차제어 산업자동화 사무자동화 군사/항공우주 의료장비 솔루션 공급 업체 임베디드 S/W시장 임베디드.
Root Filesystem Porting
Host PC & Target Board 환경설정 Embedded Linux Image 올리기
HBE-SMIII-SV210 리눅스 커널과 디바이스 드라이버
실시간 자원 량 정보 제공을 결합한 Heartbeat
Mips cross compile OS LAB.
문자 디바이스 드라이버 임베디드 시스템.
Google Cloud Platform을 이용한 서버 인프라 구축
망고100 보드로 놀아보자 -12 커널 디렉토리 설명
cafe.naver.com/embeddedcrazyboys
Appendix. WURFL 브라우저 살펴보기
Swap 추가, fsck.
4장 서버 구축을 위해 알아야 할 핵심 개념과 명령어
Internet Protocol and Programming
JFS operation HP Korea / Operations JFS operation.
운영체제 RaspberryPi Sejin Oh.
Telnet 을 활용한 Linux 메뉴얼 오두환.
Chapter 12 파일 시스템 이해 Solaris1 . 파일 타입
8. 리눅스의 내부 군자삼락 [君子三樂] 청출어람이청어람 [ 靑出於藍而靑於藍 ] Why Linux ?
Internet Protocol and Programming
Kernel Porting Lecture #7.
임베디드 리눅스 설치 및 동작 Lecture #5.
Eclipse를 이용한 Embedded Linux 응용 프로그램 개발
Presentation transcript:

목차 커널의 개념 및 기능 커널 포팅 램디스크

커널과 파일 시스템 커널이란? 커널의 세부기능(1) 운영체제를 구성하고 있는 핵심(core)로써 타겟보드의 시스템 구동에 필요한 환경 설정과 수행되는 프로그램들을 관리하는 소프트웨어이다. 커널의 세부기능(1) 프로세스 관리(Pocess Management) 메모리 관리(Memory Management) 파일 시스템 관리(File System Management) 디바이스 관리(Device Management) 네트워크 관리(Network Management)

커널과 파일 시스템 커널의 세부기능(2) 프로세스 관리 메모리 관리 파일 시스템 관리 디바이스 관리 네트워크 관리 프로세스의 생성 및 소멸 프로세스간 통신 CPU 스케줄링 메모리 관리 가상 메모리 관리 메모리 하드웨어 관리 파일 시스템 관리 가상 파일 시스템에 의한 여러 파일 시스템 타입 지원 디스크 물리적 주소를 논리적 구조로 표현 디바이스 관리 입출력 요청 검증 입출력 요청 작업 스케줄링 주변장치와 메모리간의 자료전송 인터럽트 요청 처리 네트워크 관리 통신 프로토콜 구현 네트워크 라우팅 및 주소지정

커널과 파일 시스템 리눅스 커널 소스의 구성 중요 디렉토리 내 용 Documentation 내 용 Documentation 커널 프로그래머를 위한 기술적 문서 파일을 포함한다. arch 포팅할 수 있 각 프로세서 아키텍처에 의존적인 기능들이 구현되어 있다. drivers 모든 하드웨어 디바이스 드라이버들이 서브 디렉토리를 이루면서 존재한다 fs 파일 시스템에 관한 소스 코드들이 존재한다. init 커널을 시작하는 데 필요한 함수들을 포함한다. ipc 프로세스간 통신을 위한 함수들을 포함한다. kernel 커널의 주요 시스템 호출과 기능들이 구현되어 있다. lib 보조함수들과 스트링 관련, 압축 관련 함수들이 구현되어 있다. mm 메모리 관련 소스들이 있다. net 통신과 관련된 프로토콜 등이 구현되어 있다. Documentation : 이 디렉토리에 있는 문서 파일들을 가장 좋은 참고 문서이다. arch : 이 디렉토리의 하위 디렉토리에는 arm, i386, ppc, mips 와 같은 프로세서별 의존적인 소스 코드들이 존재한다. 최상위 Makefile에서 어떠한 프로세서를 설정하느냐에 따라서 해당 디렉토리 소스들이 컴파일 되어 커널을 구성하게 된다.

커널과 파일 시스템 커널 패치 커널 소스(linux-2.6.12.tar.gz)를 구한다. XM-BULVERDE 보드 패치(diff-linux-2.6.12-xm_bulverde_p1.gz)를 위의 커널에 패치한다. [Host@localhost ~]$ mkdir /work/kernel [Host@localhost ~]$ cp /media/cdrecorder/source/kernel/linux-2.6.12.tar.gz /working/kernel [Host@localhost ~]$ cd /work/kernel [Host@localhost kernel]$ tar xvfz linux-2.6.12.tar.gz [Host@localhost kernel]$ cp /media/cdrecorder/source/kernel/patch/diff-linux-2.6.12-xm_bulverde_p1.gz /working/kernel/linux-2.6.12 [Host@localhost kernel]$ cd /working/kernel/linux-2.6.12 [Host@localhost linux-2.6.12]$ zcat diff-linux-2.6.12-xm_bulverde_p1.gz | patch –p1 patch 란 :

커널과 파일 시스템 커널을 컴파일 커널 퓨징 컴파일된 커널 이미지 파일을 다운로드하여 타겟에 퓨징한다. make menuconfig : 커널 설정을 메뉴 형태로 설정한다. make empos_xm_config : 커널의 컴파일 환경을 xm-bulverde에 맞게 적용한다. make oldconfig : make empos_xm_config를통해 구성된 메뉴를 소스에 적용한다 make clean : 컴파일후 생성된 여러 오브젝트 파일을 삭제한다. make mrproper : 생성된 오브젝트 파일, config 파일을 삭제한다. make zImage : 실제 커널을 컴파일 하는 명령어이다. 커널 퓨징 컴파일된 커널 이미지 파일을 다운로드하여 타겟에 퓨징한다. 생성된 커널 이미지 파일을 /tftpboot 디렉토리로 복사한다. 타겟에서 tftp 명령을 사용하여 커널이미지를 다운받은 후에 퓨징한다. [Host@localhost linux-2.6.12]$ make empos_xm_config [Host@localhost linux-2.6.12]$ 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 라인과 관련이 있다. 커널 컴파일 시에 커널 설정에 의해서 설정된 오브젝트 파일만을 컴파일하여 커널에 포함시킨다. [Host@localhost linux-2.6.12]$ cp arch/arm/boot/zImage /tftpboot

커널과 파일 시스템 커널 소스 수정(1) 커널 소스를 직접 수정해 보고 수정된 커널을 타겟에 퓨징하여 수정된 내용이 적용되는 것을 확인한다. 커널 소스 디렉토리로 이동한 후에 arch/arm/mach-pxa/empos_xm.c 파일을 수정한다. 파일의 내용중에서 아래와 같이 적색으로 표시된 부분을 임의대로 수정한다. 수정후 커널 소스의 최상위 디렉토리에서 커널을 컴파일 한 후에 타겟에 퓨징하여 수정된 내용이 적용되는지를 확인한다. [Host@localhost linux-2.6.12]$ vi arch/arm/mach-pxa/empos_xm.c 401 MACHINE_START(EMPOS_XM, "Hanback Electronics EMPOS_XM Development Platform") 402 MAINTAINER("Hanback Electronics") 403 BOOT_MEM(0xa0000000, 0x40000000, io_p2v(0x40000000)) 404 FIXUP(fixup_empos_xm) 405 MAPIO(empos_xm_map_io) 406 INITIRQ(empos_xm_init_irq) 407 .timer = &pxa_timer, 408 INIT_MACHINE(empos_xm_init) 409 MACHINE_END

커널과 파일 시스템 커널 소스 수정(2) 부팅 메시지 확인 XM-Bulverde# boot Starting kernel... Uncompressing Linux........................................................................................................................ done, booting the kernel. Linux version 2.6.12-empos_xm (netmania@localhost.localdomain) (gcc version 3.3. 2) #86 Thu Dec 28 09:58:02 KST 2006 CPU: XScale-PXA270 [69054117] revision 7 (ARMv5TE) CPU0: D VIVT undefined 5 cache CPU0: I cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets CPU0: D cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets Machine: Hanback Electronics EMPOS_XM Development Platform Ignoring unrecognised tag 0x00000000 Memory policy: ECC disabled, Data cache writeback Run Mode clock: 208.00MHz (*16) Turbo Mode clock: 416.00MHz (*2.0, active) Memory clock: 104.00MHz (/2) System bus clock: 104.00MHz

커널과 파일 시스템 파일시스템(FileSystem) 이란? 파일시스템의 구조 디스크의 섹터와 트랙 그리고 실린더 등을 논리적으로 사용하기 위하여, 블록(Block) 단위로 읽고 쓰는 메커니즘을 말한다. 파일시스템의 구조 / (루트, 최상위 디렉토리) bin boot dev etc home lib mnt proc root tmp usr var sbin user1 user2 include local src 루트 파일 시스템이란 : 커널로 부팅해서 디렉토리를 보면서 설명

커널과 파일 시스템 파일 시스템 구조 / : 루트 디렉터리 /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 : e-mail 저장 /var/log : 시스템 로그 저장 /var/run : 실행 중인 프로그램의 PID /tmp : 임시 저장 디렉터리

커널과 파일 시스템 램디스크란? 램디스크의 성질 별도의 물리적 저장장치 없이 메모리의 한 부분을 할당하여 컴퓨터의 하드 디스크처럼 사용 가능하도록 한 것이다. 램디스크의 성질 빠른 실행이 가능하다. 전원을 차단하면 모든 데이터는 초기화 되어 진다. 압축 방법(gzip)을 이용하므로 용량을 효율적으로 관리할 수 있다. 루트파일 시스템을 구성하는 방법 : 램디스크의 경우는 보드가 리셋될 경우 데이터가 초기화 되기 때문에 요즘에는 Flash 메모리에 루트파일 시스템을 구성한다. 램디스크 네트워크 파일 시스템 jffs 루트 파일 시스템 yaffs 루트 파일 시스템

생성된 널 이미지를 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 프로그램 : 파일 시스템을 생성시켜주는 프로그램

커널과 파일 시스템 램디스크의 수정 XM-BULVERDE CD에 제공된 ramdisk는 사용자가 임의의 파일이나 폴더를 추가 삭제를 다음과 같이 할 수 있다. [Host@localhost ~]$ mkdir /work/ramdisk [Host@localhost ~]$ cp /media/cdrecorder/Images/linux/ramdisk48-332.gz /work/ramdisk [Host@localhost ~]$ cd /work/ramdisk [Host@localhost ramdisk]$ gzip –d ramdisk48-332.gz [Host@localhost ramdisk]$ mkdir /mnt/ramdisk-mod [Host@localhost ramdisk]$ mount –t ext2 –o loop ramdisk48-332 /mnt/ramdisk-mod [Host@localhost ramdisk]$ cd /mnt/ramdisk [Host@localhost ramdisk-mod]$ mkdir test [Host@localhost ramdisk-mod]$ cd /work/ramdisk [Host@localhost ramdisk]$ umount /mnt/ramdisk-mod [Host@localhost ramdisk]$ gzip ramdisk48-332.gz [Host@localhost ramdisk]$ cp ramdisk48-332.gz /tftpboot 램디스크 수정시 주의 사항 램디스크 수정 후 마운트를 반드시 umount 시킨 후에 압축해서 사용해야 한다. 그렇지 않으면 파일 시스템이 깨지는 경우가 있다. 커널 부팅후에 램디스크에서 생성했던 모든 파일이나 디렉토리들은 시스템이 꺼지는 순간 날아가 버린다. 램디스크 수정 실습 커널에서 /root 디렉토리에 파일 또는 디렉토리를 생성한 후에 재부팅하여 생성한 파일 또는 디렉토리가 존재하는지 확인 램디스크 수정을 통해서 파일 또는 디렉토리를 생성한 후에 재부팅하여 생성한 파일 또는 디렉토리가 존재하는지 확인