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

번호 제목 글쓴이 날짜 조회 수
266 sshd_config 파일 설명 호스트웨이 2012.11.29 14051
265 리눅스 comm 명령어를 통해 두개의 파일내용 비교하기 file 호스트웨이 2012.11.29 4433
264 리눅스 일반사용자에게 root 권한 부여하기 file 호스트웨이 2012.11.23 12428
263 debian / ubuntu SSH root 사용자 접속 허용 호스트웨이 2012.11.23 14069
262 vi 편집기에서 모든글자를 대소문자로 변경할때 사용하는 명령어 호스트웨이 2012.11.23 4139
261 ifconfig 항목 설명 호스트웨이 2012.11.22 4399
260 /proc 디렉터리내 파일 정보 알아보기 호스트웨이 2012.11.21 1917
259 랜카드 본딩(bond0) 설정 호스트웨이 2012.11.16 2719
258 현재 접속 사용자(머신/디바이스)수 알아내기 호스트웨이 2012.11.16 1130
257 arch 명령어를 통해 컴퓨터 종류 알기 file 호스트웨이 2012.11.16 1797
256 INIT: no more processes left in this runlevel 메세지 발생시 호스트웨이 2012.11.15 3018
255 vi 로 ^M 제거하기 호스트웨이 2012.11.15 11206
254 리눅스 간단 시스템 점검 1편 호스트웨이 2012.11.14 4128
253 limits.conf 설명 file 호스트웨이 2012.11.09 2132
252 Ubuntu 12.10(quantal) 업그레이드 하기 호스트웨이 2012.11.09 19237
251 bonding mode 종류 알아보기 호스트웨이 2012.11.08 10456
250 쉘 프롬프트 설정하기 file 호스트웨이 2012.11.08 2671
249 kbd_mode 명령어를 통해 인식중인 키보드모드 출력 및 변경하기 file 호스트웨이 2012.11.06 1896
248 리눅스 look 명령어 file 호스트웨이 2012.11.02 2598
247 i386, i586, i686, x86의 차이 호스트웨이 2012.11.01 7467