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

번호 제목 글쓴이 날짜 조회 수
306 우분투 기본 쉘 dash 에서 bash로 변경하기 호스트웨이 2015.09.07 11715
305 패스워드 정책 변경 호스트웨이 2015.09.03 4046
304 명령어 dstat 사용하기 호스트웨이 2015.09.01 4582
303 ulimit 설정 관련 호스트웨이 2015.07.29 77984
302 2015년 7월1일 윤초 발생 관련 점검 방안 file 호스트웨이 2015.06.30 1778
301 Sysbench를 통한 System, MySQL 성능 테스트 file 호스트웨이 2015.06.26 10177
300 ngrinder를 이용한 부하 테스트 - 1) Controller 설치 file 호스트웨이 2015.04.08 4566
299 epel-release 설치하기 file 호스트웨이 2014.12.22 14759
298 SVN(subversion) 설치 및 셋팅 file 호스트웨이 2014.12.02 6718
» 리눅스 커널 업데이트 및 커널 변경 부팅 방법 file 호스트웨이 2014.10.30 24006
296 samba 설치 file 호스트웨이 2014.04.14 3732
295 partprobe - 리부팅 없이 사용 중인 파티션 재인식 호스트웨이 2012.12.28 8838
294 오늘 생성한 파일만 조회하기 호스트웨이 2012.12.27 6522
293 sftp 서비스 막기 호스트웨이 2012.12.27 1495
292 리눅스 uniq 명령어 file 호스트웨이 2012.12.27 8166
291 ls -l 출력 시 날짜형태 변경 호스트웨이 2012.12.27 6547
290 리눅스 free 명령어 호스트웨이 2012.12.26 2152
289 리눅스 캐시 메모리 비우기 file 호스트웨이 2012.12.26 5374
288 [ERROR] ftp error 500 OOPS: cannot change directory:/home/ 호스트웨이 2012.12.21 4630
287 free -m 에서 free (남는 메모리 양) 최소량 제한하기 호스트웨이 2012.12.21 2485