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

번호 제목 글쓴이 날짜 조회 수
106 rsync / 파티션 전체 동기화 방법 호스트웨이 2012.12.14 2426
105 특정 파일이 소속된 rpm 패키지 찾기 호스트웨이 2012.12.14 1776
104 df 와 du의 출력 크기가 다르게 보이는 이유 호스트웨이 2012.12.14 4423
103 nl명령어를 사용해 파일내용 출력시 행번호 붙이기 file 호스트웨이 2012.12.20 3270
102 df 쉽게 보기 호스트웨이 2012.12.20 2834
101 쉘 프롬프트에서 바로 이전 디렉토리로 이동하기 호스트웨이 2012.12.20 2749
100 free -m 에서 free (남는 메모리 양) 최소량 제한하기 호스트웨이 2012.12.21 2144
99 [ERROR] ftp error 500 OOPS: cannot change directory:/home/ 호스트웨이 2012.12.21 4276
98 리눅스 캐시 메모리 비우기 file 호스트웨이 2012.12.26 5267
97 리눅스 free 명령어 호스트웨이 2012.12.26 1817
96 ls -l 출력 시 날짜형태 변경 호스트웨이 2012.12.27 6128
95 리눅스 uniq 명령어 file 호스트웨이 2012.12.27 7875
94 sftp 서비스 막기 호스트웨이 2012.12.27 1317
93 오늘 생성한 파일만 조회하기 호스트웨이 2012.12.27 6215
92 partprobe - 리부팅 없이 사용 중인 파티션 재인식 호스트웨이 2012.12.28 8297
91 samba 설치 file 호스트웨이 2014.04.14 3360
» 리눅스 커널 업데이트 및 커널 변경 부팅 방법 file 호스트웨이 2014.10.30 23375
89 SVN(subversion) 설치 및 셋팅 file 호스트웨이 2014.12.02 6418
88 epel-release 설치하기 file 호스트웨이 2014.12.22 14275
87 ngrinder를 이용한 부하 테스트 - 1) Controller 설치 file 호스트웨이 2015.04.08 4285