[Linux Kernel] 공부에 도움되는 사이트 / 책 / 블로그
Kernel/Information

[Linux Kernel] 공부에 도움되는 사이트 / 책 / 블로그

반응형

LAST UPDATE: 2022.01.28

SITE

1. 커널 연구회 커뮤니티 (https://kernel.bz/)

 

커널연구회 커뮤니티/기술교육/쇼핑몰/협동프로젝트

커널연구회는 리눅스 커널과 디바이스드라이버를 연구하고 머신러닝 및 지능형로봇 관련 프로젝트를 수행하면서 관련 내용들을 공유하고 있습니다.

kernel.bz

커널의 기초에 대한 설명이 잘 나와있다. 계단을 올라가려 할 때 어떻게 생긴 계단인지 살펴보는 단계 정도라고 생각하면 될 것 같다. '리눅스커널' 탭에 나온 내용들로 아쉽다면 이 연구회에서 출간한 책도 있다. 읽어보진 않아 평을 할 수는 없지만 정말 아무것도 모르는 사람이라면 접해보는 데에 무리는 없을 것 같다.

 

2. ★ Kernel of Linux (https://olc.kr/course/course_online_view.jsp?id=35&s_keyword=Kernel&x=0&y=0#self)

 

OLC CENTER

 

olc.kr

고건 교수님의 커널에 대한 기초 강의다. 해당 강의는 모두 듣고 정리를 마쳤다.

정말 강추하는 강의다. 기본적인 C언어에 대한 지식과 Linux를 다뤄본 경험이 있고, 컴퓨터 구조를 어느 정도 알면 강의를 듣는 데에 큰 무리가 없을 것이다. 만약 아직 잘 모르겠다고 하더라도 들으면서 커널에 대한 전반적인 이론을 익히기엔 좋다.

해당 강의는 로버트 러브의 Linux Kernel Development (BOOK 2번 링크 참고)를 기준으로 하고 있다. 모든 챕터를 강의하지는 않았으므로 부족한 내용이나 강의에서 다루지 못했던 내용들을 알고 싶다면 이 책을 구입하면 된다.

 

3. Kernel of Linux 강의노트 1 (https://wogh8732.tistory.com/280?category=807175)

 

kernel of linux - Introduction

OLC CENTER https://olc.kr/course/course_online_view.jsp?id=35&s_keyword=Kernel&x=0&y=0 아는 형이 리눅스 커널 관련 온라인 강좌를 추천해줘서 봤는데 예전 학교수업때 배웠던 내용이 지금 다시 새롭게 느껴..

wogh8732.tistory.com

2번에서 소개한 링크의 강의를 정리한 글이다.

까망눈님의 블로그는 개인적으로 보안에 대해 공부할 때 도움을 많이 받았던 블로그 중 하나다. 마침 커널 관련 프로젝트를 진행하신다고 2번의 강의를 정리하신 건데 내가 강의 정리하고 부족한 점이 있나 점검할 때 돌아볼 때 도움이 됐다.

 

4. Kernel of Linux 강의노트 2 (https://medium.com/pocs/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%BB%A4%EB%84%90-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EA%B0%95%EC%9D%98%EB%85%B8%ED%8A%B8-1-d36d6c961566)

 

리눅스 커널(운영체제) 강의노트 [1]

커널을 공부하는 마음가짐

medium.com

2번에서 소개한 링크의 강의를 정리한 글이다.

 

5. (보안) Dreamhack: Linux Kernel Exploit 커리큘럼 (https://dreamhack.io/lecture/curriculums/4)

믿고 보는 드림핵 강의 콘텐츠. 보안 쪽 공부할 때 커널 익스플로잇의 기초를 배울 수 있다. 커널 연구 목적으로 라면 크게 어울리진 않다.

 

6. (보안) 인프런 커널 해킹 강의 (https://www.inflearn.com/course/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%BB%A4%EB%84%90-%ED%95%B4%ED%82%B9)

 

리눅스 커널 해킹. A부터 Z까지 - 인프런 | 강의

리눅스 커널의 각종 보호 기법과 그에 대한 우회 방안, 다양한 취약점들을 분석해보는 강의이며 강의별로 실습 예제가 제공 됩니다., [사진] 💡  강의 특징  이 강의는 리눅스 커널 해킹에 대한

www.inflearn.com

커널 해킹에 대한 몇 없는 좋은 강의다. 2번의 드림핵 강의를 다 들었고 추가적인 커널 익스플로잇 방법을 알고 싶을 때 들으면 좋을 것 같다. 다만 비싼 가격 때문에 할인할 때 사는 걸 추천한다.

 

7. (보안) Defenit 팀의 블로그에 정리된 커널 배경지식 (https://defenit.kr/2019/10/21/Pwn/%E3%84%B4%20Research/%EC%BB%A4%EB%84%90_%EA%B8%B0%EC%B4%88/)

 

커널 배경지식 정리

목차 커널 보호기법 리눅스 커널 모듈 - 명령어 리눅스 커널 모듈 - 함수 user mode -> kernel mode kernel mode -> user mode 기본 설정 커널 보호기법 KASLR (Kernel Address Space Layout Randomization)-> 커널의 메모리 주

defenit.kr

커널 익스플로잇에서 사용되는 개념과 커널의 보안 기법 중심으로 간단하게 정리된 블로그다.

 

8. lwn.net (https://lwn.net/)

 

Welcome to LWN.net [LWN.net]

[Security] Posted Jan 27, 2022 14:34 UTC (Thu) by jake Security updates have been issued by CentOS (polkit), Debian (uriparser), Fedora (cryptsetup, flatpak, flatpak-builder, and polkit), Gentoo (polkit), Mageia (virtualbox), Red Hat (httpd24-httpd, httpd:

lwn.net

리눅스와 관련된 여러 기사들과 최신 정보들, 패치 등등 여러 정보가 올라오는 커뮤니티다. 리눅스 커널 컨트리뷰터라면 이 사이트를 모를 수 없을 정도로 자주 접하는 사이트다.

 

9. Elixir Bootlin - Kernel (https://elixir.bootlin.com/linux/latest/source)

리눅스 커널 소스를 온라인에서 확인할 수 있는 사이트다. 각종 심볼이나 파일을 찾고 검색할 수 있어 매우 유용하다.

 

10. kernelnewbies.org (https://kernelnewbies.org/Linux_Kernel_Newbies)

리눅스 커널 뉴비. 이름에서 알 수 있듯이 커널 뉴비들을 위한 각종 자료들이 존재하는 커뮤니티다. 나도 아직 다 읽어보진 못했지만 기초 내용을 알기엔 굉장히 유용하다.

 

11. Linux Kernel Teaching (https://linux-kernel-labs.github.io/refs/heads/master/index.html)

 

Linux Kernel Teaching — The Linux Kernel documentation

© Copyright The kernel development community.

linux-kernel-labs.github.io

커널 5.10.14 버전을 기준으로 작성된 문서다. 리눅스 커널에 대한 기본 개념들을 설명하는 LECTURES 탭과 디바이스 드라이버 실습을 중심으로 설명하는 LABS 탭으로 구성되어 있다.

디바이스 드라이버 작성할 때 도움이 많이 받은 사이트 중 하나다.

 


BOOK

1. 디버깅을 통해 배우는 리눅스 커널의 구조와 원리

 

디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1

최신 버전의 리눅스 커널 소스를 함수 흐름을 따라가며 자세히 분석하고 ftrace와 TRACE32 같은 디버깅 툴을 활용해 커널의 동작 원리를 설명한다. 또한 라즈베리 파이에서 리눅스 커널의 소스코드

www.aladin.co.kr

라즈베리파이를 준비한 후 라즈비안 운영체제를 설치해서 진행한다. 커널 빌트인 디버깅 툴인 ftrace의 사용법과 함께 직접 실습해보며 동작을 눈으로 확인함과 동시에 커널의 구조와 원리를 이해하는 데에 도움을 주고자 하는 책이다.

아직 2권은 읽지 않았지만 1권을 읽고 나서 느낀 장단점은 다음과 같다. 구매 시 참고 바란다. (※ 어디까지나 개인적인 관점임을 밝힙니다!!)

  • 장점
    - 리눅스 커널을 공부할 때 직접 실습 환경을 만들어 진행하니 이론만 공부하는 것보다는 직접 커널을 만져볼 수 있다.
    - 디버깅 툴(ftrace, T32)을 다루는 법을 알려주는 책은 거의 없는 것으로 안다. 하지만 실무에서는 역시 디버깅 없이 개발할 수 없으니 책에서 강조하신 것처럼 디버깅을 잘하기 위한 초석으로 삼기에 좋다.
  • 단점
    - 각 챕터별로 기본적인 개념이 되어 있지만 아무래도 해당 개념에 해당하는 함수들의 connection과 디버깅에 초점을 맞추다 보니 아예 유닉스 혹은 리눅스 개념을 아예 모르고 접근하면 이해가 떨어질 수 있다. (하지만 이때는 SITE의 2번 링크, Kernel of Linux를 듣고 오면 이론을 쌓고 오니 도움이 될 것이다. 아니면 BOOK 2번인 리눅스 커널 심층 분석 책도 좋다.)
    - 심도 깊은 분석을 원하는 사람이라면 어느 정도 비추다. 디버깅을 통해 간단한 성능 분석 정도는 이 책에서 다루고 있지만 그 이상의 무언갈 하지는 않는다.

정리하자면 "기본 이론을 알고 난 뒤 실제로 어떻게 돌아가고 있는지 눈으로 알고 싶은 사람, 말 그대로 디버깅하는 방법을 알고 싶은 사람" 정도가 추천 대상이다. 그렇지만 커널 디버깅을 해보는 것은 임베디드 분야에서 활동할 사람이라면 아는 것이 분명 도움이 될 것은 자명하다.

{ 메일로 질문드렸을 때 답변받아주신 김동현(Austin Kim)님께 감사드립니다. }

 

2. 리눅스 커널 심층 분석

 

리눅스 커널 심층 분석

리눅스 커널의 핵심을 간결하면서도 심도있게 다루고 있다. 일반적인 운영체제에 대한 이해를 넘어, 여타 유닉스 시스템과 다른 리눅스만의 특징적인 부분에 대한 설계, 구현, 인터페이스 등을

www.aladin.co.kr

옛날 버전(v2.6)의 커널을 기준으로 이론을 설명하는 책이다. SITE 2번 링크인 Kernel of Linux 강의에서 사용한 책이기도 하다. 해당 강의에서 몇몇 챕터는 강의하지 않았다 (예를 들어 Block I/O 챕터).

옛날 버전이라 별로 도움이 안 될 것으로 생각할 수도 있지만 다음과 같은 이유로 추천한다. 리눅스 커널은 2.6 버전부터 커널 역사에서의 격동기라고 할 수 있을 정도로 큰 변화와 개선이 일어난 시점이다. 그리고 그 큰 틀은 현재 버전(5 버전대)까지도 이어지고 있다. 당연히 많은 부분이 바뀌었지만 2.6 버전을 이해한 뒤 최신 버전을 접하면 왜 이렇게 바뀌었는지, 구조는 왜 이런지 훨씬 이해하기 쉬울 것이다.

▶ 인터넷 상의 원서 PDF 링크 - 무료고 원서다. 원서로 책을 읽음으로써 영어 실력도 키우고 번역서의 난해한 번역을 피하고 싶다면 여기로.

 

3. 코드로 알아보는 ARM 리눅스 커널, 제2판

 

ARM 리눅스 커널

최신 ARM64 커널의 주요 서브시스템을 코드 레벨에서 분석하고 있으며, 기존 원리를 코드를 직접 쫓아가며 명쾌하게 소개한다. ARMv8 아키텍처에 대한 내용뿐만 아니라 커널의 핵심 구동 원리를 완

www.aladin.co.kr

커널을 공부하는 사람이 구글링을 했다면 한 번 이상 만나봤을 블로그, 문c 블로그의 운영자 분이신 문영일 님이 저자 중 한 분이시다. 그만큼 믿을만하다는 얘기다.

임베디드 개발에서 큰 부분을 차지하는 ARM 아키텍처를 기준으로 한 커널 분석 책. 읽어보진 않았지만 꽤나 어렵고 중상급자에게 적당하다지만 그래도 그림과 자세한 설명이 있어 좋다고 한다. 읽을 예정의 책 중 하나다.

 

4. 리눅스 커널 프로그래밍 - IT EXPERT

 

리눅스 커널 프로그래밍

커널 분석을 통해서 커널을 이해하는 구성이 아니라 직접 커널 코드로 프로그램을 만들면서 커널의 구조를 이해할 수 있게 구성되어서, 커널을 쉽게 입문할 수 있도록 했다.

www.aladin.co.kr

옛 버전의 커널(2.4, 2.6)을 기준으로 프로그래밍을 하고 있지만, 기초적인 커널 관련 프로그래밍을 하기에는 아주 적당하다. 모듈 프로그래밍, 커스텀 시스템 콜 추가하기 등을 직접 해볼 수 있는 개념과 코드를 알려줘서 말 그대로 리눅스 커널 프로그래밍의 입문자라면 정말 많은 도움을 받을 수 있는 책이다.

커널이 옛 버전이다 보니 옛 버전을 그대로 따라서 세팅하고 하는 것도 좋지만 실력 향상(프로그래밍 실력, 검색 실력, documentation 읽기 실력 등)을 위해서는 최신 버전의 커널로 세팅하고 달라진 점을 인지하면서 프로그래밍하는 것을 추천한다. 필자도 이렇게 공부하고 있다.

 

5. 임베디드 개발자를 위한 코드로 읽는 리눅스 디바이스 드라이버

 

코드로 읽는 리눅스 디바이스 드라이버

전 세계에서 가장 경험이 풍부한 리눅스 개발자 중 한 명인 저자가 사실상 거의 모든 디바이스를 대상으로, 안정적인 리눅스 드라이버를 만드는 방법을 체계적으로 설명한다. 이 책은 실전에서

www.aladin.co.kr

여러 드라이버들을 소개하고 없는 디바이스 드라이버 개발할 때 도움이 될만한 책이다. 4번에서 소개한 '리눅스 커널 프로그래밍' 책에서는 디바이스 드라이버로 문자, 블록 디바이스 드라이버만을 다루고 있지만 이 책에서는 훨씬 다양한 종류의 디바이스 드라이버에 대한 내용을 다루고 있다. 비디오 드라이버, 오디오 드라이버, 직렬 드라이버 등 그 내용이 다양하다.

아직 읽어보지는 않았지만 디바이스 드라이버에 대한 더 다양한 지식을 알고 싶다면 이 책을 읽어볼 만할 것 같다. 커널 2.6 버전을 다룬다고 하니 이 책도 최신 버전에 맞춰 바꿔가며 프로그래밍한다면 도움이 될 것 같다.

 

6.임베디드 레시피 (http://recipes.egloos.com/)

링크 안에서 책 구매가 가능한 네이버 스토어 링크가 있다.

임베디드 시스템 엔지니어가 되고 싶은 사람이라면 이 책을 거쳐가지 않을 수 없을 만큼 바이블 취급(?)을 받고 있는 책이다. 커널에만 초점이 맞춰진 것이 아니라 전반적인 임베디드에 대한 지식에 초점에 맞춰져 있다. 또 블로그에는 실무적인 내용이 많고 취업에 대한 조언도 있다. 커널을 연구 목적으로 하는 사람도 있겠지만 보통은 임베디드 시스템 엔지니어가 되고 싶어 공부 중인 사람이 대부분일 것이라 생각한다. 그런 의미에서 이 블로그 & 책은 큰 도움이 될 것이다.

 

7. Linux Device Drivers, Third Edition

 

Linux Device Drivers, Third Edition [LWN.net]

This is the web site for the Third Edition of Linux Device Drivers, by Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman. For the moment, only the finished PDF files are available; we do intend to make an HTML version and the DocBook source availa

lwn.net

위 사이트에서 PDF로 다운로드할 수 있다. 커널 2.6 버전을 기준으로 드라이버에 대한 내용을 상세히 다루고 있는데 커널 개발에 직접적으로 참여하고 있는 개발자들이 만든 책인 만큼 내용도 짜임새 있고 신뢰도도 높다. 필자도 디바이스 드라이버 만들 때 관련 챕터를 꼭 읽는다.

 

Extra) pr0gr4m 님이 커널 관련 책 리뷰를 하시고 추천 순서를 적어두었다. 참고하면 좋을 것이다.

https://pr0gr4m.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%EC%BB%A4%EB%84%90-%EC%B1%85-%EB%A6%AC%EB%B7%B0-%EB%B0%8F-%EA%B0%80%EC%9D%B4%EB%93%9C?category=714374

 

리눅스 커널 책 리뷰 및 가이드

1. 디버깅을 통해 배우는 리눅스 커널의 구조와 원리 www.yes24.com/Product/Goods/90085976 디버깅을 통해 배우는 리눅스 커널의 구조와 원리 1 신입 리눅스 시스템 개발자부터 5년차 개발자가 실무를 하기

pr0gr4m.tistory.com

 


BLOG

1. 문c 블로그

http://jake.dothome.co.kr/

 

문c 블로그

최신 ARM 리눅스 5.x 커널 분석

jake.dothome.co.kr

문영일 님이 운영하시는 블로그다. 현재 국내 커널 관련 블로그 중에서 가장 많은 내용, 그리고 가장 최신의 내용들이 올라오고 있는 곳이다.

꾸준히 둘러보면 도움이 될 사이트다. 최신 버전의 커널도 분석해서 올리시고 그림과 함께 자세한 설명이 있어 이해하기 정말 좋다.

 

2. Arm Linux Kernel Hacks

http://rousalome.egloos.com/

 

Arm Linux Kernel Hacks

This blog contains Linux Kernel Analysis(4.x/5.x), Arm architecture and debugging skills for seminar and lecture.

rousalome.egloos.com

내가 현재 공부하고 있는 '디버깅을 통해 배우는 리눅스 커널의 구조와 원리' 책의 저자 분인 김동현 님이 운영하고 계시는 블로그다. 이 책을 접하지 못했더라면 아마 시작하는 데 지금보다 더 오랜 시간이 걸리지 않았을까 하는 생각이 든다.

초보자들이 기초적인 수준부터 정보를 얻기에 좋은 블로그다.

 

3. pr0gr4m 님의 블로그

https://pr0gr4m.tistory.com/

 

Art of Pr0gr4m

 

pr0gr4m.tistory.com

내가 알고 있는 20대 커널 컨트리부터 중 단연 최고다.

이 분이 이루고 계신 걸 보면 자극이 많이 된다. 언젠가 같이 토론할 수 있는 날이 오면 좋겠다. ㅎㅎ

 

4. hyeyoo 님의 블로그

https://hyeyoo.com/

 

Bonjour, tout le monde!

공부를 하다보니 기록을 남기는게 좋을거같아 만들어버린 블로그

hyeyoo.com

어린 나이에도 불구하고 커널 공부를 정말 열심히 하신다.

이 분이랑도 꼭 교류를 하면서 지내고 싶다.

반응형