정상적으로 운영중인 서버에서 다른 커널로 부팅이 필요한 경우가 종종 있습니다.
특히, 커널 컴파일 후에는 리부팅이 반드시 필요하죠.
이 때, 특히 SATA 방식의 HDD 때문에 SATA 모듈이 올라오지 않아 커널 패닉으로 인해 부팅이 안되는 경우가 있습니다.
물론, 리부팅 후에 커널 패닉이 뜨더라도 다시 리부팅을 요청하면 되긴 합니다만...^^;;;
저 같은 경우에는 서버실에 서버를 올려놓고 OP 룸에서 이런저런 작업을 하다 커널 패닉이 뜨면 여간 귀찮을 수가 없습니다. ;;;
지문 찍고, 엘리베이터 타고 올라가서 윙윙 거리는 소음과 함께 콘솔을 붙여서 작업을 해야하기 때문이죠.
이럴 때 드는 생각은...
" 한 번만 다른 커널로 부팅하고 부팅이 안되면 자동으로 원래 커널로 부팅을 하게 할 수는 없을까? "
입니다.
위의 바램처럼 알아서 샤라락~ 되게 할 수 있습니다.
먼저 아래는 일반적인 grub.conf 의 설정입니다.
[root@localhost ~]# cat /etc/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/hda3
# initrd /initrd-version.img
#boot=/dev/hda
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.26.5)
root (hd0,0)
kernel /vmlinuz-2.6.26.5 ro root=LABEL=/
initrd /initrd-2.6.26.5.img
title CentOS (2.6.18-53.1.19.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-53.1.19.el5 ro root=LABEL=/
initrd /initrd-2.6.18-53.1.19.el5.img
title CentOS (2.6.18-53.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-53.el5 ro root=LABEL=/
initrd /initrd-2.6.18-53.el5.img
위에서 1번에 해당하는 2.6.19-53.1.19.el5 가 현재 운영중인... OS 설치시에 설정된 커널이고, 테스트를 위해 컴파일을 한 커널은 0 번인 2.6.26.5 입니다.
이제 한 번만 ! 테스트를 위한 커널인 2.6.26.5 커널로 부팅하도록 설정해 보겠습니다.
[root@localhost ~]# echo "savedefault --default=0 --once" | grub --batch
위의 커맨드를 입력하면 grub.conf 에서 0번에 설정된 2.6.26.5 커널로 한 번만! 부팅이 되도록 설정이 됩니다.
그 후에 grub.conf 를 아래와 같이 수정해 주면, 커널 패닉이 일어났을 경우 리부팅이 됩니다.
[root@localhost ~]# cat /etc/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/hda3
# initrd /initrd-version.img
#boot=/dev/hda
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.26.5)
root (hd0,0)
kernel /vmlinuz-2.6.26.5 ro root=LABEL=/ panic=5
initrd /initrd-2.6.26.5.img
title CentOS (2.6.18-53.1.19.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-53.1.19.el5 ro root=LABEL=/ panic=5
initrd /initrd-2.6.18-53.1.19.el5.img
title CentOS (2.6.18-53.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-53.el5 ro root=LABEL=/ panic=5
initrd /initrd-2.6.18-53.el5.img
[root@localhost ~]#
달라진게 보이시나요 ?
네 맞습니다. panic=5 라는 문구가 추가가 되었습니다.
이 panic=5 라는 문구는 커널 패닉시에 5초를 기다렸다가 리부팅을 하라는 문구입니다.
수정이 완료되었으면 리부팅을 합니다.
그러면...
1. 정상적으로 부팅이 되었을 경우
- 테스트를 위한 커널이 정상적으로 잘 부팅이 되었으므로, 나머지 작업을 하시면 됩니다.
default 커널로 사용을 하고자 하신다면 grub.conf 를 수정하시면 되겠죠 ?
2. 커널 패닉이 났을 경우...
- 5초 설정을 해두었으므로, 커널 패닉이 난 후 5초 뒤에 다시 리부팅을 시도하게 됩니다.
두 번째 부팅을 할 때에는 grub.conf 에 설정된 것처럼 1번 커널인 2.6.18-53.1.19.el5 로 부팅을 시도하게 되고 해당 커널은 지금까지 아주 잘~ 사용해왔던 커널이므로 아주 특별한 상황이 아닌이상 정상적으로 부팅이 잘 될 것입니다.
원래 커널로 다시 부팅이 되었다면 무엇 때문에 커널 패닉이 났는지 원인을 파악하고 다시 설정하셔야 겠죠 ?
어려운 내용은 아닌데 글로 적으려니 글이 상당히 길어지네요.
저에게만 유용한 팁이 아니길 기대합니다 ^^;;;
행복한 하루 되세요~
댓글 없음:
댓글 쓰기