Step By Step 커널 프로그래밍 강좌 ①
작성자 정보
- 웹관리자 작성
- 작성일
컨텐츠 정보
- 28,597 조회
- 0 추천
- 목록
본문
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
지금부터는 커널 컴파일에 앞서 자신의 시스템 환경에 맞게 커널을 설정하는 과정?
관련자료
-
이전
-
다음