책소개
리눅스 커널을 수정하고 패치를 만들어 적용해 보자
리눅스 커널은 20년 이상 유지해온 오픈소스로, 현재 다양한 OS 플랫폼에서 사용되고 있다. 많은 개발자나 학생이 리눅스 커널을 공부하거나 관심이 있지만, 리눅스 커널 소스를 수정하고 디버깅하는 것에 그치고 있다. 개발자나 학생들이 이를 발전시켜 패치를 만들고 메인라인에 넣기 위해서는 많은 시간과 노력을 들여야 한다. 또한, 외국에서는 오픈소스에 기여하는 것을 가이드하는 사이트들도 더러 있고 이를 통해 커널에 패치를 만들 수 있도록 도와주기도 하나 국내에는 이를 정리해 놓은 문서나 웹 사이트가 없어 어려움이 많다.
『리눅스 커널 패치와 커밋』은 꾸준히 리눅스 커널 패치를 만들어 온 저자가 자신의 경험을 바탕으로 리눅스 커널을 수정하고 패치를 전달하기까지 일련의 과정을 정리한 책이다. 이 책은 개발 환경을 구축하고 리눅스 커널을 빌드하는 방법부터 코드를 분석하고 패치를 만들어 이를 커밋하는 과정까지 상세히 소개한다. 이 책을 통해 커널 패치 방법을 알아보고 간단한 패치를 만들어 볼 수 있으며 코드 분석 도구를 이용해 소스 코드를 분석하고 고치는 방법을 배울 수 있다.
[지은이] 윤대석
대학 시절 리눅스 커널을 처음 접하고 시작한 뒤로 시간이 많이 흘렀지만, 꾸준히 하지도 못했고 회사에 다니면서도 리눅스 커널에 관련된 업무만을 하지는 못해 아쉽기만 했다. 하지만 꾸준히 관심을 두고 블로그나 커뮤니티의 글을 읽으면서 좋은 방법이 없을까 고민을 많이 해왔다. 그래서 재미있는 방법들도 찾아내고 실력도 조금씩 늘어가는 것을 느낀다. 아직은 많이 부족하지만 좋은 개발자가 되기 위해 고민하고 앞으로 계속 노력하는 사람이 되고 싶다.
목차
chapter 1 들어가며
chapter 2 개발 환경 설정
2.1 기반 OS 선택
2.2 리눅스 배포판 선택
2.3 VirtualBox 설치
2.4 배포판 설치
2.5 리눅스 커널 개발 환경 만들기
2.6 이메일 계정 만들기
chapter 3 리눅스 커널 빌드하기
3.1 리눅스 커널 타깃 설정
3.2 리눅스 커널 옵션 설정
3.3 빌드하기
3.4 다른 아키텍처로 빌드하기
chapter 4 리눅스 커널 패치의 라이프 사이클
4.1 패치의 라이프 사이클
4.2 개발자별 커밋 통계 확인
chapter 5 리눅스 커널의 코딩 스타일 고치기
5.1 개발용 리눅스 커널 브랜치 준비
5.2 리눅스 커널의 코딩 스타일
5.3 코딩 스타일 고치기
5.4 Gmail로 답장쓰기
chapter 6 좋은 패치 만들기
6.1 작업 단위의 로컬 브랜치 만들기
6.2 CC 추가와 불필요한 헤더 지우기
6.3 알맞은 브랜치에서 개발하기
6.4 패치 작게 만들기
6.5 하나의 패치를 두 개로 분리하기
6.6 둘 이상의 패치를 하나로 합치기
6.7 패치에 코멘트 남기기
6.8 패치 Versioning
6.9 패치 Rebase
6.10 커버 패치 만들기
6.11 패치 시리즈 중 일부 패치만 수정하기
6.12 다른 개발자의 패치 다운로드와 적용
chapter 7 리눅스 커널 메일링 리스트 구독하기
7.1 메일링 리스트 선택하기
7.2 메일링 리스트 구독하기
7.3 라벨 만들기
7.4 필터 설정하기
chapter 8 정적 코드 분석 도구 사용하기
8.1 Sparse
8.2 Smatch
8.3 Coccinelle
chapter 9 정적 코드 분석 도구로 패치 만들기
9.1 Sparse로 로그 분석하기
9.2 Smatch로 로그 분석하기
9.3 Coccinelle로 로그 분석하기
chapter 10 QEMU로 리눅스 커널 디버깅하기
10.1 QEMU 설치
10.2 QEMU로 리눅스 커널 부팅하기
10.3 GDB를 연결해 리눅스 커널 디버깅하기
10.4 루트 파일 시스템 만들기
10.5 루트 파일 시스템에 실행 바이너리 추가하기
10.6 Linux Test Project
chapter 11 참고용 사이트
11.1 LWN.net
11.2 kernelnewbies.org
11.3 Git 연습과 이해
11.4 기타
chapter 12 맺음말