우분투에 시스템콜 추가하기

15
리리리 리리리리 리리 7-4 리리리 리 리리리 NHN NEXT 리리리 * 리리리리 리리리 리리리리리리 리리리 리리리리리 . http :// hangeul.naver.com/font ( 리리리리 ) http:// dev.naver.com/projects/nanumfont/download ( 리리리리리리리리 )

Upload: hoyoung-jung

Post on 17-Jan-2015

2.051 views

Category:

Documents


3 download

DESCRIPTION

흔한 내용이지만 커널 3.X 대에서 바뀐 내용이 있어서 다시 만들었습니다.

TRANSCRIPT

Page 1: 우분투에 시스템콜 추가하기

리눅스 운영체제 실습 7-4시스템 콜 만들기

NHN NEXT 정호영* 나눔고딕 글꼴과 나눔고딕코딩 글꼴이 필요합니다 .

http://hangeul.naver.com/font ( 나눔글꼴 )http://dev.naver.com/projects/nanumfont/download( 나눔고딕코딩글꼴 )

Page 2: 우분투에 시스템콜 추가하기

강의 주제리눅스 커널에 시스템 콜을 추가해 봅시다 .

학습목표 “ 나도 리눅스 커널 소스 한 번 건드려 봤다” 라고 말할 수

있습니다 .

Page 3: 우분투에 시스템콜 추가하기

시스템 콜 만들기직접 OS 에 시스템 콜 하나 만들어 봅시다 .

OS 생각보다 별 거 아닐지도…OS 도 결국엔

사람이사람에 의해 사람을 위해 만든 소프트웨어입니다 .

이 문서는 ubuntu 12.04 LTS 32bit 를 기준으로 만들어 졌습니다 .

Page 4: 우분투에 시스템콜 추가하기

필요한 패키지 설치필요한 유틸리티 설치

$ sudo apt-get install build-essential fakeroot kernel-package

현재 버전에 가까운 리눅스 소스 설치$ sudo apt-get install linux-source

Page 5: 우분투에 시스템콜 추가하기

소스 압축 풀고 설정 복사하기

압출 풀기$ sudo –i $ cd /usr/src$ tar xvf linux-source-3.5.0.tar.bz2$ cd linux-source-3.5.0

리눅스 현재 버전 확인 및 설정 파일 복사$ uname -r$ ls /boot/config-$(uname –r) -l$ cp /boot/config-$(uname –r) .config

Page 6: 우분투에 시스템콜 추가하기

시스템콜 테이블에 함수 추가$ vi arch/x86/syscalls/syscall_32.tbl

#64bit 면 64 에서 작업아래 내용 추가

Page 7: 우분투에 시스템콜 추가하기

커널 헤더에 함수 추가$ vi include/linux/syscalls.h

제일 아래에 다음 내용 추가

Page 8: 우분투에 시스템콜 추가하기

실제 함수의 내용 작성디렉토리 추가

$ mkdir lsproc$ cd lsproc

실제 함수 작성$ vi Makefile # 아래 내용 한 줄 추가

$ vi lsproc.c # 다음 페이지에

Page 9: 우분투에 시스템콜 추가하기

lsproc.c 구현lsproc.c

커널의 태스크를 모두 출력해 주는 함수입니다 .

Page 10: 우분투에 시스템콜 추가하기

시스템 콜 만들기 기본 디렉토리의 Makefile 수정

Page 11: 우분투에 시스템콜 추가하기

테스트 코드지금 실행하면 어떤 결과 ?

Page 12: 우분투에 시스템콜 추가하기

커널 컴파일$ make menuconfig #shell 의 크기가 80 * 19

이상이어야 함여러가지 설정을 바꿀 수 있지만 바꾸지 않음실행 후 <Exit> 선택해서 종료함

Page 13: 우분투에 시스템콜 추가하기

커널 컴파일$ make –j 4 # 커널 컴파일 1 시간 기다립니다 .

$ ls lsprc –l #lsproc.o 가 생겼는지 확인합니다 .

$ make modules –j 4 # 또 한참 기다립니다 .

$ make modules_install

$ make install

$ vi /boot/grub.cfg # 내용만 확인

Page 14: 우분투에 시스템콜 추가하기

시스템콜 만들기재부팅후 커널 버전 확인

테스트 코드 재실행

실행했는데 또 아무것도 안 나옵니다 .

$ dmesg # 커널의 메시지는 여기서 확인

Page 15: 우분투에 시스템콜 추가하기