[Linux] 커널 패닉 시 이전 커널로 리부팅

문연수·4일 전
0

Linux (Fedora)

목록 보기
23/23

 필자는 군대에 있는 관계로 커널 패닉이 발생하면 무엇 때문에 패닉이 발생 했는지, 왜 발생했는지 알 도리가 없다. 심지어 리부팅도 불가능하므로 그냥 눈 뜨고 코 베이게 된다. 이것 때문에 컴퓨터를 키러 휴가를 써서 본가로 내려간 적이 한두번이 아니다. (뭐야 내 휴가 돌려줘요) 그런데! 어느 사이트 에서 아래의 글을 읽게 되었다:

  이 글을 읽고 바로 커널 패닉이 발생했을 때, 이전의 정상적으로 실행 되었던 버전의 커널로 재부팅하는 방법을 찾아보게 되었다.

1. 커널 패닉 시 재부팅

 뭐가 되었든 일단 커널 패닉이 발생했을 때 자동으로 재부팅이 되야 얘기가 된다. 이건 어렵지 않게 가능했다:

sudo vi /etc/default/grub
...
GRUB_DEFAULT=saved					# 기본적으로 추가되는 라인이지만,
									# 이 라인이 반드시 있어야 한다. (이후에 자세히 설명)
                                    
GRUB_CMDLINE_LINUX="... panic=5"	# 마지막에 `panic=5` 를 추가

/etc/default/grub 파일의 GRUB_CMDLINE_LINUX 옵션에 panic=5 를 추가하는 것으로, 커널 패닉이 발생했을 경우 5초 뒤 자동으로 리부팅 되도록 만들 수 있다.

sudo grub2-mkconfig -o /boot/grub2/grub.cfg # Fedora 40 기준
sudo grubby --info=ALL

위 설정이 grub2 에 적용되려먼 설정 파일을 새로 써야 한다:

제대로 설정이 이뤄졌다면 다음과 같이 argspanic=5 가 추가된다.

2. grub2-reboot

sudo make modules_install install		# 빌드한 커널 설치 
sudo grubby --info=ALL					# 설치된 커널의 index 확인
sudo grub2-set-default <index>			# 패닉 발생 시 되돌아갈 커널,
										# 그러니까 문제 없이 정상적으로 실행되는
                                        # 커널의 index 를 등록한다.
                                        
sudo grub2-reboot <index>				# 재부팅했을 때 실행 될 커널을 설정

 이제 재부팅 시, 새롭게 빌드한 커널로 실행되어야 하고, 만일 패닉이 발생했다면 정상적으로 동작하는 커널로 되돌아갈 것이다. 마지막으로 설정한 내용을 확인해본다:

sudo grub2-editenv list					# 그리고, 제대로 설정이 완료 되었는지 확인

 여기에서 next_entry 가 다음 재부팅 시에 실행될 커널이고 saved_entry 가 재부팅 된 커널에서 패닉이 발생 되었을 때 실행 될 커널이 된다. 만약 커널이 발생해서 두 번의 재부팅이 발생하게 된다면 next_entry 는 다시 비워지므로 grub2-reboot 으로 재설정 해줘야 한다.

출처

[사이트] http://coffeenix.net/board_view.php?cata_code=109&bd_code=1697
[사이트] https://docs.byteplus.com/en/docs/ecs/kernel-panic

profile
2000.11.30

0개의 댓글