화요일, 6월 29, 2010

[Android] Android porting

Android porting

Source: http://www.aesop.or.kr/?document_srl=46778
---------------------------------------

계속 삼성 bsp에 의존하다가

몇년만에 직접 포팅하려고 하니.. 옛생각도 나면서..  (집나가면 개고생이라는... CF문구가 생각나네요)

주말에 Aesop에서 Android를 공개한다고 하니.. 기다려 보렵니다.

공개전에 한번 해보고 싶었는데...  인내하고 기다려야 겠네요.. ^^

작업했던 내용 간단하게 적어보겠습니다.

1. kernel
    kandroid의 소스를 다운 받았습니다.
   git clone git://www.kandroid.org/samsung-s3c6410-android.1.0

2. config 파일은  다음 파일을 기본으로 사용했습니다.
   samsung-s3c6410-android.1.0/arch/arm/configs/smdk6410mtd_android.081213
  
3. 컴파일러
   aesop에서 제공한 gcc 4.2.4 와
   삼성에서 제공한 gcc 4.2.2 아무거나 사용해도 됩니다.
   단 삼성에서 제공한 gcc 4.3.1은 link에서 error가 발생되더군요..

4. root file system
    이거 고생좀 했습니다. 어느 업체에서 얻어논 file system을 사용했다가...

    고현철님께서 알려주신곳에서 참고해서 만들었습니다.

    4.1 http://benno.id.au/blog/2007/11/14/android-busybox            android용으로 컴파일된 busybox를 다운 받습니다.
          (처음에.. pull 로 파일을 다 받아야 하나 생각했었는데... 역시 잔머리가..)

    4.2 emulator  (저는 Windows PC에서 작업했습니다.)
           working location  "android-sdk-windows-1.0_r2\tools"

          4.2.1 sd card image 생성  ( emulator의 파일 시스템이 read only가 많아서.. 이렇게 했습니다.)
                    #makesdcard 128M sd.img

          4.2.2 emulator 실행 (dos 창 1)
                   #emulator --sdcard sd.img
                   menu --> Dev Tools --> Media Scanner  ( sd.img 인식)

          4.2.3 adb  (dos 창 2)
                    #adb push busybox  /sdcard   (sd.img에 4.1에서 받은 busybox를 push)
                    #adb shell   <-- 접속)

                    #chmod  777 /sdcard/busybox
                    #/sdcard/busybox tar -cf /sdcard/system.tar /system               
                    #/sdcard/busybox tar -cf /sdcard/data.tar /data
                    #/sdcard/busybox tar -cf /sdcard/dev.tar /dev
                    # exit

     4.3 sd.img,  ramdisk.img  가져오기
              "android-sdk-windows-1.0_r2\tools\sd.img"
              "android-sdk-windows-1.0_r2\tools\lib\ramdisk.img"

      4.4 ramdisk 통합하기
             위에서 생성된 모든 파일을 linux PC에서 작업
             ramdisk.img ,  sd.img

            #mkdir sd
            #mount -o loop sd.img sd

            #mkdir root_disk
            # gzip -cd ramdisk.img > ramdisk
            # cp ramdisk root_disk
            # cpio -iv -F ramdksk
            # rm ramdisk
            # cd ..

            # tar xvf sd\system.tar -C root_disk
            # tar xvf sd\data.tar  -C root_disk
            # tar xvf sd\dev.tar  -C root_disk

      4.5 init.rc 수정 (최종환님께서 얄려주셨습니다.)
            loglevel 3  -->   loglevel 6

            아래사항 주석처리
            #mount yaffs2 mtd@system /system
            #mount yaffs2 mtd@system /system ro remount
            #mount yaffs2 mtd@userdata /data nosuid nodev

            #mount yaffs2 mtd@cache /cache nosuid nodev
          
여기 까지...
혹시 빠진 부분이 있으면 지적해 주세요.. 

---------------------------------------


-----
Cheers,
June

댓글 없음:

댓글 쓰기