R&D/클라우드

[how-to] Write and submit your first linux kernel patch

sunshout 2013. 2. 19. 17:52

따라 해보기

Linux Network Kernel Maintainer인 David Miller의 GIT을 적용


소스 다운로드 (git clone)

[root@tesla-xen src]#git clone  git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git master


소스코드의 maintainer 찾는 방법 (scripts/get_maintainer.pl)

 .ex) driver/net/xen-netback 의 maintainer

[root@tesla-xen linux]# ./scripts/get_maintainer.pl --file drivers/net/xen-netback/

Ian Campbell <ian.campbell@citrix.com> (supporter:XEN NETWORK BACKE...)

xen-devel@lists.xensource.com (moderated list:XEN NETWORK BACKE...)

netdev@vger.kernel.org (open list:XEN NETWORK BACKE...)

linux-kernel@vger.kernel.org (open list)


 . xen-netback의 maintainer는 Ian Campbell 임을 알 수 있다. 

 . 만약 해당 코드를 수정 했으면 maintainer와 그외 메일링 list 에게 보내면 됨


git의 branch 에 대한 이해

. git은 분산 소스 관리 체계를 가지고 있고, 기준이 되는 master와 master에 대한 branch를 만들 수 있다. git에서 checkout 명령은 svn에서의 checkout 과 다르게 branch 사이를 옮겨 다는 명령어다. 


예를 들어 local repository에 master와 test라는 두개의 branch가 존재하다면 이 branch 사이를 옮겨 다는 명령어가 checkout  이라고 보면 된다.


그럼 branch는 어떻게 만들까?


git branch 탐색

- branch 는 local repository 의 branch 만 나옴

- "-a" 옵션을 주면 remote 의 brach list 도 볼 수 있다.

- remote 의 branch 중에 하나로 checkout을 하고 싶을 때도 그냥 <branch 이름) 또는 master/<branch 이름> 으로 checkout  하면 됨


[root@tesla-xen master]# git branch

* dom0

  master

  test



 git commit 분석

git log

git log <commit string>


#example

[root@tesla-xen xen]# git log 25050f53be29518a3c9bdd0628333cd3121d2750

commit 25050f53be29518a3c9bdd0628333cd3121d2750

Author: Liu, Jinsong <jinsong.liu@intel.com>

Date:   Tue Dec 6 11:27:18 2011 +0000


    X86: expose Intel new features to pv/hvm


    Intel recently release some new features, including

    FMA/AVX2/BMI1/BMI2/LZCNT/MOVBE.

    Refer to http://software.intel.com/file/36945

    This patch expose these new features to pv and hvm.


    Signed-off-by: Liu, Jinsong <jinsong.liu@intel.com>

    Committed-by: Keir Fraser <keir@xen.org>



git log 에서 특정 단어와 관련된 log 찾기

git log --all --grep='AVX'



찾은 로그의 좀더 자세한 정보(diff)를 찾을 때 (-p -2 commit #)

git log -p -2 25050f53be29518a3c9bdd0628333cd3121d2750



원격의 git 으로 다시 일치시키는 방법

git reset --hard origin/master