강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

Step By Step 커널 프로그래밍 강좌 ①

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

Step By Step 커널 프로그래밍 강좌

커널프로그래밍의환경구축

 

 

강좌는 커널 프로그래밍에 관심을 가지고 있는 입문자들을 위한 것이다. 하지만 아무리 입문자라고 해도 리눅스에 대해 전혀 모르고 있다면 강좌를 이해하기 쉽지 않을 것이다. 따라서 글을 보고 있는 독자라면 리눅스에서 Application 프로그래밍을 이상 해봤다는 가정 아래 강좌를 진행하고자 한다. 구체적으로 말하자면 gcc vi 정도는 사용할 있으며

기본적인 리눅스 명령어들을 알고 있는 분들을 말한다. 커널 프로그래밍 회에서는 커널 프로그래밍을 하기 위한 환경구축및 커널 패치하기, 커널 프로그래밍의 특징 등에 대해 살펴보도록 한다.

 

_ 민찬 KLDP 멤버, 전문 프로그래머

 

 

앞으로의 연재 순서

커널 프로그래밍의 환경 구축

모듈 구현하기

커널의 동기화에 관하여

커널의 시간관리 지연 함수에 대하여

파일시스템과 proc file system 사용하기

디버깅 기술에 관하여

 

 

커널 프로그래밍 개발환경 구축

5~6 전만 해도 리눅스 커널을 적절하게 다시 빌드하는 것은 그리 만만한 작업이 아니었다. 하지만 요즘의 리눅스 배포판들은 굉장히 쉬운 방법으로 리눅스 커널을 빌드할 있게 했다. 심지어는 그것을 패키지 형태로 만들어 다른 컴퓨터에 복사함으로써 단순한 설치명령어를 실행하는 것만으로도 리눅스 커널을 설치할 있도록 하고 있다.

여기서 필자는 커널 프로그래밍의 환경 구축을 위해 현재 리눅스 데스크탑용으로 가장 인기를 끌고 있는 우분투(ubuntuedgy) 6.10 desktop 용을 사용할 것이다. 우분투는 iso 이미지 형태로 다음의 URL 페이지에서 다운로드할 있다 (http://releases.ubuntu.com/6.10/

ftp://ftp.kaist.ac.kr/ubuntu-cd/edgy/). 우분투를 설치하는 것은 윈도우를 설치하는 것만큼이나 쉽다. 심지어는 윈도우와 멀티 부팅 환경도 스스로 만들어 준다.

우리가 해야 것은 ISO image CD 만들어서 설치하면 그만이다. 또는 필자와 같이 vmware 같은 툴을 활용하면 ISO파일을 그대로 이용해 윈도우에서 설치할 수도 있다. 우분

투에 관한 내용들은 다음의 URL 많은 정보들이 있다. ( http://www.ubuntu.or.kr/wiki.php/FrontPage)

우분투의 설치가 끝났다면 기본적으로 일반 사용자로 로그인이 되어 있을 것이다. 커널 컴파일을 위해서는 root 사용자의 권한이 필요하다. sudo 명령을 사용하여 커널을 빌드할 수도

있지만 쉽게 하기 위해 root 로그인을 다시 하도록 한다. root로의 login 다음의 명령을 통해 있다.

 

 

sudo i

 

우분투 6.10에는 기본적으로 /bin/sh /bin/dash 심볼릭링크로 되어 있다. 이것으로 인하여 소스를 컴파일 하는데 간혹 문제가 생기는 같다. 다음의 명령을 통해 /bin/bash

사용할 있게 바꾼다

 

rm f /bin/sh

ln s /bin/bash /bin/sh

 

 

다음으로 apt-get 이용하여 현재 시스템의 모든 패키지들

최신으로 update한다.

 

apt-get update

 

이번에는 자신이 현재 사용하고 있는 커널의 버전을 확인해

보자. 커널 버전은 다음의 명령을 통해 확인해 있다.

 

 

uname r

 

 

아마도 우분투 6.10이나 이하의 버전을 사용하고 있는

자중 직접 커널을 업데이트하지 않은 독자라면 현재 2.6.17-

10 버전 이하의 리눅스 커널을 사용하고 있을 것이다.

 

 

리눅스 커널 버전 관리

2.6.18 = major.minor.release

 

 

2.6.18이라하면 major번호가 2이고 minor 6, 그리고 18번째라는 것이다. , 2.6 18번째 릴리즈된 버전이라는 . 또한 리눅스의 minor 버전은 커널이 안정된 버전인지 개발

버전인지를 나타낸다. 안정된 버전은 짝수를 가지며 개발중인 버전은 홀수를 갖게 된다. 일반적으로 짝수와 홀수 버전은 커널 아카이브 트리에 공존한다.

예를 들어 2.4 짝수 minor 버전을 가진 새로운 커널이 릴리즈되면 2.5 홀수 버전을 가진 개발버전이 2.6 준비하며작업에 들어간다. 2.5에서 개발 중인 개발 버전들이 많은

추가와 테스트를 통해 안정화되면 2.4 릴리즈 버전들이 점차 올라가며 2.5 기능들이 추가되고 버그들이 수정되어 나간다. 2.4.1, 2.4.2, 2.4.3 이런 식으로 올라가게 되는

이다. 현재는 우리가 사용하고 있는 커널의 minor 번호는 6 이니 안정된 버전이라고 있다.

하지만 2.6으로 오면서 변화가 생겼다. 2.6대의 커널이 릴리즈되면 2.7 2.8 준비해야 하는 커널 아카이브 트리가 생겨야 하지만 현재 그렇지가 않다. 2004 Linux Kernel

Developer Summit에서 이상 그런 개발방법으로 진행하지 않기로 결정했기 때문이다. 2.6커널은 충분히 안정화되어 있고 홀수 버전을 만들어야 만큼 기능변화가 없을 것이

라는 판단에서이다. 지금부터 우리는 현재 커널을 2.6.18 버전으로 업그레이드

것이다. 먼저 시스템에 커널을 빌드하고, 빌드된 커널을 데비안 패키지로 만들기 위한 툴들을 설치해야 한다. 콘솔에서 다음 명령을 통해 그러한 툴들을 설치할 있다.

 

 

apt-get install kernel-package

libncurses5-dev fakeroot

wget bzip2

 

 

이번엔 우리가 빌드하게 2.6.18버젼의 커널 소스를 다운로드 하도록 하자. 우리는 wget 사용할 것이다. 하지만 wget install되어 있지 않은 분들은 웹브라우저를 통해서도 아래

URL에서 다운로드할 있다.

 

 

cd /usr/src

wgethttp://www.kernel.org/pub/linux/kernel/v2.6/

linux 2.6.18.tar.bz2

 

 

이것으로 커널의 빌드를 위한 환경구축은 끝마쳤다.

 

 

 

커널 빌드

이번에는 다운로드 받은 새로운 커널을 빌드하기 위해

/usr/src 디렉토리에 압축을 해지한 linux 이름으로 심볼

링크를 만든 새로운 커널의 소스 디렉토리로 이동한다.

 

 

tar xjf linux-2.6.18.tar.bz2

ln -s linux-2.6.18 linux

cd /usr/src/linux

 

지금부터는 커널 컴파일에 앞서 자신의 시스템 환경에 맞게 커널을 설정하는 과정?

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,156 명
  • 현재 강좌수 :  36,513 개
  • 현재 접속자 :  276 명