Linux 부팅시 init 쉘 스크립트 멈추는 문제 입니다.
안녕하세요?
오랜만에 Linux Kernel 작업 하다 문제가 있어서 여기에 문의 합니다.
CPU : A20(allwinner, 중국 업체 기술지원 받기 힘듬.)
DDR3: 하이닉스 256MB * 4
NAND: X
SDMMC: SDHC, 부팅 디스크로 사용
이런 보드이며, 레퍼런스 보드는 PCduino 3 를 가지고 있습니다.
문제는 Kernel 부팅시 ramdisk에서 /init 쉘스크립트에서
...
/bin/busybox --install -s
mdev -s
/bin/setwindow 90 1 0 0
...
이 부분중 mdev -s를 실행중 멈추는 현상이 나타납니다. (do_execve_common 함수에서 msg를 찍으면, mdev 는 호출 되고,
setwindow 는 호출 되지 않습니다.)
이런 커널을 레퍼런스 보드에서 실행하면, 문제가 발생 되지 않고 정상 부팅 합니다. ㅠ.ㅠ;;
rootfs 의 /dev 폴더에는 console, tty, tty1, ttyS0 파일이 있고,
rootfs의 busybox 가 어떻게 빌드 되었는지 확인 할 수 없는 상태 입니다.(CPU 업체가 기술 지원을 안해 줍니다.ㅠㅠ)
혹시 이런 문제를 해결 하셨거나, AllWinner(중국 CPU 업체) 기술지원 방법등을 알고 계신 천사같이 착한
개발자분들 댓글 부탁 드립니다.
참고로 LCD 는 사용 하지 않습니다. 즉, 기본 쉘만 실행되고, Linux 어플만 동작 하면 됩니다.
감사합니다.
이쯤 되겠네요.1) mdev와 연결된
이쯤 되겠네요.
1) mdev와 연결된 공유라이브러리 확인
2) CPU 호환여부 확인(mdev 내에 해당 CPU에 지원되지 않는 명령어를 사용한 부분이 있어서 문제를 일으킨경우)
ramdisk 쓰지 않는 부팅환경을 만들어서 해보는게 확실한데, ramdisk 안쓴 환경에서 mdev가 다운 안된다면 100% 공유라이브러리 문제입니다.
참고로 ramdisk 안쓸려면 루트 디바이스 마운트에 필요한 디스크 컨트롤러 드라이버를 모듈로 하지 말로 커널에 다 집어넣고 커널파라미터에 루트디바이스 지정해주면 됩니다.
Written By the Black Knight of Destruction
답변 주셔서 감사드립니다.
알려 주신대로 ramdisk 를 변경하여 TEST 했을 경우 동작은 잘 되었습니다.
혹시나 하여 DDR3 셋팅중 Clock 을 낮추었더니, mdev 동작이 잘되는 것이 확인 했습니다.
괜한것으로 삽질한것 같아 허무하네요 ㅠㅠ 어찌되었든 답변 주셔서 감사합니다.
댓글 달기