라즈베리파이가 깨졌다. (linux 머신 없이 superblock corruption을 해결하는 법)

|

일단 현상은 다음과 같다. (정확히 저게 내꺼는 아니지만 대략 메시지는 비슷하길래 가져왔다.)


[  20.217557] Kernel panic - not syncing : VFS: Unable to mount root fs on unknown-block(179,2)

PANIC: VFS: Unable to mount root fs on unknown-block(179,2)

Entering kdb (current=0xcd828ca0, pid 1) due to Keyboard Entry
kdb> _ 


참고 사이트 : http://raspberrypi.stackexchange.com/questions/1411/wont-boot-after-removing-and-inserting-the-sd-card (요기서 가져왔다.)


그냥 깨진거다 뭐. (흥칫뿡) 근데 깨지는걸 막으려고 루트를 read-only 마운트도 했고 별 xx를 다 했는데도 이리 깨져버리니 좀 짜증이 난다.

사실 이게 별 문제는 아닌게, 리눅스 같으면 복구 콘솔로 들어가서 fsck 한번 돌려주면 끝이다. 저기서 "Entering kdb" 했으면 kdb 콘솔에서 fsck를 돌려줄 수 있으면 별 문제가 아니다.


그런데 저기서 키가 안먹히는게 문제다. (뭔가 동작을 안하는 기분이다.)


사실 쓸 수 있는 리눅스 머신이 있으면 sd 카드 마운트 해서 fsck 한번 돌려주면 클린한데, 그걸 찾을 수가 없다. 그래서 윈도에서 쓸 수 있는 fsck가 있나 봤더니,


참고 사이트 : http://superuser.com/questions/484557/fsck-from-a-windows-box (요기 있네.)


ext2fsd라는 놈이 있고, 이놈은 fsck의 wrapper라고 한다. 그래서 깔아봤더니, 안된다. 파티션 인식도 제대로 안되더군. 지금 PC가 윈도 7 64bit 라서 그런건지는 모르겠지만. (이놈 된다면 제보좀)


참고 사이트 : https://www.raspberrypi.org/forums/viewtopic.php?p=472238 (부팅이 안되요! 의 일부 답변들이다. 현상은 비슷했거든.)

참고 사이트 : http://www.recantha.co.uk/blog/?p=1208 (다른 복구 방법이나, 유사하다.)


여기서 해보라는 부트 파티션에 cmdline.txt에 single 추가하는 것, forcefsck 파일을 만드는 것, 둘다 안됐다. 그리고 그 이후에는 linux 머신에서 복구하는 절차가 있어 좌절.

그런데 갑자기, linux 머신을 찾을 이유가 없다는 사실을 깨달았다. 라즈베리파이가 있으면 되는거 아냐? 단지 SD카드가 하나 더 필요할 뿐이다.


fsck -aw /dev/mmcblk0p1 (이건 /boot 파티션을 복구하는 절차다. 깨지지 않았으면 패스)
fsck -pf /dev/mmcblk0p2 (대부분의 경우 이 옵션이다. ext4 파티션을 복구하는 절차다.)


그래서 SD 카드를 구해서, 라즈비안을 깔고, 그걸로 라즈베리파이를 부팅한 후, 라즈베리파이에 레트로파이 이미지 SD 카드를 꽂고 fsck를 돌렸다. 이상없이 잘 된다.

예제는 mmcblk0p2로 되어 있지만, 이게 SD 카드로 마운트가 된다면 sda2가 될거다.


리붓 한 후에 복구를 마무리하는 절차가 있어, 루트가 read-only라면 read-write로 마운트하게 해서 리부팅을 한번 한 후 다시 read-only로 변경하면 깨끗하게 처리된다.


근데 너무 자주 깨지는 경향이 있네. 부팅중에 깨지는건 확실해 보인다. 심지어 리부팅하면서도 깨졌으니까. SD카드 교체 말고 다른 방법이 있을까 찾아보는 중. 자동 복구에 관한 글을 어디서 본 것 같은데. (투덜투덜)


And