임베디드 보드에 사용할 램디스크 제작에 관한 질문입니다!!
글쓴이: dnjswhdfo / 작성시간: 월, 2009/04/13 - 7:00오후
램디스크를 제작해서 복사를 하면 항상 커널 패닉이 뜨면서 안되더라고요..
처음에는 try passing init option to kernel 이라는 커널 패닉이 뜨고요...
그래서 이래저래 삽질해보다가 sbin 폴더안에 있는 init파일을 etc 폴더에 옮겼더니..
Kernel panic - not syncing: Attempted to kill init!
/etc/init: error while loading shared libraries: libgcc_s.so.1: cannot open shared object file: Permission denied
이렇게 뜨거든요...
찾아보니깐 lib폴더안에 저 파일은 있거든요.. 그래서 파일 권한도 바꿔보고 했는데 안되네요..
이걸로 일주일 이상 삽질중입니다..ㅠ
답변좀 부탁드려요..ㅠ
Forums:
init 은 원래 자리로
init 은 원래 자리로 되돌리시고.
initrd 를 사용하기 위해선 부트로더와 커널의 쿵짝이 맞아야 합니다.
ramdisk 용의 이미지가 flash 등에 기록되어 있다면 flash 상의 위치와 크기를 부트로더가 알고 있어야 합니다.
대부분 하드코딩되어 있습니다.
또한 부팅 때 메모리의 어디로 복사할 것인지도 부트로더가 알고 있어야 합니다.
이것도 대부분 하드코딩 되어 있습니다.
부트로더가 ramdisk 이미지를 메모리에 복사한 다음엔,
커널 부팅 커맨드로 "initrd=위치,크기" 등의 형식으로 파라미터를 넘겨줄 수도 있고,
ATAG 형태등의 정보로 넘겨줄 수도 있고,
커널이 자체 하드코딩된 값을 사용할 수도 있습니다.
커널에 하드코딩된 값이라 함은 CONFIG_CMDLINE 으로 정의된 문자열을 뜻합니다.
(플랫폼마다 약간씩 틀립니다. 여기 적은 것은 arm linux 의 경우입니다)
메모리에 있는 ramdisk 용의 이미지가 커널의 initrd 로 사용되기 위해서는
커널에 설정된 ramdisk 용량과 맞아떨어지면 됩니다.
CONFIG_BLK_DEV_RAM_SIZE 에 설정된 값이 커널에서 사용하는 ramdisk 의 용량입니다.
initrd 크기는 이것과 비교해서 같거나 작아야죠.
압축하기 전의 파일 크기말입니다.
여기 적은 내용들은 검색 조금만 해보면 더 친절하게 더 자세하게 설명되어 있는 문서들을 수도없이 찾으실 수 있는 것들입니다.
OTL
댓글 달기