기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.
NAND Flash에 MTD + YAFFS2로 시스템을 구성하였습니다.
그런데 부팅 도중 아래와 같은 Kernel panic 메시지가 출력이 되네요.
yaffs: dev is 32505859 name is "mtdblock3"
yaffs: Attempting MTD mount on 31.3, "mtdblock3"
VFS: Mounted root (yaffs2 filesystem).
Freeing init memory: 168K
Kernel panic - not syncing: No init found. Try passing init= option to kernel.
출고가 되어 정상적으로 동작을 하던 제품이 어느날 부팅을 하지 않아서 회수한 후에 부팅 로그를 한것입니다.
이런 현상이 지금까지는 없었는데 처음으로 발생을 했네요.
증상만 봤을때는 yaffs2 filesystem영역이 손상된 거 같은데 원인이 뭔지 명확하지가 않네요^^;;
의심이 가는 원인이 있으시다 거나 비슷한 경험을 해보셨다면 조언부탁드리겠습니다.
답변 감사합니다.
저도 전원이 꺼질 때를 유력한 원인으로 보고 있습니다.
그래서 나름 전원이 꺼질 때 filesystem이 손상되지 않게 하기위해서 yaffs2로 개발을 하였는데 아니었나 보네요.
이런 문제를 보완 및 해결을 하려면 어떤 filesystem 또는 솔루션을 사용하는게 좋을까요?
일단, 해당 nand를 블럭단위로 덤프 떠서 x86이나 가상머신에서 마운트 해 보시기 바랍니다.
(image를 loopback mount해서요)
--> 문제를 파악한다면 이런 방법이겠지만, yaffs2를 일일이 추적해야 하니 이도 큰 일로 보여집니다.
nand가 SLC겠죠? SLC면 그나마 ubi/ubifs 조합이 괜찮은 성능을 보여주기는 합니다만,
커널 버전등 여러가지 문제가 있을 수 있습니다.(되도록이면 나중 커널을 써야 하는.....)
1. 커널 버전이 어떻게 되나요?
2. SLC NAND겠죠?
3. 혹시 cpu는요?
그리고, NAND의 mtd map도 중요합니다. ubi가 나온 이유가 mtd의 wear leveling issue를 fix하기 위해서 나온 이유도 있기 때문입니다.
1. 커널버전은 2.6.18입니다. 칩제조사에서 초기 배포한 PSP에 있던 커널이라 버전이 낮네요.^^;; 최종으로 지원한 것은 3.3 버전까지 있기는 합니다.
2. NAND는 SLC입니다.
3. CPU는 TI에서 나온 OMAP-L137로 ARM9계열입니다.
mtd map은 다음과 같이 사용하고 있습니다.
0x00000000-0x00020000 : "params"
0x00020000-0x000c0000 : "bootloader"
0x000c0000-0x002c0000 : "kernel"
0x002c0000-0x20000000 : "filesystem"
일단 ubi/ubifs를 사용하는 방향으로 해야겠네요.
파일시스템이 망가진 증상과 유사하네요.
대부분 nand fs나 filesystem이 망가지는 경우는 write때문인 경우가 많습니다.
yaffs2의 경우는 좀 독특한 fs인데, 실제 저장장치에 write시 시간이 걸리는 경우가 있습니다.
이런 케이스에서 전원이 꺼지거나 하면 비슷한 증상이 나옵니다.
아니면 nand자체의 write횟수 제한에 의한 진행성 불량일 가능성도 있습니다.