리눅스 커널을 오늘에서야 설치해보았습니다. 스테레오뷰잉을 하기 위해선 우선 QuadroFX4500의 더블버퍼링이 필요하기 때문에 커널설치는 필수요소같더군요. 하지만 커널이 뭔지 사전적으로만 알고 있다가 직접 부딪혀 보니까 정말 장난이 아니네요, 제가 현재 보고 있는 클러스터링 관련 교재에서 왜 커널 컴파일을 리눅스 설치하자마자 최적화하려고 하는지 이제야 조금 이해할 것 같습니다.

커널은 메모리에 상주하여 시스템 디바이스와 메모리, 프로세스등을 관리하고, 입출력을 처리하는 등 운영체제의 핵심 역할을 수행하는 하나의 프로그램입니다. 모든 운영체제에는 커널이 있고,(윈도우 사용할때는 왜 몰랐을까요.. 이놈의 존재를...) 이 커널을 최적화시켜주어야지 운영체제(리눅스) 전체의 성능을 최적화시킬 수 있습니다. 그리고, 하드웨어가 추가될때에도 커널을 새로 컴파일해야 하드웨어가 작동합니다. 윈도우의 드라이버의 개념과 비슷하다고 볼 수 있겠네요(제 생각입니다.)
리눅스커널의 가장 큰 특징이 바로 스스로가 커널을 만들 수 있다는 점입니다. 리눅스의 다른프로그램들처럼 커널도 기본적으로 소스형태로 배포되며(
커널.org) 생각만큼 어렵지 않다고 합니다. 하지만 아무것도 모른채, 네이버 지식인과,
KLDP등을 참고해야만 하는 입문자에게는 엄청난 산으로밖에 보이질 않았습니다. 요즘 리눅스관련 공부를 하면서 느끼는 점이 있다면, MS 환경에서 놀아났던??ㅎㅎ 지난 20여년동안 정말 장님이 코끼리를 알듯, 빙산의 일각같은 얕은 지식으로 이제껏 컴퓨터를 다뤄왔다는 점입니다. 리눅스에서는 기존에
알 수 없었던 몰랐던 저레벨부터의 엄청난 것들을 모두 제어할 수 있어야만 컴퓨터(리눅스)를 사용하는데 있어 유저가 만족감을 느낄것 같습니다. (오늘같은 경우도 리눅스 컴파일을 하면서 시간가는줄 몰랐네요)
하지만 컴퓨터관련학과가 아닌이상 국내에서 리눅스를 접하기엔 어려운 환경이었고(변명입니다만...), 그 덕분에 저같은 입장에 서있는 많은 공학도들은 몇발 늦어버린 야릇한 감정을 느낄 수 밖에 없네요.
커널 컴파일 이야기로 돌아와서,
우선
커널.org서 최신 stable 버전을 다운로드받아 설치했습니다. 그런데 솔직히 이 커널사이트에서 뭘 받아야될 지 모르겠더군요. 아무런 관련 지식도 없었으므로, 직관적으로 2.6.23.14 를 받았습니다. 그런데 다운받은 후 압축을 풀어보니, 나오라는 디렉토리는 나오질 않고, 딸랑 파일 하나가 나오더군요. 파일이름도 patch로 시작합니다........ 그래 이건 패치였습니다.(이걸 깨닫는데 1시간 걸렸습니다.ㅜㅜ). 이렇게 버벅거리다가 결국 오른쪽의
F,(아마 풀버전의 약자인듯 합니다.)를 마우스오버해보니, 작업표시줄에 linux-2.6.23.14.tar.bz2가 나오더군요. 압축푸는 방법도 일일이 검색해가며..수행하니 걸리는 시간이 장난아니군요. 헐.. 그러나 이런 삽질이 훗날 필히 도움이 될거라 믿고, 계속 갑니다. 이끄.!
tar.bz2 압축풀기 명령어, tar.bz2 압축하기 방법압축해제 및 설치경로는 /usr/src로 해주었구요.
명령어는 다음과 같습니다.
# tar xvjf linux-2.6.23.14.tar.bz2그럼 linux-2.6.23.14라는 디렉토리가 생성되겠죠. 이 디렉토리를 간단히 링크걸었습니다.
# ln -sf linux-2.6.23.14 linux-2.6
링크건 후 /usr/include로 이동해보면 라이브러리들이 위치해 있는 것을 알 수 있습니다.
기존에 있던 amm, linux 디렉토리를 삭제해준 후
]# rm -rf asm/ linux/
기존에 asm-i386, linux, asm-generic을 다시 링크걸어줍니다.
]# ln -sf /usr/src/linux-2.6/include/asm-i386 asm
]# ln -sf /usr/src/linux-2.6/include/linux linux
]# ln -sf /usr/src/linux-2.6/include/asm-generic asm-generic
이렇게 링크를 걸어주는 이유는 기존 파일들을 제거하고, 새로 설치할 커널파일들을 덮어주기 위함인 것 같습니다. 어쩌면 필요없는 작업일지도 모르지만, 제 지식의 레벨상 튜토리얼대로 할 수밖에 없군요. 흑.
# cd linux-2.6.23.14
# make menuconfig
menuconfig를 컴파일합니다.
이제야 커널옵션으로 들어가는군요. 휴.
# make menuconfig // 커널 환경설정 부분입니다. 이부분은 너무 방대해서 전 우선 디폴트로 설정
# make bzImage // 커널 이미지를 생성합니다.
# make modules // 커널 환경설정에서 모듈로 설정했던 기능들을 컴파일하는 과정입니다.
# make modules_install // 컴파일된 모듈들을 /lib/modules 아래 설치합니다.
KLDP Kernel Guide 를 참고하시면 커널옵션에대한 자세한 설명이 나옵니다. 전 아직까지 다 읽어보고 적용하진 못했지만, 우선 그래픽카드를 깔기 위해서 차후 수정하기로 하고 디폴트로 설정하고 빠져나왔습니다. 그래도 엄청나게 오래 걸리는군요..ㅡㅡ; 괜히 디폴트로 했나봅니다. 지금 30분째 컴파일하고 있군요...쩝.
커널 컴파일에 걸린 시간을 작업전에 미리 측정해볼 수 있습니다.
# time -v sh -c 'make dep && make clean && bzImage && modules && modules_install'
이 부분을 이제야 봐버렸군요, 쩝 컴파일전에 한번 해보는건데......
이후과정 참고 :
새커널설치 및 문제해결
---------------------------------------------------------------------------------------
우.........악........................ 오늘하루 완전 삽질했습니다.
vmware 초기 하드용량을 작게 주는 바람에 module_install과정에서 에러가 나는군요. 억울한 마음에 기존에 설치했던 패키지들을 제거하려고 터미널명령어도 써보고, xwindow에서 소프트웨어 관리도 가보고 했지만 커널을 건드려서 그런지 먹통이 되는군요. 흑흑. 초기에 용량 좀 더 많이 줄껄 그랬습니다. 필요없는 패키지를 이것저것 너무 많이 깔아버린것도 그 원인일까요..? 흑흑. 슬픕니다. 슬퍼효..
우...........악...............머피의 법칙입니다.
이제서야 안 사실인데 vmware 기반에서는 그래픽카드또한 가상그래픽카드로만 잡힌다고 하네요.
흑흑. 그럼 나 오늘 뭐한거야? 대체.... 왜 이런 사실을 미리 말해주지 않는거지... 튜토리얼.... 칙쇼..
의욕상실입니다. GG....
나중에 시간나면? Window 지우고, Linux 기반으로 다시 시작해야 겠군요.. 나.....중......에.............