ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 안드로이드 4.0, 기본 커널과 삼성 커널 코드 비교
    2011. 12. 28. comments
    반응형



    안드로이드 커널 소스코드를 받는 과정에서, 하나가 아닌 여러개로 관리되는데 그중 삼성버전이 있었다.
    삼성에서 관리하는 거의 초기모델에 가까운  안드로이드 모바일 갤럭시S가 처음 나왔을 때 엄청나게 느린 현상을 보여줌을 경험상으로 알고 있기 때문에(물론 지금은 엄청 빨라졌음) 출시된지 얼마 안된 안드로이드 4.0 플랫폼에서 사용되는 커널은 어떤 차이점이 있을까 궁금증으로 소스코드 diff를 좀 해보았다.


    안드로이드 커널 소스코드 다운로드 방법은 이전에 포스팅 했었다.

    2011/12/26 - [리눅스(Linux)/커널(Kernel)] - 안드로이드 커널 소스코드

    그 과정에서 레파지토리 정보를 복사할 때, 삼성 커널로 복사해오면 된다.

    git clone https://android.googlesource.com/kernel/samsung.git samsung_kernel

    cd samsung_kernel
    git branch -r 
         origin/HEAD -> origin/master
         origin/android-samsung-2.6.35-gingerbread
         origin/android-samsung-3.0-ics-mr1
         origin/master
     git checkout origin/android-samsung-3.0-ics-mr1 



    자 첫번째로 디렉토리를 통째로 한번 diff 해보았다. kernel 디렉토리는 default 안드로이드 커널 코드이고 kernel_samsung은 삼성 안드로이드 커널 코드이다.


    morenice@morenice-H55M-S2V:~/android$ diff kernel kernel_samsung/



    Common subdirectories: kernel/Documentation and kernel_samsung//Documentation
    Common subdirectories: kernel/arch and kernel_samsung//arch
    Common subdirectories: kernel/block and kernel_samsung//block
    Common subdirectories: kernel/crypto and kernel_samsung//crypto
    Common subdirectories: kernel/drivers and kernel_samsung//drivers
    Common subdirectories: kernel/firmware and kernel_samsung//firmware
    Common subdirectories: kernel/fs and kernel_samsung//fs
    Common subdirectories: kernel/include and kernel_samsung//include
    Common subdirectories: kernel/init and kernel_samsung//init
    Common subdirectories: kernel/ipc and kernel_samsung//ipc
    Common subdirectories: kernel/kernel and kernel_samsung//kernel
    Common subdirectories: kernel/lib and kernel_samsung//lib
    Common subdirectories: kernel/mm and kernel_samsung//mm
    Common subdirectories: kernel/net and kernel_samsung//net
    Common subdirectories: kernel/samples and kernel_samsung//samples
    Common subdirectories: kernel/scripts and kernel_samsung//scripts
    Common subdirectories: kernel/security and kernel_samsung//security
    Common subdirectories: kernel/sound and kernel_samsung//sound
    Common subdirectories: kernel/tools and kernel_samsung//tools
    Common subdirectories: kernel/usr and kernel_samsung//usr
    Common subdirectories: kernel/virt and kernel_samsung//virt
    


    자~ 서브 디렉토리에서 무언가 바뀌었다고 하는데, 내용을 알수가 없어 세부 디렉토리별 diff를 해보기로 했는데, 일일이 하기에는 귀차니즘으로 스크립트 하나 작성했다.
     


    #!/bin/bash
    
    SUB_DIRECTORY_LIST='arch block crypto drivers firmware fs include init ipc kernel lib mm net scripts sound tools usr virt'
    
    for DIR in $SUB_DIRECTORY_LIST 
    do
     echo -n 'process diff '$DIR' ...'
     diff -urN kernel/$DIR/ kernel_samsung/$DIR/  > kernel_diff/$DIR.diff
     echo 'done'
    done
    


    서브디렉토리 각각에 대해서  diff의 결과를 파일로 만드는 스크립트인데, 각 파일 사이즈 혹은 파일의 내용을 통해서 쉽게 소스코드의 차이점을 확인할 수 있다.
    스크립트를 돌린 결과를 보도록 하자.


    -rw-rw-r--  1 morenice morenice       0 2011-12-20 14:53 Documentation.diff
    -rw-rw-r--  1 morenice morenice  606927 2011-12-20 14:53 arch.diff
    -rw-rw-r--  1 morenice morenice       0 2011-12-20 14:53 block.diff
    -rw-rw-r--  1 morenice morenice       0 2011-12-20 14:53 crypto.diff
    -rw-rw-r--  1 morenice morenice 3854513 2011-12-20 14:53 drivers.diff
    -rw-rw-r--  1 morenice morenice  864392 2011-12-20 14:53 firmware.diff
    -rw-rw-r--  1 morenice morenice    2759 2011-12-20 14:53 fs.diff
    -rw-rw-r--  1 morenice morenice   54553 2011-12-20 14:53 include.diff
    -rw-rw-r--  1 morenice morenice       0 2011-12-20 14:54 init.diff
    -rw-rw-r--  1 morenice morenice       0 2011-12-20 14:54 ipc.diff
    -rw-rw-r--  1 morenice morenice       0 2011-12-20 14:54 kernel.diff
    -rw-rw-r--  1 morenice morenice       0 2011-12-20 14:54 lib.diff
    -rw-rw-r--  1 morenice morenice     974 2011-12-20 14:54 mm.diff
    -rw-rw-r--  1 morenice morenice    2762 2011-12-20 14:54 net.diff
    -rw-rw-r--  1 morenice morenice       0 2011-12-20 14:54 samples.diff
    -rw-rw-r--  1 morenice morenice       0 2011-12-20 14:54 scripts.diff
    -rw-rw-r--  1 morenice morenice  877074 2011-12-20 14:54 sound.diff
    -rw-rw-r--  1 morenice morenice       0 2011-12-20 14:54 tools.diff
    -rw-rw-r--  1 morenice morenice       0 2011-12-20 14:54 usr.diff
    -rw-rw-r--  1 morenice morenice       0 2011-12-20 14:54 virt.diff
    
    

    실제로 변경된 부분이 많지 않았다. 확인작업을 하면서도 파일 시스템쪽의 많은 변경을 하지 않았을까라는 예상을 했지만, 실제로 하드웨어 의존성있는 코드들만 변경이 이루어졌다고 볼 수 있다.
    제목은 거창하게 모든 비교를 보여줄꺼 같지만, 실제 커널 세부 내역을 확인하기엔 시간과 비용이 많이 들기에 그 부분은 뒤로 미루기로 한다.


    반응형

    댓글

Designed by Tistory.