휴학중인 대학생인데 갑자기 커널 개발자가 되고싶어졌습니다. 뭐부터 시작해야할까요?

name2965의 이미지

안녕하세요. 저는 현재 지방 국립대를 3학기 다니다가 휴학 하면서 이것저것 해보던 중에 갑자기 커널 개발자가 되고 싶다는 생각이 들었습니다.

원래는 보안분야에 관심이 많았고 시스템 해킹을 주로 했었는데 리눅스 커널을 접하게 된 이후부터 이 분야에 푹 빠지게 되어서 운영체제 공부 한번 해본적 없는 상태에서 무작정 리눅스 커널 소스코드를 읽고 분석해보기 시작했습니다. 처음에는 내가아는 C언어가 맞는건지 싶을 정도로 분석하기 어려웠지만 모르는것들은 전부다 검색해보면서 하나하나 공부하고 분석하고를 반복하면서 이제는 함수의 대략적인 동작을 이해할수 있게 되었습니다.
그리고 syzbot 이라는 것을 알게된 이후부터는 여기에 올라온 버그리포트 들을 하나둘씩 분석해보고 root cause를 찾으면 공식 문서를 읽어가면서 패치메일을 작성하고 메인테이너에게 메일을 보내고 까이고 수정하고를 반복하다보니 커밋된 제 패치도 두자릿수가 넘어가기 시작하고 가끔 CVE 도 나오고 하면서 커널에 재미를 붙였습니다.

그런데 이런걸 계속 하면서 문득 든 생각으로는, 뭔가 컨트리뷰션은 많이 한거 같은데 정작 내가 만들고 싶은 기능을 직접 만들어서 커밋해본 경험은 거의 없었습니다. 도메인 지식자체가 부족하다보니 뭔가를 만들기도 힘들고 특정 함수의 동작을 이해하려면 하나부터 열까지 모든 코드를 분석해야지만 이해할수 있다보니 뭔가를 만드는 것을 전혀 하지 못하고 있었습니다.

처음에는 뭣도 모르고 무작정 들이받았었는데 예전에는 생각도 안하던 커널개발 자체에 관심이 생기게 되었습니다. 그래서 취업도 개발쪽으로 관심이 생겼는데, 웹에 비해서 채용공고도 얼마 없고 그나마도 제가 감히 쳐다도 못볼 대기업들이 많이 보였습니다.거기에 대부분의 중소기업들은 경력채용공고만 있는 상태여서 이 분야를 계속한다고 해서 내가 과연 취업을 할수 있을까? 라는 생각이 들었습니다.

지금은 부족한 OS지식을 채우기 위해서 어셈블리로 x86 기반 32bit OS커널을 만들어보고 있는데 어디선가 들어본 OS개념들 (인터럽트, 컨텍스트 스위칭)을 직접 구현할때마다 너무 신기하고 재밌습니다. 웹개발을 억지로 공부할때보다 훨씬 더 재밌는데도 이런걸 계속 공부한다고 해서 과연 진정한 커널개발자가 될수 있을지 너무 걱정되고 불안합니다.

일단 지금은 C++로 백준을 틈틈히 풀면서 기본적인 구현능력과 알고리즘 지식을 쌓고 32bit 커널을 구현하면서 OS개념을 쌓은뒤 ARM 아키텍쳐 OS도 직접 만들어보면서 ARM 커널에 대한 이해도를 높이려고 하는데 여기에 추가적으로 뭘 더해야 안정적으로 커널 개발업계에 취업할수 있을까요?

그리고 삼성, 카카오 처럼 유명한 대기업들은 얼마나 잘해야 취업에 도전해볼수 있는건가요?

세벌의 이미지

https://kernel.org/ 자주 들러보셔요.
커널 개발자 수요는 그리 많지 않을 겁니다.
취미로 하신다 생각하시고. 좋아하던 취미가 일이 되어버리면 재미 없어지기도 합니다.
하고 싶은 것을 하는 직업을 못 구한다면, 할 수 있는 일 할 수 있는 직업을 구하고, 커널을 취미로 할 수도 있겠지요.

제 얘기를 좀 하자면
저는 수학이 좋아 대학교 수학과 갔네요. 부모님은 수학과 나와서 취직 되겠냐? 걱정했지만 제가 좋아서.
영어 못하는데 영어로 된 원서 수학책 보느라 고생 좀 했고요. 하다 보니 되기는 되더군요.
전산 부전공하고, 졸업 하고 군대가고, 컴퓨터 강사도 해 보고, 벤처에서 일 하다가 영업 못 한다고 짤리고.
지금은 다른 일 하고 있네요. 컴퓨터 관련 일이라고 하기도 좀 애매한 게, 요즘 컴퓨터 안 쓰는 일이 드물어서...
그렇게 그렇게 세월은 흘러가고 그 속에 저는 존재하며 버티며 살아갑니다. 존버라고 하죠?

잘 되시기 바랍니다.

gurugio의 이미지

한국=>독일에서 커널 개발을 10년정도 했다가 귀국하면서 웹서비스 개발하고 있습니다.
커널 개발자 포지션이 있으면 저도 좀 알려주세요...

대기업보다는 스타트업에 더 관련 포지션은 많아보이고요
OS만들어보시고, 계속 커널에 버그 패치 올리시면서 여러 스타트업에 컨택해보시면 한두군데는 연락이 올거같습니다.
단순히 리눅스 커널만 잘 안다기보다는 하드웨어-커널-드라이버-어플리케이션 전체적인 소프트웨어 스택이
어떻게 돌아가고 복잡한 문제가 생겼을 때 어디를 봐야될지, 보통 동작은 하는데 성능이 딸리면 대책이 없을때가 많은데
어떻게 성능을 봐야될지, 그리고 가상화도 고려해야되고요..

아참 그리고 커널 개발자 포지션보다는 쿠버네티스 관련 개발 포지션을 찾아보세요.
쿠버네티스를 운영하면서 생기는 문제들 중 상당수가 운영체제와 쿠버네티스간의 문제입니다.
쿠버네티스도 같이 공부하시면 더 많은 기회가 생기실거에요.

하이닉스/엘지/삼성에 펌웨어나 커널 개발자 포지션이 가뭄에 콩나듯이 올라올때가 있다고 들었어요.
계속 주시해보시면...

혹시 지금 열려있는 커널 개발자 포지션이 있으면 답글로 좀 꼭 알려주세요..

gurugio의 이미지

아참 한국 대기업만 생각하지마시고 아마존이나 구글같은 빅테크도 도전해보세요.
제가 아는 거는 독일 드레스덴에 아마존 커널팀이 있구요.
커널 패치한 이력 정도면 서류 통과는 될거에요...저는 코테에서 늘 떨어져서..

나빌레라의 이미지

그리고 syzbot 이라는 것을 알게된 이후부터는 여기에 올라온 버그리포트 들을 하나둘씩 분석해보고 root cause를 찾으면 공식 문서를 읽어가면서 패치메일을 작성하고 메인테이너에게 메일을 보내고 까이고 수정하고를 반복하다보니 커밋된 제 패치도 두자릿수가 넘어가기 시작하고 가끔 CVE 도 나오고 하면서 커널에 재미를 붙였습니다.

이미 훌륭한 업적을 쌓으셨네요.

단언컨데 한국엔 제대로 된 커널 개발자 포지션이 없습니다. 삼성이건 카카오건 네이버건 엘지건 뭐 다 통털어서 없습니다.

linkedin.com 이나 indeed.com 등에서 미국쪽 커널 개발자 오프닝 포지션 검색해서 바로 지원해 보세요. 한국에서 리모트로 일 할 수 있는 포지션들도 꽤 있을겁니다. H1B 스폰서 해주는 포지션들도 있을 테고요.

----------------------
얇은 사 하이얀 고깔은 고이 접어서 나빌레라