막연하게 커널 개발자가 되고 싶은 사람입니다.

nayana의 이미지

커널 개발자가 되고 싶어서 커널쪽을 공부하고 있습니다.
막상 공부를 시작하니....매너리즘에 빠지게 되더군요...
어플리케이션을 짤때는 어떤 제품을 출시하니까...이 제품을
출시하기 위해서는 어떤 부분을 중점있게 보고...공부하고 그랬는데...
막상 책만 보니까...내가 커널을 공부하면 무엇을 만드는데..
쓰지? 하고 생각이 듭니다. 처음에는 리눅스 유저라면 커널을 알아야지 하고 막연히 시작하였는데...계속 공부하고 싶은 욕심이 생겨서 개발자까지 꿈꾸게 되었습니다.

현재 필드게신 커널 개발자분들은 현재 어떤일을하고 게시고 어떤 제품이 나오나요?

불량도ㅐㅈㅣ의 이미지

제일 좋은 방법은 대학원 가는 것이 아니겠습니까??

문근영 너무 귀여워~~

saxboy의 이미지

드라이버라도 하나 간단하게 만들어보시면 어떨까요.

대부분의 임베디드 시스템은 커널을 수정하는 일이 꽤 많습니다만, 실제로 수정하는 부분은 많지 않습니다. 대부분 칩에 맞게 디바이스 드라이버를 제작하고, 파일시스템을 특정한 목적에 맞게 패치한다거나 하는 정도가 될까요. 임베디드 시스템들은 램이 작으니 메모리 할당 루틴을 고쳐서 사용한다거나 하기도 하지요. 물론 돌아다니는 패치를 주워서 쓰는 경우가 많겠지요. 좀 더 돈이 많은 회사에서는 이런 과정을 아예 생략하고 몬타비스타 따위를 사다가 사용하는 경우도 많지만 칩을 제작해서 솔루션을 만드는 경우나 리눅스가 포팅되어 있지 않은 칩을 사용하는 경우라면 커널포팅부터 시작하는 경우도 가끔씩 있기는 하더군요. 그렇다고 해도 대부분 arm-linux 따위에 기본적인 주소 몇개를 추가하는 것에 불과한 경우가 많지만... 물론 요즘은 대부분 칩 벤더에서 리눅스를 기본 플랫폼으로 제공하는 경우가 많습니다. 8)

제가 추천해드리고 싶은 방법은, 싼 게임기나 PDA를 하나 구입해서 직접 포팅해본다거나 하시면 어떨까요. 개발보드를 구입하는 것보다 비용도 훨씬 저렴하고 사실 개발보드나 완제품이나 크게 다른 것도 없지요. 직접 부딪치다보면 해결해야 할 문제들이 하나씩 생겨나니 무얼 해야 할지는 자연스럽게 아시게 되리라 생각합니다.
아니면 데스크탑에서 리눅스용 드라이버들을 제작해본다거나 하는 일도 큰 도움이 되겠지요. 조금 욕심을 부린다면 직접 라이너스에게 패치를 보낼 수도 있겠고요. :-)

그리고 학습과는 별개의 문제인데, "커널" 개발자라는 직업을 찾기는 힘들 것 같군요. 커널은 제품을 만들기 위한 환경에 불과하지요. 나중에라도 굳이 이런 쪽을 찾으신다면 솔루션 개발업체보다는 칩을 설계하는 쪽에 자리가 있는지 알아보시면 좋겠지만, 커널 작업이라는 것이 특성상 한번 포팅되면 크게 손댈 일이 없다보니...

ps.
사실은 리눅스를 채용한 제품은 아직까지는 많은 편은 아닙니다. 앞으로는 좀 더 많아질 것이라고 다들 예상하기는 하지만.

망치의 이미지

커널에 대해 자세히 알게된다는건 꼭 커널을 개발할때만 쓰이지 않습니다. 당장 간단한 응용프로그램을 개발한다 하더라도, 내부적으로 어떤식으로 동작되는지 이해하고 있는것과, 단순 응용 개발자가 만드는것과는 애초의 퍼포먼스가 다르게 동작하게 될겁니다.

정작 퍼포먼스가 중요한 프로그램일수록 내부를 얼마만큼 이해하고 잘 활용하느냐에 따른 차이가 매우 클것입니다..

---------------------------------------
http://www.waitfor.com/
http://www.textmud.com/