리눅스 커널 공부에 대해서 조언을 구하고자 합니다.

OOOPS의 이미지

안녕하세요 리눅스 커널을 공부하고 싶어하는 이제 3학년이 되는 컴공인 입니다.

학교에서 컴퓨터구조나 리눅스의 기본적인 프로그래밍(기본명령어, fork(), mutex기타 등등)에 대해서는 배운상태 입니다.

개인적으로 임베디드쪽으로 관심이 많아서 방학때 리눅스 커널을 공부하려 합니다.

현재 타카하시 히로카즈외 2인이 쓴 "리눅스 커널 2.6 구조와 원리"라는 책을 빌려서 정독중인데, 제 실력이 이렇게 한심한 수준일줄은

몰랐습니다. 너무나 어려워서 대략적인 흐름같은것은 이해하겠는데, 정작 코드나 세세한 설명들은 이해가 안됩니다.

전 어쨌든 리눅스 커널을 정복하고자 하는 마음이 굉장히 강하기(?)때문에 이해가 안되면 몇번이라도 다시 정독할 마음으로

하나하나씩 익혀가는 중입니다.

주저리 주저리 썻는데, 사실 궁금한것은 저같이 리눅스커널에 처음 입문하는 사람들은 어떤 책으로 어떤 방법으로 공부하는것이 좋을까요?

아직 운영체제나 마이크로프로세서같은 과목은 듣지 않은 상태라 저에게는 아직 무리일까요? 조언 부탁드립니다.

yukariko의 이미지

아무래도 운영체제에 대한 지식이있는것과 없는것은 이해정도의 차이가 적지않죠. 스케쥴링이라던가..
게다가 커널소스 자체도 복잡하기때문에 사전지식은 많을수록 좋다고봅니다.
그렇다고 운영체제를 수강할때까지 기다리기보단 독학을 해보는게 어떠련지요

ddoman의 이미지

저는 Linux Kernel Development를 아주 재미있게 읽었습니다.
http://www.amazon.com/Linux-Kernel-Development-Robert-Love/dp/0672329468/ref=sr_1_1?ie=UTF8&qid=1420921158&sr=8-1&keywords=linux+kernel+development

어려운 주제를 다루는 책들은 많지만, 어려운 주제를 쉽고 잘 설명한 책들은 찾아보기힘듭니다.
저자는 구글에서 안드로이드 커널 개발팀의 일원인데, 글솜씨가 뛰어납니다.

찾아보니 국내 번역판도 나와있군요. 아직 읽어보진못해서 번역수준이 어떠한지는 모르겠습니다만
괜찮지않을까 기대해봅니다.
http://book.interpark.com/product/BookDisplay.do?_method=detail&sc.saNo=003007002&sc.prdNo=210880147

참고로 What Every Programmer Should Know About Memory를 읽어보시길 완전 강추합니다.
www.akkadia.org/drepper/cpumemory.pdf

대부분의 대학 운영체제 수업에 다루는 Memory 와 CPU cache에 대한 내용들이 주인데, 커널공부하기전에
충분히 숙지하면 큰 도움이 될것이라 생각합니다.

hxploit의 이미지

리눅스 커널 심층 분석 책은 제가 커널 책으로 초기에 읽었던 책 중 하나인데
개인적으로 번역의 질도 나쁘다고 생각하지않고 책 내용은 뭐 말할것도 없이 좋습니다.

(물론 제 경우는 용어를 대부분 모르면 다시 찾아보고 하는게 적응이 되있어서
제가 번역이 좋고 나쁘고를 거의 못느낀다는 건 감안하셔야 하겠지만. 김 모 교수님의
유닉스 책 같은 그런 수준이 아니면 번역이 안좋다는건 못느껴봤네요.)

OOOPS의 이미지

리눅스 커널 심층분석책을 살펴봐야겠군요.. 도움주신 분들께 정말 감사 드립니다.

ant35rookie의 이미지

지나가다가 혹시 도움이 되실까하여
개인적으로 공부했던 순서를 공유 드립니다

1. 리눅스 커널 심층분석(로버트러브) - 무료 PDF
kernel api 및 기본적인 내용파악에 좋습니다
빨리 읽을 수 있고, 내부구현은 설명하지 않지만 api를 찾아보는데 유용합니다
언제 schedule()함수가 호출되는지 등은 간단하게 잘 설명한 것 같습니다
pdf가 무료이지만, 오래보시기 위해 책구입을 추천드립니다

2. 리눅스 커널의 이해 (다니엘 보베이)
kernel api의 내부구현을 볼 수 있습니다
한 번 정독하는데 상당히 오래 걸립니다,
그러니 먼저 한 번 통독하시고 아래 3번을 읽으시길 바랍니다
그런 다음에 두 번째는 천천히 kernel 소스와 함께 분석하면서 보시면 좋을 것 같습니다
(x86 기반입니다)

3. 코드로 알아보는 ARM 리눅스 커널
kernel의 부팅과정을 알 수 있습니다
arm 기반입니다, reference 문서와 함께 보면 좋을 것 같습니다
(2번 리눅스 커널의 이해가 x86 기반이라 arm과는 많이 다르오니 레지스터 등 헷갈리시지 않기를 바랍니다)
책이 armv7 기반은 아니였던 것 같은데... 확실치 않네요
armv7 pdf 경로 일단 공유 드립니다
http://infocenter.arm.com/help/topic/com.arm.doc.ddi0438i/DDI0438I_cortex_a15_r4p0_trm.pdf
http://liris.cnrs.fr/~mmrissa/lib/exe/fetch.php?media=armv7-a-r-manual.pdf

4. Understanding The Linux Virtual Memory Manager - 무료 PDF
virtual memory 부분만 설명하고 있습니다
책은 해외직구를 해야합니다, 메모리 쪽이 헷갈리시면 보시기 바랍니다
저자는 현재도 kernel developer로서 lkml에서 활동하는 것 같습니다

5. 아무래도 lkml 메일을 받아보는게 제일 좋으실것 같습니다
실제 커널해커들이 아래에서 패치를 만들어 반영하고 있습니다
www.tux.org/lkml/
아래 내용도 참고하시기 바랍니다
https://www.linux.com/news/30-linux-kernel-developers-30-weeks-sarah-sharp

간단하게 text only 형식으로 아래처럼만 메일을 보내면 시작할 수 있습니다

받는사람
majordomo@vger.kernel.org
제목
없어도 되고 내용과 똑같이 복사해도 됨
내용
subscribe linux-kernel 메일주소

오늘도 조금 더 배우는 하루

AustinKim의 이미지

새로운 리눅스 커널 책을 보시는게 어떨까요?

디버깅을 통해 배우는 리눅스 커널의 구조와 원리
http://www.yes24.com/Product/Goods/90085976

신입 개발자들도 볼 수 있는 친절한 책이라고 하네요.

(개인블로그)
http://rousalome.egloos.com