Search Results for 'xhyper270tku'


1 POSTS

  1. 2008/04/07 pxa270tku ramdisk booting by ekARma (5)

pxa270tku ramdisk booting

hibus 사의 xhyper270tku를 ramdisk로 부팅하는 방법을 알아보자


우선 bootp와 tftp 기본 설정이 되어 있다는 가정 하에서 rootfs를 이용한 파일시스템이 아닌
ramdisk 를 이용한 파일시스템을 사용하기 위해서는 커널 컴파일을 다시 해야 한다. ~_~;;
뭐 이미 ramdisk 관련 옵션을 활성화 시켰다면 문제는 쉬워질 수 있다. 그렇다 쉬워질 수도 있다.
자 그럼 세세한 부분으로 진행하기에 앞서 기본 베이스에 대해 간략한 복습을 선행해 보자.
일단 pxa270tku 의 경우 SDRAM 128M, flashROM 32M 의 기본 리소스를 가지고 있다. 부팅 시
이 flashROM에 write 해 놨던 걸 boot loader가 주어진 메모리 멥 구성에 알맞게 SDRAM 으로
kernel이나, rootfs, ramdisk 등등을 다운로드하는 하는 것이다. 여기서 체크!
오늘 우리가 뽀개려고 하는 ramdisk.
ramdisk는 말 그대로 ram을 disk처럼 쓰겠다는 것이다. 원래 주메모리인 SDRAM은 우리가 일반 디스크
를 사용하는 방법과는 약간 다른 명령어를 써서 접근해야 하는데 이 SDRAM의 일정 부분을 mount 해서
일반디스크와 같이 사용하겠다는 것이다. 당연히 disk 보다 SDRAM에 대한 접근과 처리가 빠르므로 우리가
의도한 작업들을 보다 빨리 처리할 수 있게 된다는 이야기다. 자 잡설은 여기까지

커널컴파일 시

'make xhyper270tku_defconfig' 를 통해 우리가 타켓으로 하는 270tku 보드에 기본적으로 필요한
옵션들을 쉽게 설정할 수 있다. 이렇게 베이스를 깔아 놓고

'make menuconfig'
로 들어가서 우선 'block device' . 여기서 아래 그림과 같이 옵션을 활성화 시켜 준다. ramdisk 용량은
물론 만들고자 하는 ramdisk 이미지를 고려해야 한다.

사용자 삽입 이미지


주의!!! 하지만, 한가지 주의해야 하는데 SDRAM 이 아닌 flashROM의 경우 ramdisk 영역으로 할당된 부분이
3M인 거 같다. 이거 자세한 건 메뉴얼을 좀 봐야 하겠지만, 나의 경우는 그러했다. 그래서 나중에
ramdisk 를 만들고 gzip 으로 압축할 때 이 크기를 고려해야 한다. 뭐 flashROM에 안쓰고 SDRAM
에서만 일회용으로 돌릴거라면 크게 문제는 없다. 만약 이렇게 돌리고 싶다면 boot loader에서 ramdisk
를 'tftp ramdisk_img ramdisk'로 SDRAM에 올리고 'load kernel'을 해서 flashROM의 kernel
이미지를 다운로드하고 boot 명령을 입력해 주면 재부팅없이 부팅이 진행된다.

이렇게 옵션을 활성화했으면 (모듈이 아니라 포함시켜야 한다. 그래야 initrd 옵션이 나온다.)
이젠 kernel command 를 수정해야 한다. 메인메뉴의 두 번째

'General Setup'


사용자 삽입 이미지

맨 끝에 내려가면 설정을 바꿀 수 있는데 기본 값은

'console=ttyS0,115000 console=tty0 mem=128M root=1F02 rw'

뭐 이런 식이다. 여기서 신경써야 할 부분은 root 부분인데 root filesystem이 있는 장소를 가르키도록 설정해야 한다. 1F02이란 값은 MTD에 의해서 (여기에 관해서는 주제가 다르므로 따로 언급하지 않겠다. ) 나뉘어진 SDRAM 영역들 중 3 번째 시작주소를 지시하는 거 같다.(00,01,02) 램디스크 ( 더 자세히는 initrd 옵션) 옵션 설정없이 기본 설정으로 커널컴파일하면 SDRAM의 구조가 bootloader , kernel, rootfs 이런 식으로 구성되어 진다. 따라서 일반적인 경우 1F02이란 rootfs 의 시작주소를 가르키므로 정상적인 설정이라 할 수 있다. 하지만 우리는 ramdisk를 사용하기 위해 옵션 설정을 했기 때문에 (더 자세히는 initrd) 다시 컴파일하면 SDRAM 구조가 bootloader, kernel, initrd, user 이런 식으로 바뀌게 된다. ( initrd = initial ram disk. 참고로 initrd 옵션이 켜지면 rootfs 대신 initrd, user 영역이 생긴다.  ) - 그렇다면 당연히 'root=1F02' 값을 수정해 주어야 하는 것이다. 만약 이 값을 수정해 주지 않으면 부팅 과정 중 기껏 ram disk를 마운트 했으면서 다시 rootfs주소에 접근해 또 파일시스템을 마운트하려고 한다. 이 경우 파일시스템 마운트 에러가 발생한다. 자세한 에러 메시지는 미처 캡처하지 못했다. -
( 이 부분에서 삽질을 좀 한 사람이라면 모순을 발견할 수 있을 것이다. ~_~;; initrd 를 포함시켰을 때 SDRAM의 구조가 bootloader, kernel, initrd, user 라면 root=1F02 그냥 써도 initrd를 읽어야 하지 않느냐라고 생각할 수 있는데... 그러게나; 미처 이것저것 테스트해 볼 시간이 없어서 확실하게 답을 해주지 못하겠다. 이런 무책임한 ㅜ. 이 문단은 수정해야 한다.  )


아무튼 이 'root= ' 값을 ramdisk에 맡게 수정해 주어야 하는데 간단하게

root=/dev/ram0

라고 수정해 주면 된다. 뒤애 숫자 제로다. ( 말이 쉽지 이거 몰라 몇시간을 삽질 했는지 )
좋다. 수정했다고 하자. 만약 여기까지 하고 컴파일 후 부팅을 하다면


Warning: unable to open an initial console.
Kernel panic - not syncing: No init found. Try passing init= option to kernel.


이와 같은 에러메시지를 볼 수 있다. 참. 먹고 살긴 힘들다. -_-
대충 때려 맞춰보면 init 명령을 찾을 수 없다는 말인데 일반 데탑의 경우는 init=/sbin/init 이런 식으로
해결 가능하다고 한다. ( 리눅스에서 init는 pid 1번으로 모든 프로세스의 부모가 된다. )
하지만 나의 경우 이렇게는 안됐었고, "root=/dev/ram0"만으로는 뭔가 부족하다는 생각에 약간 추론과 검색을
통해 부가옵션을 알아냈다.
원래 데스크탑 리눅스 부트로더 LILO의 경우 램디스크로 부팅시 initrd=ramdisk_img 이런 식으로
램디스크 이미지를 지정해 주는데 지금과 같은 경우 SDRAM에 올라가 있는 상태이므로 주소와 offset을 지정해 주어야 한다.


사용자 삽입 이미지


나의 경우는 bootloader에서 ramdisk를 SDRAM에 fusing할 때 ( ' tftp ramdisk_img ramdisk ')
 그 쓰기 시작하는 주소가 0xa1000000 이었다. 그리고 쓰는 용량은 3017611 byte. 그래서
initrd=0xa1000000,3017511 과 같이 입력해 주었다. 자 그럼 최종적인 kernel command 를 살펴보자


" console=ttyS0,115000 console=tty0 mem=128M root=/dev/ram0 rw initrd=0xa1000000,3017511 keepinitrd "

사용자 삽입 이미지

keepinitrd 는 나도 잘 모르겠고, 시간 관계상 이걸 빼놓고 테스트 해보지 못했다. 그리고 kernel command를 적을 때 쉼표로 연결되는 부분에는 공백이 포함되서는 안된다. 쉼표 다음이나 이전에 공백이 포함되면 에러가 발생한다고 한다.

대충 이렇다. 그렇다 여기까지가 키트에 동봉된 메뉴얼에서 빠져있는 내용이다. 자 그럼 행운을 빈다.



제가 이 테스트에 사용한 램디스크이미지는
hybus.co.kr -> 자료실 -> BULVERDE -> Xhyper270A ramdisk
에 올라와 있는 10M 짜리입니다. 참고하세요~




Posted by ekARma

2008/04/07 01:36 2008/04/07 01:36
, ,
Response
0 Trackbacks , 5 Comments
RSS :
http://kuls.net/~naltle/tc/rss/response/38


블로그 이미지

- ekARma

Notices

Archives

Authors

  1. ekARma

Calendar

«   2012/05   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Site Stats

Total hits:
16559
Today:
9
Yesterday:
38