-
반응형
안드로이드 커널 소스코드를 받는 과정에서, 하나가 아닌 여러개로 관리되는데 그중 삼성버전이 있었다.
삼성에서 관리하는 거의 초기모델에 가까운 안드로이드 모바일 갤럭시S가 처음 나왔을 때 엄청나게 느린 현상을 보여줌을 경험상으로 알고 있기 때문에(물론 지금은 엄청 빨라졌음) 출시된지 얼마 안된 안드로이드 4.0 플랫폼에서 사용되는 커널은 어떤 차이점이 있을까 궁금증으로 소스코드 diff를 좀 해보았다.
안드로이드 커널 소스코드 다운로드 방법은 이전에 포스팅 했었다.
2011/12/26 - [리눅스(Linux)/커널(Kernel)] - 안드로이드 커널 소스코드
그 과정에서 레파지토리 정보를 복사할 때, 삼성 커널로 복사해오면 된다.
git clone https://android.googlesource.com/kernel/samsung.git samsung_kernel
cd samsung_kernelgit branch -rorigin/HEAD -> origin/masterorigin/android-samsung-2.6.35-gingerbreadorigin/android-samsung-3.0-ics-mr1origin/mastergit 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
실제로 변경된 부분이 많지 않았다. 확인작업을 하면서도 파일 시스템쪽의 많은 변경을 하지 않았을까라는 예상을 했지만, 실제로 하드웨어 의존성있는 코드들만 변경이 이루어졌다고 볼 수 있다.
제목은 거창하게 모든 비교를 보여줄꺼 같지만, 실제 커널 세부 내역을 확인하기엔 시간과 비용이 많이 들기에 그 부분은 뒤로 미루기로 한다.반응형