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 리눅스 커널 버전 의미 file 호스트웨이 2012.04.20 27106
305 debian 에서 CSR decoding 시에 발생되는 에러(40 The CSR uses a key that is believed to have been compromised!) HOSTWAY 2008.12.04 27055
304 원하는 용량만큼 분할해서 압축하기 sylee 2008.05.15 27050
303 diff 사용방법 sylee 2008.05.15 26967
302 가용할 수 있는 물리적 메모리를 최대한 이용해봅시다. hostway 2008.05.14 26669
301 부하 테스트 2편 – Web Test 호스트웨이 2012.04.27 26662
300 sudo 사용하기 호스트웨이 2008.05.19 26560
299 at 으로 작업 예약 하기 호스트웨이 2008.05.19 26293
298 리눅스 ls 디렉토리 혹은 파일 별 출력하기 file 호스트웨이 2012.06.22 26086
297 find 명령 1 sylee 2008.05.14 25983
296 mrtg를 이용한 시스템자원 모니터링(debian 5.0) jook 2009.06.02 25926
295 watch 로 시스템 모니터링 하기 호스트웨이 2008.05.19 25537
294 XFS파일 장점및 단점 호스트웨이 2012.07.06 25480
293 ipv6 비활성화 하기 호스트웨이 2012.04.06 25465
292 XFS 파티션 설치 및 마운트 (CentOS 기준) 호스트웨이 2015.09.09 25384
291 vsftp에서 업로드, 다운로드 전송속도 제한하기 file 호스트웨이 2012.05.05 25287
290 CPU core 별 사용량 확인 하기 호스트웨이 2012.06.08 25280
289 rsync를 사용하여 데이터 백업 하기 jook 2009.04.25 25182
288 ncftp의 bookmark 기능 sylee 2008.05.15 25075
287 비프음 콘트롤 호스트웨이 2009.02.12 24943