Linux Kernel(4.19) Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

230224
1178
109352


리눅스 커널 기여(Contribution) 및 참여하기 - 1.설정 Linux Kernel Contribution



Overview

리눅스 커널을 익히기 위한 방법은 여러 가지가 있습니다. 예를 들면 다음과 같습니다.

   리눅스 커널 스터디 모임에 참석한다.
   리눅스 커널을 디버깅해본다.
   리눅스 커널 소스를 직접 분석해본다.
   
이렇게 다양한 방식으로 리눅스 커널을 접할 수 있습니다. 그런데 리눅스 커널을 익히고 접하는 좋은 방법은...

   리눅스 커널 오픈 소스 프로젝트에 직접 참여하는 것입니다.

리눅스 커널은 가장 유명한 오픈 소스 프로젝트로 어느 누구나 리눅스 커널 프로젝트에 참여할 수 있습니다.
우리가 작성한 커널 코드가 전 세계 리눅스 시스템에 적용이 될 수 있는 것입니다.

   "여러분이 작성한 리눅스 커널 소스를 전 세계 리눅스 개발자들이 쓴다."  
   
참 뿌듯하고 가슴 떨리는 일이 아닐 수 없습니다.   

이번 시간에는 리눅스 커널 코드를 수정한 후 리눅스 커널 패치를 '리눅스 커널' 프로젝트에 반영하는 방법을 소개합니다. 

준비 사항

제가 사용한 리눅스 배포판은 ubuntu로 16.04 버전을 쓰고 있습니다.
austindh.kim~/src$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.1 LTS
Release:        16.04
Codename:       xenial

mutt와 git 설치해보기

먼저 리눅스 컴퓨터에는 mutt와 git 프로그램이 설치돼 있어야 합니다.
apt-get install mutt git

위 명령어를 입력하면 mutt와 git 프로그램을 설치할 수 있습니다.
이 프로그램이 제대로 설치됐는지 확인해볼까요? 이를 위해 다음 명령어를 입력합시다.
austindh.kim~/src$ which mutt
/usr/bin/mutt
austindh.kim~/src$ which git
/usr/local/bin/git

'cd ~' 명령어를 입력해 계정 홈 디렉토리로 이동합니다.
austindh.kim~$ cd ~

다음 .muttrc 파일을 생성하고 .muttrc 파일에 읽기+쓰기 권한을 부여합니다. 
austindh.kim~$ touch .muttrc
austindh.kim~$ chmod 777 .muttrc

이번에는 .muttrc 파일을 vi 에디터로 열고 다음 정보를 입력합니다.
austindh.kim~$ vi .muttrc
set realname = "Austin Kim"
set from = "austindh.kim@gmail.com"
set use_from = yes
set envelope_from = yes

set smtp_url = "smtps://austindh.kim@gmail.com@smtp.gmail.com:465/"
set smtp_pass = "enter_your_passwd"
set imap_user = "austindh.kim@gmail.com"
set imap_pass = "enter_your_passwd"
set folder = "imaps://imap.gmail.com:993"
set spoolfile = "+INBOX"
set ssl_starttls=yes
set ssl_force_tls = yes

# G to get mail
bind index G imap-fetch-mail
set editor = "vim"
set charset = "utf-8"
set record = ''

이제 mutt 설정이 끝났습니다.

리눅스 커널 소스 코드 내려받기

리눅스 커널 소스 코드를 수정하려면 최신 리눅스 커널 소스를 내려받아야 합니다. 
이를 위해 다음 명령어를 입력할 필요가 있습니다.
git clone https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next

아래는 리눅스 터미널에서 리눅스 커널 소스 코드를 내려받기 위해 사용한 명령어입니다.
austindh.kim~/src$ mkdir linux_kernel_source
austindh.kim~/src$ cd linux_kernel_source/
austindh.kim~/src/linux_kernel_source$ git clone https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next
Cloning into 'linux-next'...
remote: Sending approximately 1.32 GiB ...
remote: Counting objects: 13164, done
remote: Finding sources: 100% (7076597/7076597)
remote: Total 7076597 (delta 5964592), reused 7076255 (delta 5964592)
Receiving objects: 100% (7076597/7076597), 1.31 GiB | 10.35 MiB/s, done.
Resolving deltas: 100% (5964592/5964592), done.
Checking connectivity... done.
Checking out files: 100% (65459/65459), done.

linux_kernel_source 디렉토리를 생성한 후 해당 디렉토리에 이동해 소스를 내려 받았습니다.

소스를 다 내려 받고 나면 linux-next 폴더가 생성됐음을 확인할 수 있습니다. 
austindh.kim~/src/linux_kernel_source$ ls
linux-next

이어서 linux-next 디렉토리에 이동해 커밋을 확인해볼까요?
austindh.kim~/src/linux_kernel_source$ cd linux-next/
austindh.kim~/src/linux_kernel_source/linux-next$ git log
commit 5d18cb62218608a1388858880ad3ec76d6cb0d3b
Author: Stephen Rothwell <sfr@canb.auug.org.au>
Date:   Wed Aug 28 19:59:14 2019 +1000

    Add linux-next specific files for 20190828

    Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>

이렇게 커밋 정보를 볼 수 있습니다.
리눅스 커널 git 정보 
참고로, 세부 커밋 정보는 다음 사이트에서 확인할 수 있습니다.
https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next/

리눅스 커널에서는 세부 서브 시스템별로 git을 운영합니다. 이 정보를 확인하려면 다음 사이트에 접속하면 됩니다.

https://kernel.googlesource.com/pub/scm/linux/kernel/git/

next/linux-next The linux-next integration testing tree
next/linux-next-history The linux-next integration testing tree
nferre/linux-at91 Nicolas Ferre's fork of linux.git

#Reference 다음 글...


"혹시 궁금한 점이 있으면 댓글로 질문 남겨주세요. 아는 한 성실히 답변 올려드리겠습니다!" 

Thanks,
Austin Kim(austindh.kim@gmail.com)



핑백

덧글

댓글 입력 영역