(10101101)173/UNIX2009. 3. 30. 03:02
커널을 알기위해서는 대략적인 OS의 계념이 필요 합니다. 뭐 OS를 간단하게 이야기 하면
"0, 1 밖에 모르는 컴퓨터를 사용자가 쉽게 사용할수 있게 해주는 (시스템)프로그램"
으로 표현할 수 있습니다. 그런대 이 OS는 종류가 다양한대 크게 나누자면 NT계열과 UNIX계열이 있습니다. NT계열이라고 해봤자 Window뿐이고(MAC 계열 제외) UNIX계열에는 Solaris, Linux, Ubuntu 등 많은 UNIX 계열에 OS들이 존재 합니다. 그런 OS들은 컴퓨터에 장착된 H/W를 컨트롤하고, 사용자가 쉽게 사용할 수 있도록 인터페이스들을 제공하며 그외에 많은 일들을 처리 합니다. 여기서 이 일을 하는게 바로 커널에 일 입니다. OS는 크게 3가지에 일로 나눌 수 있는대
커널 (Kernel)
쉘 (Shell)
파일 시스템 (File System)
이 3가지 입니다.

사용자가 리눅스를 사용할때는 쉘을 통해 명령을 주고 받으며 사용합니다. 
[root@FC10VM]#

이 모습은 쉘이 사용자의 명령을 기다리는 모습이 됩니다.
[root@FC10VM]# ls -l

이 모습은 엔터만 치면 쉘에 사용자가 "ls -l"이란 명령어를 내리는 모습 입니다. 이렇게 쉘이 사용자의 명령어를 받으면 쉘을 커널이 인식할 수 있도록 Binary형태로 변환해 커널에게 넘겨줍니다. 이를 받은 커널은 전달된 명령어를 실행하고 그 실행값을 쉘에게 다시 넘겨주게 됩니다. 당연히 Binary형태입니다. 결과값을 받은 쉘은 Binary형태는 사람이 알아보기 힘들기 때문에 다시 사람이 알아볼 수 있는 문자로 변환해 출력하게 됩니다. 이로써 간단하게 커널과 쉘이 하는일을 커널 설명과 함깨 했습니다. 하지만 이 글의 제목은 "Linux : 커널(Kernel)의 버전"입니다. 아직 본론이 아니란 말입니다.

문제는 서론이 본문보다 길다는 점 입니다. 본문은 오히려 간단한 내용을 담고 있습니다. 여러 명령어를 통해 Linux의 커널 버전을 알아낼 수 있습니다.

[root@FC10VM]# uname -a
Linux FC10VM 2.6.27.5-117.fc10.i686 #l SMP Tue Nov 18 12:19:59 EST 2008 i686 i686 i386 GNU/Linux
[root@FC10VM]# uname -r
2.6.27.5-117.fc10.i686
[root@FC10VM]# cat /proc/version
Linux version 2.6.27.5-117.fc10.i686 (mockbild@x86-7.fedora.phx.redhat.com) (gcc version 4.3.2 20081105 (Red Hat 4.3.2-7) (GCC) ) #l SMP Tue Nov 18 12:19:59 EST 2008
[root@FC10VM]# cat /proc/sys/kernel/osrelease
2.6.27.5-117.fc10.i686

위 방법은 커널 버전 정보를 알아내는 여러가지 방법들 입니다. 명령어를 통해 알아본 버전은 2.6.27.5-117입니다. 여기서 주버전, 부버전, 패치레벨이 있는대 왼쪽부터 순서대로 입니다.
2 : 커널의 주버전
6 : 커널의 부버전
27 : 커널의 패치레벨
주번전은 커널의 획기적이거나 커다란 변화가 있을 경우 증가하게 되는대 처음 발표한 Linux 0.2(0.1은 비공개임)이후 정식OS모습을 갖게된 커널을 1.0, 이후 업데이트가 이루어 지는대 기능, 구조뿐만 아니라 대칭형 멀티프로세싱인 SMP를 지원하면서 2.0으로 업데이트 됩니다. 그런대 여기서 부버전은 홀수와 짝수에 의미가 따로 정의되어 있습니다. 홀수는 개발버전을 의미하고 짝수는 안정버전을 의미 합니다. 즉 2.6.27은 2.6커널에 27번째 수정되어 재배포된 커널이라는 의미입니다.
하지만 끝에 5-117이란 숫자도 있습니다. 이는 각 버전에서 문제점을 보완한 각 단계 정보 라고 하는대 정확히 어떤 의미 인지 모르겠습니다.(알려주실분 기다립니다.)

테스트 환경
OS : Fedora Core 10, 2.6.27 Kernel
Posted by Special Alex