본문 바로가기

Linux Kernel

리눅스 커널 입문에 도움이 될만한 것들

반응형

리눅스 커널 1도 모르는 학생이 쓴 거라 도움이 안 될 수도 있습니다

 

어렸을 때부터 리눅스 커널을 공부하는 데에 로망이 있었는데, 당시에 중딩이던 나는 엄청난 진입 장벽에 좌절하고 이론 책만 조금 공부했던 기억이 있다. (그리고 이것도 제대로 이해 못했다 ㅋㅋㅋ) 그래도 한 5년 동안 머리가 자랐으니, 다시 도전해보고 싶어서 며칠 전부터 구글링을 엄청나게 했다. 아, 물론 리눅스 커널의 대략적인 작동 방식, 자료구조를 정리한 책은 많다. 그런데 그것도 중요하지만 직접 소스코드를 분석해보고 싶었다.

 

물론 5년 전이나 지금이나 진입 장벽은 높은 것 같다

 

아무튼 간에, 내가 느낀 리눅스 커널 입문의 어려운 점은 : 

 

1. 우선 어디서부터 시작해야 할지 모른다. 내가 "프로세스 관리"에 관심이 있어서 소스를 찾아봤는데, 어디에 코드가 있는지도 잘 모르겠고 어찌어찌 찾아도 뭔 소린지 하나도 이해하지 못했다.

2. 운영체제 이론에 대한 이해가 부족하다 물론 아예 모르는 건 아닌데, 리눅스 커널 소스를 보면 뭘 공부해야 할지도 모른다.

 

이제 잡다한 이야기를 생략하기로 하고 내가 찾은 방법은 다음과 같다. (나도 아직 해보지는 않았다.)

 

  1. 리눅스의 초기 버전 (0.0.1) 소스코드를 분석한다. (1만 줄 정도라 어찌어찌 분석할 수 있다, 이해할 수 있다면)
  2. Lions Book (unix v6의 소스코드를 분석한 책)을 읽는다. (단, v6은 ㄹㅇ로 데니스 리치가 막 개발한 초기 버전이라 현재와 차이가 있다. (16비트 프로세서, 옛날 C언어 표준 등)
  3. MIT에서 xv6을 가르치는 책 (xv6은 v6을 모던한 형태(x86 프로세서에서 개발되고,  ANSI C 표준을 지킴 - 위키백과)로 다시 개발한 것)
  4. 리눅스의 부팅 프로세스 분석하기 (코드로 알아보는 arm 리눅스 커널 2판)

일단 제일 만만한 게 3번, 2번이라 3번으로 공부하면서 2번을 참고하는 게 베스트인 것 같다. 초기 버전부터 공부하려는 이유는 간단한 운영체제 코드도 볼 줄 모르는데 지금의 리눅스는 커녕 십수년 전 리눅스도 이해하기가 어려움을 느꼈기 때문이다. 그리고 소스코드도 1만 줄 정도라서 완전 못 볼 정도도 아니다.

 

아, 그리고 알아두면 좋은 자료들 : 

 

http://jake.dothome.co.kr/ - 리눅스 커널을 공부하면서 문서화한 한국 블로그

https://makelinux.github.io/kernel/map/ - 리눅스 소스 호출 과정 시각화(?)

https://elixir.bootlin.com/- 온라인으로 버전별 리눅스 소스 보기

 

-- 책들 --

 

리눅스 커널 심층 분석

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

www.aladin.co.kr

 

글 쓰는 데에 참고한 자료들

 

https://kernelnewbies.org/CompleteNewbiesClickHere (종종 503 Bad Gate가 뜰 때가 있는데, 새로고침 하면 나아짐)

 

CompleteNewbiesClickHere - Linux Kernel Newbies

KernelNewbies: CompleteNewbiesClickHere (2017-12-30 01:30:13에 localhost가(이) 마지막으로 수정)

kernelnewbies.org

https://en.wikipedia.org/wiki/Lions%27_Commentary_on_UNIX_6th_Edition,_with_Source_Code

 

Lions' Commentary on UNIX 6th Edition, with Source Code - Wikipedia

Lions' Commentary on UNIX 6th Edition, with Source Code by John Lions (1976) contains source code of the 6th Edition Unix kernel plus a commentary. It is commonly referred to as the Lions Book. Despite its age, it is still considered an excellent commentar

en.wikipedia.org

https://en.wikipedia.org/wiki/Xv6

 

Xv6 - Wikipedia

xv6 is a modern reimplementation of Sixth Edition Unix in ANSI C for multiprocessor x86 and RISC-V systems. It is used for pedagogical purposes in MIT's Operating Systems Engineering (6.828) course as well as Georgia Tech's (CS 3210) Design of Operating Sy

en.wikipedia.org