[질문] kernel panic - kernel panic vfs unable to mount root fs
글쓴이: s97083 / 작성시간: 수, 2012/04/25 - 3:59오후
안녕하세요
현재 kernel 파일크기가 5,121kb 정도 됩니다. 5메가 조금 넘는데
defconfig에서 새로운 kernel config 를 추가로 6개 정도 y로 넣으면
kernel panic vfs unable to mount root fs 이 나오고 있습니다.
어떤 분이 사운드 드라이버 헤더파일에 static array를 큰거 하나 잡고 부터 그렇다고 하는데
혹시 kernel 사이즈에 제한이 있거나 드라이버에 static array를 크게 잡으면 안된다거나
하는 이유가 있나요.
도움 부탁드려요.
Forums:
제한된 시스템 환경에서의 커널 컴파일인가요...?
임베디드 시스템에서 커널 이미지는 플래시 롬에 담겨져 있다가, 부트로더를 통해 구동할 때 SDRAM으로 적재하여 동작합니다. 어떤 시스템을 사용하시는지 모르겠지만, 커널 이미지의 크기가 커져서 동작에 문제가 생겼다면, 루트로 할당한 메모리 영역과 커널 이미지 영역이 충돌하여서 마운트 하지 못하는 문제일지도 모르겠습니다. 정확한 시스템 정보가 없으면 알기 어려울 것 같습니다.
임베디드 입니다.
정보 감사드립니다. 메모리 나누시는 분한테 물어보면 커널 영역이 10메가가 잡혀있어서 용량 문제는 아닐거라고 하는데
panic 메시지가 fs root 에 mount 못한다는 내용이다 보니까. size 문제인가 싶은데, 왠지 이상하게 kernel config 추가하는
것만 영향을 받고 있는것 같습니다. 어떻게 디버깅 해야될지 모르다 보니 정말 풀기 어렵습니다.
함수 내부에서 local 배열을 크게 잡지만 않으면
함수 내부에서 local 배열을 크게 잡지만 않으면 딱히 배열 크기가 문제되진 않습니다.
보조기억장치 상의 영역 할당과 주기억장치 상의 영역 할당이 적당한지,
그 '메모리 나누시는 분'에게 다시 확인해 달라고 하세요.
본인의 config 는 물론이고 커널 등을 어떻게 업데이트했는지 빠짐없이 알려주면 10분 안에 그 분이 답변 주실겁니다.
kernel driver에서 static을 크게 잡으면 버추얼어드레스가 아니라 피지컬을 잡는다고 합니다.
안녕하세요
인터넷을 좀 써치해 보니까 어떤 답변 단 사람이 kernel driver에서 static array를 잡으면
가상메모리가 아니라 실제 메모리를 다 잡아 먹어서 128kb이상 쓰는건 좋지 않다고 하네요
혹시 여기에 대해 아시는분 없을까요.
virtual 과 physical 은 address
virtual 과 physical 은 address 에 대해 구분하는 것이지 memory 자체가 virtual 이지는 않습니다.
함수 내에 local 로 잡으면 stack이 위험해지기 때문에 피하는 것일 뿐 입니다.
.data 에 있건 .bss 에 있건, stack 에 있건 heap 에 있건, 모두 physical memory 가 필요하긴 마찬가지입니다.
(그 글이 설마 const array, XIP 기준으로 설명한 글은 아니겠죠 ?)
정말로 헤더 파일에 static array를
정말로 헤더 파일에 static array를 선언했다면, 그리고 그 헤더 파일이 여러 군데에서 include된다면 용량 문제일 수도 있을 것 같은데요.
댓글 달기