리눅스서버

[문제해결 일지] kernel panic not syncing vfs unable to mount root fs on unknown block 0 0


1. 발생

CentOS 6에서 CentOS 7로 업그레이드후 재부팅하니까 커널패닉이 발생했다. 


1.jpg


kernel panic not syncing vfs unable to mount root fs on unknown block 0 0


커널패닉은 보통 리눅스 커널을 업그레이드를 하면 발생할 수 있는 데.. CentOS 7로 업그레이드하는 과정에서 커널도 같이 업그레이드된 것이다. 참고로 CentOS 7에서는 커널 3.10버전대를 사용한다.


보통 커널패닉이 발생하면 커널 이전버전으로 부팅하면 되는 데.. 내 경우는 CentOS 7로 업그레이드한 경우라서 부팅을 시도할 다른 커널버전이 없었다. 그래서 할 수 없이 리눅스 CD의 복구모드(Rescue mode)로 접속해서 복구를 시도했다.



2. 원인

커널패닉은 그 원인과 해결방법이 다양했다. 그래서인지 나는 구글링을 몇번이나 했으나, 나 같은 경우를 결국 찾지못했다. 일단, 나는 아래와 같이 yum 업데이트로 새로운 커널을 받았다.


yum update kernel


1.png


내 경우 기존 커널이 kernel-3.10.0-229.el7 이였는 데.. kernel-3.10.0-229.1.2.el7 새로운 커널이 설치되었다. 하지만 그럼에도 불구하고, 여전히 커널패닉(kernel panic)은 발생했고, 날 진짜 패닉상태로 만들었다.


설치된 커널이 잘못된 것은 아닌지 커널을 삭제하고(yum remove kernel-3.10.0-229.1.2.el7.x86_64) 또 다시 설치(yum update kernel)하기를 반복했지만, 결과는 변함이 없었다. ㅠ 커널패닉ㅠ


vi /etc/grub.conf


2.png


GRUB설정(/etc/grub.conf)을 열어보았다. GRUB는 부트로더이다. 즉, 운영체제의 부팅을 맡고 있는 시스템이다. 그래서 부팅이 안될 경우 GRUB설정을 살펴 보곤한다. 하지만 별 문제가 없어보였다. 그게아니라 얼핏보기에는 그렇게 보인 것이다.


내가 설정을 세번씩이나 열어보았을때, 문제는 그제서야 눈에 들어왔다. 바로 부팅 항목에 initrd 설정이 빠져있는 것이였다. initrd 는 부팅초기에 마운트되는 initrd 이미지를 지정하는 설정이다.



2. 해결

GRUB설정(/etc/grub.conf)에 initrd 이미지가 빠졌다는 것을 알았으니, 이제 initrd 설정을 넣어주기만 하면 된다. 그런데 initrd 설정이 왜 빠졌는 지는 모르겠다. 업그레이드에 오류일까?


아무튼 빠진 initrd 이미지를 넣어준다. 참고로 initrd 이미지는 /boot 위치에 initramfs-커널버전.img 형태로 있다. 해당 커널버전에 맞는 initrd 이미지를 넣어주자.


3.png


이제 재부팅시켜주면 커널패닉없이 정상적으로 부팅된다.
Atachment
첨부 4
?

서버에 요청 중입니다. 잠시만 기다려 주십시오...