[Linux Kernel] 부팅 중 Kernel Panic 해결하기
Kernel/Information

[Linux Kernel] 부팅 중 Kernel Panic 해결하기

반응형

커널 만지다가 책 따라서 실습을 하고 있었지만 똑같이 하니 역시 옛날 환경이라 예상치 못한 일들이 일어난다. 그중 하나가 바로 부팅 시 커널 패닉이 일어나는 상황이다. 이번에 내가 마주한 상황은 VFS 싱크로 관련 에러였다.

출처: https://conory.com/blog/43204

그때 당시의 스크린샷을 찍지는 못했지만 위에서 나타난 에러 구문과 똑같았다.

Cause & Solution

https://unix.stackexchange.com/questions/414655/not-syncing-vfs-unable-to-mount-root-fs-on-unknown-block0-0

 

not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

I had Windows 10 and Manjaro on my laptop and everything was OK. Last day, I've installed Kali Linux in another partition. It has installed correctly and it works fine. But the problem is when I wa...

unix.stackexchange.com

구글링을 했을 때 다음과 같은 두 원인과 각 해결책을 말해준 사람이 있었다.
1. 특정 디바이스에서 사용하는 파일 시스템이 커널에서 지원하지 않을 때 발생한다. 네가 만약 너만의 커널을 컴파일했을 때, 모듈로 컴파일을 하려 할 때가 보통 원인이다. root 옵션에 외래(exotic) 포맷을 부트로더에 명시하면 해결하는 방법 중 하나다.
2. 커널에 알려주는 root device의 이름이 잘못되었을 때 발생한다.

그리고 그 답변에 질문자가 initrd.img를 넣어주니 해결됐다고 했다. 그래서 좀 더 찾아보니 다른 사람도 그렇게 해결했었다.

https://conory.com/blog/43204

 

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

1. 발생 CentOS 6에서 CentOS 7로 업그레이드후 재부팅하니까 커널패닉이 발생했다. kernel panic not syncing vfs unable to mount root fs on unknown block 0 0 커널패닉은 보통 리눅스 커널을 업그레이드를 하면 발생

conory.com

 

Fix it

옛 커널 버전에서는 부트로더가 램 디스크를 이용해서 모듈을 올리는 데에 필요한 정보를 마운트 시키기 위한 파일 시스템이 필요했다. "mkinitrd" 명령어를 통해 커스텀 커널을 위한 램 디스크를 생성한 뒤 /boot/grub/menu.lst에서 "initrd [생성한 램 디스크]" 줄을 추가해준다.

title   Linux 2.6.14.6
root    (hd0,0)
kernel    /boot/vmlinuz-2.6.14 root=/dev/hda1 ro
initrd	  /boot/initrd.img-2.6.14
savedefault
boot

다시 리부팅해서 grub 창이 뜨고 커널 패닉이 떴던 커널을 선택하면 정상적으로 실행되는 것을 확인할 수 있다.

최근에는 부트로더에서 "initrd"를 쓰지 않고 대신 "initramfs"를 쓰는데 부트로더에 상관없이 이런 램 디스크를 쓰지 않는 커널 버전도 있어 정확히 어떻게 작동하는지는 잘 모르겠다. 나중에 알게 되면 최신화해야겠다.

반응형