<포스팅을 시작하면서…>

 다들 알고 계시고 다른분들께 팁이 될까는 잘 모르겠지만,

이번에 개인미션으로

리눅스 설치를 하면서

조금은 까다로웠던 커널 업데이트에 대해

한번 정리해볼까 합니다.

잘못알고 있거나 틀린부분이 있다면

댓글로 사정없이 지적해 주시면 감사하겠습니다.


-설치 환경

OS : CentOS 6.5

커널 버전 : 2.6.32-431.23.3.e16.x86_64

-업데이트 순서

커널에 필요한 패키지 설치 및 업데이트

원하는 버전의 커널 다운로드

커널 컴파일 및 환경 설정

커널 적용

재부팅 및 작동확인


1. 커널에 필요한 패키지 설치 및 업데이트.

일단 현재 커널 버전을 확인해 봅니다.

커널확인

현재 패키지에는 현재 커널이 맞을수가 있습니다.

그래서 최신커널 업데이트 전에 모든 패키지를 업데이트 합니다.

#yum update

커널 업데이트 중 make menuconfig 라는 명령어를 통해

환경설정을 하게 되는데

이때 화면들이 깨지거나 제대로 알아보기 힘든 상황을 피하기위해

ncuses-devel 이란 라이브러리를 인스톨 합니다.

#yum install ncurses-devel

그리고 커널 설치시 필요한 패키지들이 묶여있는 그룹패키지를 설치합니다.

#yum groupinstall “Development Tools”


2. 설치를 원하는 버전의 커널을 다운로드 

https://www.kernel.org/pub/linux/kernel/v3.x/

저 주소로 가면 여러 버전의 커널이 나열되있는걸 볼수 있습니다.

제목 없음

전 일단 가장 최신버전을 받아봅니다.

/var의 경로로 다운로드를 해봅니다.

#cd /var

#wget http://www.kernel.org/public/linux/kernel/v3.x/linux-3.16.tar.gz

(혹시 wget 명령어가 먹히지 않으면 #yum -y install wget 으로 다운로드패키지를 설치합니다.)

받은 파일의 압축을 풀고 링크 설정

#tar xvzf linux-3.16.tar.gz

#cd /usr/src/

#ln -s /var/linux-3.16 linux


3. 커널 컴파일 및 환경 설정

make 명령어를 통해 컴파일과정을 거쳐 환경설정을 합니다.

#cd /usr/src/linux

#make mrproper

#make clean  //커널컴파일을 위해 소스파일들의 찌꺼기(?)를 정리

#cp /boot/config-‘uname -r’ ./.config  //현재 리눅스의 커널 설정파일을 이용해

3.16버전의 컴파일할 소스파일 복사

(‘uname -r’ 이 안먹힐때가 있더군요 그럴땐그냥 파일이름으로 대체하시면됩니다.)

#make menuconfig  //업데이트할 커널의 설정변경을 위한 툴 실행

제목 없음

설정화면이 보이면 일단 Load 메뉴를눌러 .config 소스 파일을 받아옵니다.

소스파일 로딩이 완료되면 General setup 항목을 선택합니다.

제목 없음

Enable deprecated sysfs features to support old userspace too

라는 항목을 <space bar> 를 이용해 체크해줍니다.

하단에 Save메뉴를 통해 저장 100%까지 게이지가 차는걸 확인한후 Exit로 빠져나옵니다.

설정파일을 이용하여 커널빌드 및 컴파일 합니다.

#make all

//”.config” 설정파일을 이용하여 커널소스 빌드(꽤 시간이 걸립니다.)

저는 이과정에서 한참지난후 알수없는 에러로 인해 리눅스를 다시 깔았던….기억이…ㅜㅜ

#make modules_install

//커널 소스 빌드내용을 모듈로 설치

#make install

//커널 설치


4. 커널 적용

리눅스 부트로더인 grub.conf 파일을 열어서 내용을 확인합니다.

#vi /boot/grub/grub.conf

제목 없음

파란 상자 안에 내용이 커널설치후 자동으로 입력된 값입니다.

제가 업데이트할때까지만해도 3.15가 최신이었어서 캡쳐본은 버전이 3.15네요.

빨간 상자 안에 값을 보시면 원래 default=1이 주석 처리 되있었는데

제가 커널적용을 위해 default=0을 주석처리하고 1번으로 변경한 내용입니다.

 


5. 재부팅 및 작동확인

재부팅후 제대로 반영됐는지 확인해 보겠습니다.

제목 없음

반영이 잘 된것 같습니다.


<마치며…>

기존 개발자 분들이 보시기엔 학습효과가 없을지도 모르겠네요.

하지만 저에겐 엄청난 시련과 고난의 연속이었습니다.

그리고 미션 받았던 버전이 미니멀 버전인지라…

우분투나 윈도우 같은 UI없이 하려니 처음엔 진짜 말도 안되는걸로 고생도 하게됬네요.

미션은 단순히 커널 업데이트 였는지 모르겠으나

이걸위한 네트워크 설정이라던지

여러가지 자잘한 명령어들

그리고 제가 원했던건 단순히 구글링으로 따라하는것이 아닌

리눅스 파일체계 라던지 구동 방식이라든지

이런것에 대해 좀더 알고 싶었습니다.

아마 이런걸 노리고 미션을 주지 않으셨나 싶네요.

빙산의 일각 이겠지만,

저한테는 이 커널 업데이트 하나만으로도 리눅스에 대해 많이 알게되고,

더 호기심을 갖게된 작업이었습니다.

혹여나 할줄은 알지만 너무오래되서 커널업데이트하는 방법이 가물가물 하시거나,

사용은하고 있지만 이런식으로 리눅스를 접해보지 못한분들을 위해

조금이나마 도움이 될까 싶어

이번주 학습회 주제로 정해 보았습니다.

끝까지 읽어주셔서 감사합니다.

STG 화이팅!