리눅스 커널 공부관련 상담을 드리고 싶습니다.

tooson90의 이미지

안녕하십니까. 

리눅스 커널책을 처음 봐보기 시작하다가 언젠가 도움이 되겠지 싶어
무작정 리눅스 커널공부를 책을 잡고 코드레벨로 하루하루 공부를 하고있는 학생입니다. 
몇년이 걸려도 저는 이해하기 어려운 그런 분야인 것 같기에 졸업하기 전에 길게잡아 일년정도를
이렇게 공부해서 책을 여러권끝내야지. 적어도 졸업하기전에 어느부분이 어떤 알고리즘으로 돌아가는구나
이해는 가는 상태가 되어야겠다 라는 생각으로 길게 잡고 공부를 할 계획이었습니다.

하지만 공부를 하다가 학생으로써 경험이 부족한 탓에 문득 이런 공부가 어떻게 도움이 될수 있을까... 
그냥 뭔가 개발하고, 요즘 화두인 딥러닝 이런분야를 공부하는 것이 나은 일인데
리눅스 커널을 책잡고 코드레벨로 공부를 하는게 시간을 버리는것은 아닐까... 
라는 생각이 들어 선배님들의 조언을 얻을 수 있을지 궁금합니다.

혹시 코드레벨로 리눅스를 공부해서 좋은점이 어떤것이 있을 수 있지 궁금합니다.
아니면 정말... 도움이 안될일에 시간을쏟고, 쏟아온 것일지 고민이 되어 한없이 모르고 부족하지만 
막연한 불안감에 이런 질문을 드려보고 싶습니다.

질문을 너무 막연하게 드려 죄송합니다. 
감사합니다. 

세벌의 이미지

http://www.kernel.bz/ 들러 보면 도움 될 것 같네요.
님께서 하신 질문에 대한 힌트가 있을 듯.

joone의 이미지

작은 RTOS 코드를 보면서 직접 kernel을 만드는 것은 어떨까요? 리눅스 커널은 이미 성숙한 프로젝트라 기여하시려면 상당한 노력이 필요합니다.
구글의 새OS인 Fuchsia를 파는 것은 어떨까요?
https://en.wikipedia.org/wiki/Google_Fuchsia

jw8704의 이미지

현재의 커널에는 많은 최적화와 성능이슈가 들어가서 기본적으로 구성되어야하는 코드를 공부하기에는 매우 난해합니다.

또한 커널은 스케쥴러,파일시스템,부트로더 등 많은 부분으로 이뤄져있음을 알고 , 각각에 대해 공부를 따로 하셔야 됩니다.

또한 커널의 어떤 분야를 공부하든지 공통적으로 알아야하는건 커널소스를 분석하고 수정하여 적용하고 그차이점을 인식하여 보고서형태로 작성하는 방법을 아셔야합니다.

예전에 많이사용했던 툴은 Cscope,Ctags 등이고 요즘은 어떤지 잘모르겠습니다.

그래도 Cscope,Ctags 면 충분할거라고 생각합니다.

커널을 혼자공부하는건 위의 모든걸 다 한다고해도 , 어려운데 그이유중 하나는 이슈를 찾아내는게 어렵습니다.

이미 앞서 공부하거나 전문적인 지식을 갖고있는 분께 연구주제를 얻고 피드백을 얻어가며 팔로우하는것이 좋은방법입니다.

대학교의 랩실이나 , 커널을 연구하는 회사를 들어가시는게 좋을것같구요

커널쪽에 파일시스템쪽을 한번 봐보시져 EXT2 같은걸 간단히 수정하면서 해보세요.

그런후 배운 방법론과 이론 개념들을 다른 곳으로 확장시키시거나 적용하셔서 공부하시면될듯합니다.

resoliwan의 이미지

리눅스는 OS 입니다.
OS 는 사람과 기계를 연결시키는 프로그램의 집합입니다.
정의에서 다음을 생각하세요. 코드가 아니라 아이디어 레벨에서 생각 하는걸 추천 드립니다.