Linux ETC

1. 기존에 설치되어 있던 리눅스 커널 버전을 확인한다.

[root@ljh ~]# uname -a

Linux ljh 2.6.18-308.el5 #1 SMP Tue Feb 21 20:06:06 EST 2012 x86_64 x86_64 x86_64 GNU/Linux

1.jpg


2. 업데이트를 원하는 리눅스 커널 버전을 www.kernel.org 사이트에서 해당 서버로 다운로드 한다.


3. 다운 받은 커널 소스를 업로드 하고 압축을 푼다.

[root@ljh src]# wget ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.30.7.tar.gz

[root@ljh redhat]# tar -xvzf linux-2.6.30.7

 

4. 기존에 사용하던 커널옵션은 /boot/config-2.6.18-308.el5에 저장되어 있다. 이 파일을 압축해제한 폴더에 복사하여 붙여넣는다.

[root@ljh boot]# cp config-2.6.18-308.el5 /usr/src/redhat/linux-2.6.30.7/

 

5. 새로운 소스의 심볼릭 링크를 생성한다.

[root@ljh linux-2.6.30.7]# ln -s linux-2.6.30.7 linux-2.6


6. 본격적인 커널을 컴파일 한다. 만약 이전에 커널을 컴파일한 경험이 있다면 아래와 같은 명령어로 오브젝트파일과 이전 커널 옵션등을 정리해준다.

[root@ljh linux-2.6.30.7]# make clean

[root@ljh linux-2.6.30.7]# make menuconfig

HOSTCC  scripts/basic/fixdep

  HOSTCC  scripts/basic/docproc

  HOSTCC  scripts/basic/hash

HOSTCC  scripts/kconfig/conf.o

  HOSTCC  scripts/kconfig/kxgettext.o

  HOSTCC  scripts/kconfig/lxdialog/checklist.o

  HOSTCC  scripts/kconfig/lxdialog/inputbox.o

  HOSTCC  scripts/kconfig/lxdialog/menubox.o

  HOSTCC  scripts/kconfig/lxdialog/textbox.o

  HOSTCC  scripts/kconfig/lxdialog/util.o

  HOSTCC  scripts/kconfig/lxdialog/yesno.o

  HOSTCC  scripts/kconfig/mconf.o

  SHIPPED scripts/kconfig/zconf.tab.c

  SHIPPED scripts/kconfig/lex.zconf.c

  SHIPPED scripts/kconfig/zconf.hash.c

  HOSTCC  scripts/kconfig/zconf.tab.o

  HOSTLD  scripts/kconfig/mconf

scripts/kconfig/mconf arch/x86/Kconfig

#

# using defaults found in /boot/config-2.6.18-308.el5

#

/boot/config-2.6.18-308.el5:630:warning: symbol value 'm' invalid for IP_DCCP_CCID3

/boot/config-2.6.18-308.el5:631:warning: symbol value 'm' invalid for IP_DCCP_TFRC_LIB

/boot/config-2.6.18-308.el5:1365:warning: symbol value 'm' invalid for FIXED_PHY

/boot/config-2.6.18-308.el5:1671:warning: symbol value 'm' invalid for ISDN

/boot/config-2.6.18-308.el5:2789:warning: symbol value 'm' invalid for RTC_INTF_SYSFS

/boot/config-2.6.18-308.el5:2790:warning: symbol value 'm' invalid for RTC_INTF_#ROC

# configuration written to .configarning: symbol value 'm' invalid for RTC_INTF_#EV

/boot/config-2.6.18-308.el5:2813:warning: symbol value 'm' invalid for DMA_ENGINE

*** End of Linux kernel configuration.ng: symbol value 'm' invalid for GFS2_FS_L*** Execute 'make' to build the kernel or try 'make help'.

2.jpg


여러 명령어가 수행된 후 위와 같은 화면이 출력된다.

해당 화면에서 커널에 대한 사용환경에 따라 설정옵션을 넣어 준 후에 아래의 Save an alternate Configuration File 을 통해 .config 라는 이름을 저장한다. 이 파일은 사용자 환경에 따라 다르겠지만 일반적으로 /usr/src/redhat 또는 /usr/src/linux 에 저장 되며 커널 컴파일시 사용하므로 안전하게 보관해야 한다. 만약 make mrproper 을 실행하면 .config 파일은 삭제되므로 저장 할 때 다른 이름으로 한번 더 저장하는 것이 좋다.


7. 커널 이미지를 생성한다.

커널 이미지 생성 시 시간설정이 현재시간으로 설정 되어있지 않다면 이미지생성 과정에서 무한루프가 발생할 수 있다. 따라서 커널 이미지 생성 명령어를 입력하기 전에 현재시간으로 동기화 해줘야 한다. bzImage I는 반드시 대문자 I 로 입력해야 한다.

[root@ljh linux-2.6.30.7]# rdate -s time.bora.net

[root@ljh linux-2.6.30.7]# make bzImage

이전생략

CC      arch/x86/boot/video-bios.o

LD      arch/x86/boot/setup.elf

OBJCOPY arch/x86/boot/setup.bin

OBJCOPY arch/x86/boot/vmlinux.bin

HOSTCC  arch/x86/boot/tools/build

BUILD   arch/x86/boot/bzImage

Root device is (253, 2)

Setup is 14072 bytes (padded to 14336 bytes).

System is 2566 kB

Kernel: arch/x86/boot/bzImage is ready  (#1)


8. 커널 이미지가 생성 완료 되면 커널 옵션에서 모듈로 선택한 기능들에 대해 모듈파일을 생성하는 작업을 진행해야 한다. 

명령어는 ‘make modules’ 이며 명령어가 실행된 후 ‘make modules_install’ 명령어로 앞서 생성된 오브젝트 파일들을 /lib/modules/업데이트할 커널 버전 디렉토리에 복사한다.

[root@ljh linux-2.6.30.7]# make modules

[root@ljh linux-2.6.30.7]# make modules_install

이전생략

INSTALL /lib/firmware/edgeport/down2.fw

INSTALL /lib/firmware/edgeport/down3.bin

INSTALL /lib/firmware/whiteheat_loader.fw

INSTALL /lib/firmware/whiteheat.fw

INSTALL /lib/firmware/keyspan_pda/keyspan_pda.fw

INSTALL /lib/firmware/keyspan_pda/xircom_pgs.fw

DEPMOD  2.6.30.7


9. 마무리 단계로 커널이미지와 여러가지 관련 셋팅 정보 파일을 /boot폴더에 복사하고 새 커널로 부팅을 하기 위해 ‘make install’ 이라는 명령어를 입력하여 자동 실행한다.

[root@ljh linux-2.6.30.7]# make install

sh /usr/src/redhat/ linux-2.6.30.7/arch/x86/boot/install.sh 2.6.30.7 arch/x86/boot/bzImage \

                System.map "/boot"

이후 /boot 디렉토리에 정상 복사가 되었는지 확인한다.


10. /boot/grub/grub.conf 파일을 살펴보면 새로운 커널에 맞는 부팅메뉴가 추가된 것을 확인할 수 있다.

[root@ljh linux-2.6.30.7]# cat /boot/grub/grub.conf

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE:  You have a /boot partition.  This means that

#          all kernel and initrd paths are relative to /boot/, eg.

#          root (hd0,0)

#          kernel /vmlinuz-version ro root=/dev/mapper/ddf1_4c5349202020202010000055000000004711471100001450p2

#          initrd /initrd-version.img

#boot=/dev/mapper/ddf1_4c5349202020202010000055000000004711471100001450

default=1

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

title CentOS (2.6.30.7)

        root (hd0,0)

        kernel /vmlinuz-2.6.30.7 ro root=LABEL=/

        initrd /initrd-2.6.30.7.img

title CentOS (2.6.18-308.el5)

        root (hd0,0)

        kernel /vmlinuz-2.6.18-308.el5 ro root=LABEL=/

        initrd /initrd-2.6.18-308.el5.img

3.jpg


화면을 보게 되면 총 2가지의 커널버전으로 부팅가능 하도록 메뉴에 나타나있다.

위에서부터 0123번순서로 번호가 부여되며, 부팅하고자 하는 커널 번호를 default=숫자 로 설정 변경하여 reboot을 통해 해당 커널 변경하여 부팅을 할 수 있다.


11. 업데이트한 커널로 정상부팅 확인

 [root@ljh ~]# uname -a

Linux ljh 2.6.30.7 #1 SMP Wed Sep 30 16:56:26 KST 2009 x86_64 x86_64 x86_64 GNU/Linux

4.jpg

번호 제목 글쓴이 날짜 조회 수
166 keepalived.conf 각 파라미터의 의미 호스트웨이 2012.05.18 15898
165 ssh port 번호 변경하기 호스트웨이 2012.10.05 15909
164 CentOS 4.x – yum mirror 사이트 변경 호스트웨이 2012.05.25 15916
163 cal 명령어로 달력 보기 호스트웨이 2012.08.23 15920
162 EXT3-fs warning: maximal mount count reached, running e2fsck is recommended 해결 호스트웨이 2012.06.22 15962
161 Ping 요청 막는 방법 호스트웨이 2012.05.04 16004
160 SED 명령어 사용법 호스트웨이 2012.07.20 16146
159 lsof를 이용한 시스템에서 Open된 Port 검색 호스트웨이 2012.06.08 16162
158 Debian upgrade, lenny apt source list 호스트웨이 2012.05.25 16192
157 OSI 7 Layer 의 이해 file 호스트웨이 2012.03.23 16265
156 Linux lastlog를 이용한 최근 접속정보 확인 file 호스트웨이 2012.04.06 16318
155 chattr 명령을 이용한 파일 속성 변경 file 호스트웨이 2012.04.07 16425
154 Ubuntu 12.04: Ubuntu 11.10 또는 Ubuntu 10.04 LTS 에서 Ubuntu 12.04 로 업그레이드하기 호스트웨이 2012.05.04 16425
» 리눅스 커널 업데이트 및 커널 변경 부팅 방법 file 호스트웨이 2014.10.30 16503
152 리눅스 로그인 메시지 출력 file 호스트웨이 2012.07.06 16515
151 파일 내용 출력 관련된 명령어 호스트웨이 2012.04.20 16567
150 리눅스 File 명령어를 통해 파일의 확장자나 속성알아보기 file 호스트웨이 2012.09.14 16653
149 CentOS 5/6 에 VMware Tools 설치 방법 호스트웨이 2012.08.31 16683
148 PHP 설치된 모듈 확인 호스트웨이 2012.08.03 16694
147 ubuntu 서버에 쉽게 apache + php + mysql + phpMyAdmin 설치하기 호스트웨이 2012.06.01 16727