기본 콘텐츠로 건너뛰기

Cent OS 7 커널 업그레이드 방법 (Manual)


Cent OS 7 커널 업그레이드 방법
수동으로 컴파일하여 업그레이드


Graf. Razorbacks
2019-06-06

저번 시간에 이어서 이번 시간에는 Cent OS 7 의 커널을 elrepo 저장소를 이용하지 않고, 순수하게 kernel.org 에서 다운로드 받아 설치하는 방법을 알려드리고자 합니다. 저번 시간에 수동 설치를 하는 것 보다 elrepo 를 이용하는 방법이 10배, 100배는 쉽고 빠르다고 말씀을 드렸는데요.

정말 그렇습니다. 수동 설치는 설치할 것들이 많고, 커널을 일일이 컴파일하기 때문에 그만큼 시간도 많이 필요합니다.
저 같은 경우에는 약 1시간 정도 걸린 것 같습니다. 가상 머신 환경에 12코어를 이양하고, 16GB 의 메모리를 할당했습니다.

결론적으론 오래걸린다는 것은 변하지 않습니다.

하지만, 리눅스를 탐구하기 위해 여기까지 찾아오신 여러분들을 위해 '삽질 한 김에 석유까지 파자!' 라는 마인드를 가진 제가 직접 보여드립니다.

:: 지난 시간에 최신 버전 커널이 "5.1.6" 이라고 말씀을 드렸는데, 잠시 일하고... 피곤해서 그냥 자고... 하다보니 오늘 6월 5일에 "5.1.7" 버전의 커널이 등장했습니다. 숫자만 바뀌었으니 진행하시는덴 문제가 없습니다.

기본적인 yum 명령어 배우기-(준비중) <- 언제 만들거냐고 물어보지 말아주세요...



준비사항 / 이번 시간에 필요한 것들

1. Cent OS 7 설치는 동일하게 "최소설치" + "호환성 라이브러리" + "개발용 도구" 이 세 가지를 설치했습니다.
2. bc, openssl-devel, ncurses-devel, elfutils-libelf-devel.x86_64, wget 설치
     2-1. bc : Basic Calculator 리눅스용 계산 프로그램과 거기에 사용되는 프로그래밍 언어 모음
     2-2. openssl-devel : SSL과 TLS 프로토콜을 오픈 소스로 구현한 openssl 의 개발용 라이브러리입니다.
     2-3. ncurses-devel : 터미널과 독립된 방식으로 이용할 수 있도록 API를 제공하는 라이브러리입니다.
     2-4. elfutils-libelf-devel.x86_64 : ELF 바이너리를 처리하고, 코어 / 프로세서의 유틸리티의 x86_64 아키텍처 개발용 라이브러리입니다.
     2-5. wget : 웹 서버로부터 원하는 웹 사이트의 정보를 가져오는 역할을 하는 명령어 세트입니다.



이 페이지에서 배울 수 있는 것들

Step 1. Cent OS 7 의 패키지 업데이트 (기존과 동일)

Step 2. 커널 버전 체크 (기존과 동일)

Step 3. bc, openssl-devel, ncurses-devel, elfutils-libelf-devel.x86_64, 
wget 라이브러리/패키지 설치

Step 4. wget 을 이용하여 kernel.org 에서 최신 커널 다운로드

Step 5. xxxx.tar.xz 압축 파일, 압축 해제 방법

Step 4. 새로운 커널 설치

Step 5. grub2 부트 로더 설정 (기존과 동일)

Step 6. 오래된 커널 제거 (기존과 동일)



Step 1. Cent OS 7 의 패키지 업데이트

// 이번 스텝에서는 Cent OS 7 의 업그레이드 및 업데이트하는 명령어를 배울 수 있습니다.

커널을 업그레이드하기 전에 가장 먼저해야 할 일은 모든 패키지를 최신 버전으로 업그레이드하는 겁니다.
구버전의 패키지들이 지원하지 않거나, 요소가 없을 수 있기 때문에 업그레이드가 필수입니다.

아래의 명령어를 입력하여 패키지를 업데이트 합니다.

# yum -y update




아래의 명령어를 통해 업데이트와 설치를 빠르게 할 수 있도록 입력합니다.

# yum install yum-plugin-fastestmirror

위의 방법을 진행하면 Cent OS 7 시스템이 업데이트되고, 모든 패키지가 최신 버전으로 업그레이드 됩니다.


Step 2. 커널 버전 체크

// 이번 스텝에서는 Cent OS 7 의 운영체제 및 커널 버전을 체크하고 그 명령어를 배울 수 있습니다.

아래의 명령어를 입력하여 확인합니다.

# cat /etc/redhat-release
# cat /etc/os-release



위의 두가지 명령어를 하나로 조합하여 이용할 수 있습니다.

# cat /etc/redhat-release && cat /etc/os-release



같은 명령어지만 한 번에 쓰거나, 나눠쓰거나 하는 차이밖에 없습니다.

커널 버전을 확인합니다.

# uname -r

커널 버전과 아키텍쳐를 확인하실 수 있습니다.


Step 3. bc, openssl-devel, ncurses-devel, elfutils-libelf-devel.x86_64, wget 라이브러리 / 패키지 설치

// 이번 스텝에서는 yum 명령어를 통해서 예/아니오 확인하지 않고, 여러 라이브러리 / 패키지를 하나의 명령줄로 설치할 수 있도록 하는 방법을 배웁니다.

어렵게 생각하실 필요가 없습니다.
그저 입력만 하면 됩니다.

# yum -y install bc openssl-devel ncurses-devel elfutils-libefl-devel.x86_64 wget

* " -y " 옵션이 이 명령의 메인입니다. 그냥 무조건 "예" 로 대답하라는 옵션입니다.
즉, 무조건 예하고 설치해! 입니다.


띄어쓰기에 유의하셔서 입력하셔야 합니다. 그 외에는 입력만 하면 됩니다. 그러면, 묻지도 따지지도 않고, 바로 설치가 됩니다!
저장소의 속도가 빠르다면 금방 설치 됩니다.


Step 4. wget 을 이용하여 kernel.org 에서 최신 커널 다운로드

// 이번 스텝에서는 wget 을 이용하여 파일을 다운로드 받는 법을 설명합니다. 꼭 커널이 아니여도 원하는 파일이 있다면, 다운로드 받을 수 있습니다.
// " cd " 명령어를 입력하여 CUI 환경에서 폴더들을 옮겨다니는 방법을 배웁니다.

wget 은 web get 이라는 뜻 입니다.

리눅스 커널을 담당하는 웹사이트를 한 번 방문해볼까요?
:: https://www.kernel.org/ ::

이곳이 바로 메인 리눅스 커널의 홈페이지입니다.
최신 버전 혹은 원하는 버전의 커널을 다운로드 받습니다. 최신 버전을 받을꺼니까 5.1.7 버전에서 “ tarball “ 에 오른쪽 클릭을 하여 링크 복사를 선택합니다.
그 다음에 주소창에 붙여넣기하여 그 주소를 기억하거나 보면서 입력합니다.



우리는 커널의 소스 코드를 다운로드 받는 것이기 때문에 먼저 Cent OS 7 의 소스 코드 폴더로 이동합니다.

아래의 명령어를 입력해주세요.

# cd /usr/src/

그러면, 호스트명 뒤에 폴더 이름이 추가됩니다. 예를 들자면 " [razorbacks@localhost src] # " 이라고 표현됩니다.
이 상태에서 wget 을 이용하여 커널을 다운로드 받습니다.

아래의 명령어를 입력합니다.

# wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.1.7.tar.xz


자, 다운로드가 완료되었습니다. " ls “ 명령어를 입력하면 다운로드 받은 것을 확인할 수 있습니다.




Step 5. xxxx.tar.xz 압축 파일, 압축 해제 방법

// 이번 스텝에서는 tar.xz 혹은 tar.gz 파일 압축 해제 방법을 배울 수 있습니다.

이제 다운로드 받은 linux-5.1.7.tar.xz 를 압축 해제합니다. (혹은 tar.gz 으로 다운로드 받으신 분이 있을 수도 있기 때문에 두 가지 모두 소개합니다.)

아래의 명령어를 입력합니다.

다운로드 받은 파일이 tar.xz 일 경우 : # xz -d linux-5.1.7.tar.xz 이후 # tar -xvf linux-5.1.7.tar.xz
다운로드 받은 파일이 tar.gz 일 경우 : # tar -xvzf linux-5.1.7.tar.gz



* 저번에 알려드린 " && " 방법으로 저는 한 번에 압축 해제를 진행하였습니다.
tar.xz 는 xz 해제 -> tar 해제 / tar.gz 는 한 번에 해제가 됩니다.
" && " 사용의 차이점은 한 줄에 쓰느냐, 두 번 나눠서 쓰느냐 차이입니다.

압축이 끝나고 나면 다시 한 번 " ls " 를 입력하여, 압축이 정상적으로 풀렸는지 확인합니다.



" linux-5.1.7 " 이라는 폴더가 생겼다면 성공한 겁니다.


Step 4. 새로운 커널 설치

// 이번 스텝에서는 새로운 커널을 설치하는 방법을 배웁니다.
// 나름대로 정리한다고 했습니다. 워낙 해야할 일이 많기 때문에 천천히 따라오시면 모두 진행하실 수 있습니다.

위의 압축해제까지 진행하셨다면 아직도 src 폴더에 계실겁니다

위의 상태에서 심볼릭 링크를 만들어줍니다.

* 심볼릭 링크는 흔히 Windows 의 " 바로가기 " 라고 이해하시면 쉽습니다.

아래의 명령어를 입력합니다.

# ln -s /usr/src/linux-5.1.7 /usr/src/linux




* linux 라는 이름으로 linux-5.1.7 에 대한 바로가기를 만드는 명령어입니다. 커널 버전에 따라서 원하시는 커널 버전을 입력하시면 됩니다.

“ ls “ 를 입력하여 확인하면, 파란 linux 라는 글씨가 보입니다. 그것이 심볼릭 링크입니다.

이제 linux 심볼릭 링크로 이동합니다.

# cd /usr/src/linux




호스트명 뒤에 “ src “" linux " 로 바뀌었다면, 정상적으로 이동한 겁니다.

먼저 컴파일할 소스파일을 복사합니다.

# cp /boot/config-3.10.0-957.el7.x86_64 /.config




* 커널 버전은 새로 다운로드 받은 커널이 아니라, 위의 “ uname -r “ 명령어로 확인한 현재의 커널 버전을 입력해야 합니다.

성공하면 아래의 명령어를 입력합니다.

# make menuconfig




* menu 구성을 만들라는 명령어입니다. " make “ 는 만들어! 임을 기억합시다!

make menuconfig 에 진입하면, 새파란 화면과 회색 메뉴가 나타납니다.
" General Setup " 을 선택하고 엔터를 누르시고, 여러가지 영어 메뉴 중 “ Enable deprecated sysfs features to support old userspace tools “ 라는 메뉴로
커서를 옮기고, 스페이스바를 눌러 체크합니다. (뒤에 tools 가 too 로 짤려서 보일 수 있습니다.)



후에 아래 메뉴 중 " save “ 를 선택하여 저장하고 “ exit “ 로 종료합니다.

* sysfs 의 레이아웃을 구버전으로 바꿔주는 옵션입니다.

자.... 이제부터 시작입니다.

커널을 컴파일 합시다!
- 아래의 명령어를 입력하고, 식사를 하고 차를 마시고.... 와도 안되어 있습니다. -

# make all



참고 : 화면이 깜깜해져 있을 수 있습니다. 확인 결과 CUI 화면 보호기 같이 진행되고 있더라도 한동안 움직이지 않으면 보이지 않으니, 스페이스바를 한 번 누르시면 화면이 나옵니다.

..... 시간이 흐른 뒤 (약 1시간 뒤) .....

이제 커널을 설치합니다.(!!!!)

# make modules_install



모듈 설치가 끝나고 나면, 바로..

# make install

을 입력합니다. 위 두가지는 금방 끝납니다.

위 사항을 모두 완료하셨다면, 새로운 커널의 설치는 완료된 겁니다.

하................. (저만 이런 마음은 아닐 겁니다. 다음부터는 elrepo 를 이용합시다.....)



Step 5. grub2 부트 로더 설정

// 새로 설치된 커널로 부팅할 수 있도록 설정하는 법을 배웁니다.

아래의 명령어를 입력하여 부팅 가능한 커널을 확인합니다.

# grep ^menuentry /boot/grub2/grub.cfg | cut -d “’” -f2

CentOS Linux (5.1.7) 7 이 확인됩니다.

이제 아래 명령어를 입력하여 최신 커널로 부팅하도록 설정합니다.

# grub2-set-default “CentOS Linux (5.1.7) 7”

이제 부트 로더도 설정이 되었습니다. 정상적으로 등록이 되었는지 확인해 봐야죠?

아래의 명령어를 또 입력해 봅니다.

# grub2-editenv list


정상적으로 등록이 되었다면, 새로 설치한 커널이 나타납니다!!

이제 재부팅하여, 5.1.7 커널 Cent OS 7 으로 부팅합니다.



정상이라면....
또 성공했습니다!!


Step 6. 오래된 커널 제거

// 이번 스텝에서는 예전 커널을 삭제하는 법을 배웁니다.

새로 커널이 설치되었으니 공간을 위해서 구형 커널을 삭제합시다.
다시 한 번 부팅되어 있는 커널이 새로운 커널이 맞는지 확인합니다.

# uname -r

맞게 부팅되어 있다면, 구형 커널을 삭제합시다.

# yum remove kernel-3.10.el7.x86_64

삭제가 완료되었다면, 이제 5.1.6 커널만 사용됩니다.

-만약 최신 커널들만 놔두고 옛날 커널들을 삭제하고 싶다면 아래의 방법을 이용합니다.

커널 수정을 위해 아래의 명령어를 입력하여 yum-utils 를 설치합니다.

# yum install yum-utils

설치가 완료되면, 아래의 명령어를 입력하여, 최신 커널 2개 (혹은, 그 이상) 를 놔두도록 합시다.

# package-cleanup —oldkernels —count=2

* “ —count=* “ 는 옵션입니다. 2개를 남기고 싶다면, 2를 입력하고, 원하는 숫자를 입력하면 됩니다.



자... 이번 시간에는 정말로 고생 많으셨습니다.

elrepo 저장소에 비해서 굉장히 시간과 손이 많이 가는 방법이었습니다.
아마 여러분들께서도 저와 같이 '다음부턴 elrepo 로....' 라는 마음이 같으리라 생각이 됩니다.

그래도, 무엇인가 해냈다는 생각이 마음을 들뜨게 만듭니다.
여러분께서 성공하셔서 이 글들을 보고 계신다면 참 좋습니다.

이제 여러분께서도 수동으로! 몇 시간씩 커널을 컴파일하고 수동으로 설치하는 방법을 터득하셨습니다!

정말 고생하셨습니다.

다음 시간에는..... 다른 배포판의 업데이트를........ 그런데 꼭 수동 업그레이드 방법을 알려드려야 하나요....?!?!?

댓글

댓글 쓰기

이 블로그의 인기 게시물

Windows / Linux 듀얼 부팅 -- 서로 다른 드라이브에 설치하고 부팅하기

Windows / Linux 듀얼 부팅 서로 다른 드라이브에서 설치하고 부팅하기 2020 . 05 . 15 2020 . 05 . 21 os-prober 추가 및 수정 우리나라에서 Windows 가 없는 채로 컴퓨터를 이용하기란 참 쉽지 않습니다. 다행히 애플의 제품을 많이 선호하고, 안드로이드 스마트폰을 이용하면서 환경이 많이 개선되어가고 있습니다만, 그래도, 몇 몇의 사이트(특히, 정부 관련 사이트 및 결제 관련 사이트)는 여전히 Windows 가 아닌 환경에서 이용하기란 매우 어렵습니다. 그래서, 어쩔 수 없이 Windows 를 병행하여 듀얼 부팅하는 방식으로 이용하시는 분들도 많고, 가상머신을 통해서 이용하는 분들도 있겠죠? 저는 이 글에서 실제 하드웨어에서 윈도우즈와 리눅스를 병행하여 설치하고 듀얼 부팅을 시킬 수 있도록 설명을 하려고 합니다. 그런데!  다른 블로그와 다른 설명을 할 예정입니다. 많이 검색을 해보셨다면, 아마, 동일한 드라이브에서 파티션을 나누어 듀얼 부팅을 할 수 있도록 설명하는 블로그는 아주 많습니다. 저 또한 굉장히 많은 시간을 이 "듀얼 부팅" 때문에 검색도 많이하고, 많은 온라인 커뮤니티에서 도움을 받았지만, 많은 블로그에서는 동일한 드라이브 내에서 듀얼 부팅을 구성하는 것을 설명하기 때문에, 제가 처한 상황과 달라 가상 환경에서 직접 몇 시간을 작업하고 테스트 한 뒤에 실제 저의 컴퓨터에 듀얼 부팅이 성공적으로 진행이 되어 이 글을 작성합니다. 다른 블로그에서 설명해주는 것과 다른 점은 아래와 같습니다. 다른 블로그에서는 A 드라이브에 파티션 a(Windows) 와 b(Linux) 로 나누어 부트로더를 구성하고 윈도우즈와 리눅스를 선택하여 듀얼 부팅을 가능하게 합니다. A 디스크 : a 파티션(Windows) / b 파티션(Linux) 그러나, 이 글에서는 서로 다른 드라이브 A 와 B 디스크에 Win

openSUSE(오픈수세) zypp / zypper 명령어 기초

openSUSE “ zypper “ 명령어 기초 2019-06-14 Graf. Razorbacks 소개 데비안 계열에는 "apt-get" 와 "apt” 명령어가 있고, 레드햇 계열에는 "rpm" 혹은 "yum” , 그리고, “dnf” , 아치 계열은 "pacman” 이나 "yaourt" 같이 여러가지 패키지 관리용 명령어들이 있습니다. 우분투나 민트를 이용하셨던 분들은 apt-get 가 많이 익숙하시겠죠? zypper 도 같은 역할을 합니다. 조금 알기쉽게 말하자면 어떤 프로그램(패키지)를 설치/삭제/업데이트 등을 하고, 패키지 관리 전반을 담당하는 명령어입니다. 예를 들어서 MariaDB 를 설치하고 싶다면 “ # zypper install mariadb-client “ 이런식으로 말이죠. GUI 가 보기에도 예쁘고,사용하기 편리하지만 GUI 를 사용하지 못하는 상황이 발생하더라도, 혹은, 콘솔이 필요한 상황에서도 이용할 수 있도록 기본적인 패키지 명령어 정도는 알고 있다면 이용하는데에 훨씬 편리합니다. 많은 분들이 대세라고 했던(?) 데비안 계열과 레드햇 계열에서 쓰던 apt-get 이나 yum 이 익숙해서 다른 명령어를 이용하면 새로 배워서 익혀야하는 불편한 점이 있기 때문에 우리나라에서는 특히 일반 사용자 입장에서는 어려우니 찾아서 사용하고 싶지 않은 리눅스 배포판이 되었습니다 하지만, 조금씩 바뀌어 갈 겁니다. 차근 차근. zypper 명령어 ## 제가 적어놓은 모든 명령어들은 openSUSE Leap 15.1  openSUSE Tumbleweed 에서  진행하였습니다. zypper 명령어의 기본 사용법은 아래와 같습니다. zypper : [전역 옵션] <명령> [명령 옵션] [인수] zypper : [—GLOBAL-OPTIONS] <COMMAND> [—COMMAND-OPTIONS] [A

openSUSE(오픈수세) 설치 방법

openSUSE(오픈수세) 설치 방법 1. openSUSE(오픈수세) 설치 방법 2. openSUSE(오픈수세) 듀얼 부팅 파티션 방법 2019-06-16 Graf. Razorbacks 0. 시작하기 전에… 오픈수세도 다른 배포판들 처럼 온라인에서 ISO 이미지 파일을 다운로드 받아서 부팅이 가능한 미디어에 저장하여 이용이 가능합니다. USB 도 가능하고, DVD 에 복사하여 이용할 수도 있으며, CD로도 이용할 수 있습니다.(이 경우에는 웹 다운로드 버전을 받아야 합니다.) 설치하는 방법과 과정은 모두 동일하지만, 미디어가 USB, DVD인지에 따라 다른 부분은 참고하지 않습니다. Windows 10 에서 Rufus 를 이용하여 USB 에 복사 후 설치하는 방법을 안내합니다. CD 및 DVD 를 통해 이용하는 경우에는 동일하게 이미지 굽듯 이용하시면 됩니다. 설치 내용이 조금 길 수 있습니다. 스크린샷이 매우 많습니다. 하나부터 차근 차근 설명드리려다 보니, 아마 설명 보다 스크린샷이 더 많은 것 같습니다. 참고적으로 이 방법은 ‘단일 디스크에서 파티션되어 있지 않은 디스크(다른 운영체제 없음)’ 을 기준으로 설명합니다. 추후, 단일 디스크 다중 운영체제(Windows / openSUSE 멀티 부팅) 과 다중 디스크 다중 운영체제 (디스크가 2개, Windows 와 openSUSE 멀티 부팅) 에 대해서 별도 설명할 예정입니다. // 최대한 쉽게 설명하고자 했더니, 스크린샷과 글의 양이 조금 많습니다. 보시기에 조금 어려움이 있을지 생각이 듭니다만, 원하실 경우에는 스크린샷만 보고도 설치할 수 있기 때문에 편하게 이용하시면 됩니다. 준비물 8GB 이상의 USB 플래시 메모리 ( 주의!! 이미지를 복사할 경우, USB 메모리는 포맷됩니다. 사용하지 않는 USB 이거나, 자료를 모두 백업하신 후에 이용하시기 바랍니다. 해당 부분에 대해서 본인은 책임을 지지 않습니다.) openSUSE 디스