ARM 기반 리눅스 커널 개발자

illuminati_f의 이미지

안녕하세요? 요즘 고민이 많은 대학생인데 질문좀 드릴까 합니다.....

예전에 youtube 동영상에서 Greg Kroah-Hartman <- 뭐 잘 아실분들은 아실 껍니다 워낙 유명해서요

이분 강의를 듣고 리눅스 커널이라는 것에 큰 매력을 느끼게 되었습니다.

그래서 이쪽 공부를 해볼까 하는데, 리눅스 관련 패치를 메일링 리스트에 보내고 제가 쓴 코드가

(비록 처음엔 코어 커널 관련 코드가 아니고 디바이스 드라이버 코드일지라도)

자주 Accept(?)되는 정도가 되어, 최종적으로 커널 커미터가 되는게 목표인데요~

공부 많이 해야되는 것은 잘 알고있습니다. (저도 전공이 이쪽이다보니, 대충 감은 잡힙니다)

알아본 결과 I am root 같은 국내 커널 스터디 그룹에도 참여해볼 계획이고, 이외 많은 활동을 하고 싶습니다.

역시 고민은 취업인데요....

이러한 활동들이 취업에 도움이 될까하는 겁니다.

첫째로, 리눅스 커널 관련 쪽이나 디바이스 드라이버 쪽으로 우리나라에 수요 인력이랑 활동 범위도 모를 뿐더러 대우도 상당히 궁금합니다...

둘째로, 대기업에서 이 분야에 수요가 많다면 이 경우엔 워낙 많은 사람들을 평가해야되는 대기업 특성상 과연 이런 활동을 봐줄까하는 겁니다.

goforit의 이미지

>첫째로, 리눅스 커널 관련 쪽이나 디바이스 드라이버 쪽으로 우리나라에 수요 인력이랑 활동 범위도 모를 뿐더러 대우도 상당히 궁금합니다...

커널 개발자라고 해도 대우가 특히 다르지 않습니다.

어느 정도 탑 레벨의 커널 개발자 가령 Russell King, the Linux ARM architecture maintainer 같은 정도면 부르는대로 연봉을 받을 수 있습니다.
(단 그는 별로에 돈에 관심 없는 듯합니다. 아는 두회사에서 고액 연봉의 직원으로 스카우트를 할려고 했는데 거절했습니다.)

단 잊지 말아야 할점은 *영어*가 뒷받침 되지만 않으면 글로벌하게 인정 받기 어렵습니다. 오픈 소스 활동의 가장 중요한 부분 중 하나가
여러 사람과 커뮤니케이션을 얼마나 잘 하느냐입니다. 리눅스 컨퍼런스에 가서 열심히 maintainer와 수다 떨고, 패치 보내면 잘 챙겨줍니다.
글쓴분이 대학생이까, 한번 더 강조하겠습니다. 폼나는 Linux Kernel 엔지니어가 되기 위해서는 영어가 필수입니다.

장점:
1. 엔지니어로서 기술적인 만족을 얻을 수 있습니다.
2. 좋은 엔지니어와 경쟁할 기회가 있습니다.

단점:
1. 자기만의 유명세를 떨치지 않으면 (아쉽게도 이미 시장은 포화 상태가 된지 오래입니다), 돈을 벌기 어렵습니다.
2. 이런 업종은 B2B업종에 속하게 되어, 기업들을 고객으로 상대할 가능이 큽니다. (개인 사업하기 그닥 좋지 않습니다. ^^)

>둘째로, 대기업에서 이 분야에 수요가 많다면 이 경우엔 워낙 많은 사람들을 평가해야되는 대기업 특성상 과연 이런 활동을 봐줄까하는 겁니다.

Chip/CPU를 디자인하는 대기업 반도체 회사를 가시면 이런 활동을 업으로 할 수 있습니다.
요즘은 반도체 회사에서도 오픈 소스 활동을 JOB 하는 포지션이 있습니다. 이런 사람만 모아 놓은 회사가 하나 있습니다. http://www.linaro.org/engineering

illuminati_f의 이미지

답변 잘 읽었습니다.

또 질문이 있는데, 커널 개발자가 되려면 디바이스 드라이버부터(OS 컴퓨터 구조에 대해 어느정도 이해가 되었다는 가정 하에)

만지면 커널이 조금 수월하게 다가올 것이라고 하더군요. 여기서 말하는 디바이스 드라이버에 대한 이해라면,

raspberry pi와 같은 ARM 보드의 리눅스 커널로의 포팅부터 회로까지 모두 볼줄 알아야 된다는 말인가요?

아니면 리눅스 OS가 몇십만 줄인걸로 아는데 그걸 다 분석하고 이해해야하는 것인지.. 아니면 둘다????

goforit의 이미지

>raspberry pi와 같은 ARM 보드의 리눅스 커널로의 포팅부터 회로까지 모두 볼줄 알아야 된다는 말인가요?
포팅을 옵션이구요, 회로도는 볼 줄 알아야 되겠죠. 그리고 해당 드라이버와 그에 따른 칩이나 정보도 포함해서. ^^

그리고 Architecture (CPU - ARM, Mips...) maintainer 들은 CPU 구조에 대해 전문가 들입니다.

sshtel의 이미지

커널의 범위가 너무 넓습니다.

스케줄러, 메모리, IPC 부터 시작해서 로우 레벨로 가면 아키텍처, 디바이스 드라이버, I/O..
여기서 또 세분화 되는 분야가 많지요.
스토리지, 네트워크, 비디오, 오디오...

오픈소스 활동하는 사람들 중 A부터 Z까지 파는 사람은 거의 없습니다.
보통 자기가 하던 분야, 자기가 관심있고 흥미 있는 분야를 들여다 보면서 그쪽 흐름을 이해하고 버그를 수정하게 됩니다.

본인이 관심이 있는 곳을 찾으세요. 그리고 버그를 잡으세요.