본문으로 건너뛰기
피드

1년간 OS를 밑바닥부터 만든 개발자 — 부트로더에서 Doom 포팅까지

open-source 약 3분

MONOLITH이라는 OS를 처음부터 만든 1년간의 개발 일지. GDT/IDT 초기화부터 시작해 메모리 관리, 유저스페이스, IPC, 데스크톱 환경까지 구현하고 최종적으로 Doom 포팅에 성공함.

  • 1

    12개월 만에 부트로더 → 데스크톱 환경 → Doom 포팅까지 달성

  • 2

    Claude Opus 4.5를 활용해 데스크톱 환경 프로토타이핑

  • 3

    대학 다니면서 사이드 프로젝트로 진행한 학습 목적 OS

1년간 OS를 직접 만들어본 개발자의 여정

  • MONOLITH이라는 이름의 OS를 처음부터(from scratch) 만든 1년간의 개발 일지임. 학습 목적의 프로젝트인데, 12개월 만에 데스크톱 환경까지 올리고 Doom까지 포팅한 게 인상적임

초반 3개월: 부트부터 가상 메모리까지

  • 첫 달에 multiboot2 프로토콜로 부팅 → GDT/IDT 초기화 → 물리 메모리 관리자 → 힙 할당자 → VGA 콘솔까지 구현. 거의 매일 커밋한 셈
  • i386 아키텍처 지원과 VESA 비디오 드라이버까지 추가했는데, 3개월째에 과감하게 i386과 텍스트 VGA 모드를 드롭하고 Limine 부트 프로토콜로 전환함
  • 2개월째는 대학 일정과 동기부족으로 진전이 없었다고 솔직하게 적어둠 (이런 솔직함이 좋음)

중반 4-8개월: 유저스페이스의 탄생

  • VFS + tmpfs 구현 → initrd → ELF 로더 순서로 진행해서, 5개월째에 드디어 ring-3(유저스페이스)와 syscall 지원이 들어감
  • microui 데모를 포팅한 게 재밌는 포인트. 커널 위에서 GUI가 돌아가기 시작한 순간임
  • 7개월째에 태스크 스위칭을 시도했는데 본인도 "반쪽짜리(half-baked)"라고 인정함
  • 8개월째에 GitHub에서 Codeberg로 이전하고, 유저스페이스 libc와 프로세스 크래시 핸들링을 구현함

후반 9-12개월: 데스크톱 환경과 Doom

  • Claude Opus 4.5로 데스크톱 환경 프로토타이핑을 했다는 부분이 눈에 띔. AI로 OS 개발을 가속한 사례
  • 프로세스 간 주소 공간 분리, malloc/realloc/free, 이벤트 폴링 기반 입력 처리 등 유저스페이스 인프라를 착실하게 쌓아감
  • IPC 구현 → 공유 메모리 → libdesktop 윈도우 프로토콜 순서로 데스크톱 기반을 만들고
  • 12개월째에 Doom 포팅 성공 — 자작 OS의 마일스톤 중 마일스톤이라 할 수 있음

💡

> 프로젝트가 Codeberg에 올라가 있으니, OS 개발에 관심 있으면 타임라인 따라가며 커밋 히스토리를 보는 것도 좋은 학습 자료가 될 듯.

  • 대학 다니면서 사이드 프로젝트로 이 정도를 해냈다는 게 핵심. "OS 개발 해보고 싶다"는 막연한 생각을 실제로 실행에 옮긴 좋은 사례임

OS 개발이라는 거대한 프로젝트도 매일 조금씩 커밋하면 1년 안에 Doom이 돌아가는 수준까지 올 수 있다는 걸 보여주는 사례

댓글

댓글

댓글을 불러오는 중...

open-source

뱀부랩, 오픈소스 슬라이서 개발자에게 법적 압박 걸었다가 역풍 맞음

3D 프린터 제조사 뱀부랩이 OrcaSlicer-BambuLab 개발자에게 중단 요구서를 보내면서 오픈소스와 수리권 커뮤니티의 반발을 샀다. GamersNexus와 Louis Rossmann은 개발자의 허락을 받아 소프트웨어를 다시 호스팅하고, 소송이 걸리면 각각 1만 달러씩 법률 지원을 하겠다고 나섰다.

open-source

OrcaSlicer 포크, Bambu Lab 프린터의 인터넷 연결 기능 되살림

FULU Foundation의 OrcaSlicer-bambulab 포크가 Bambu Lab 프린터에서 LAN 전용 제한 없이 BambuNetwork 기반 인터넷 연결을 다시 지원한다고 밝힘. Windows에서는 WSL 2 설정이 필요하고, Linux에서는 일반 설치만으로 충분하다고 안내함.

open-source

코넬대가 공개한 정확히 2,000줄짜리 교육용 운영체제

코넬대 기반 프로젝트인 egos-2000은 학생이 교육용 운영체제 전체 코드를 직접 읽을 수 있게 만드는 걸 목표로 한다. C, 헤더, 어셈블리, make 파일을 합쳐 정확히 2,000줄이며, QEMU와 RISC-V 보드에서 동작하고 9개 코스 프로젝트가 붙어 있다. 운영체제 수업에서 ‘작지만 전체 구조가 보이는 코드베이스’가 필요했던 사람에게 꽤 반가운 자료다.

open-source

이맥스가 Git 대신 Bazaar를 붙잡았던 6년짜리 오픈소스 드라마

이맥스는 2008년 CVS에서 벗어나면서 Git 대신 GNU 프로젝트인 Bazaar를 선택했고, 이 결정은 성능 벤치마크와 개발자 반발을 압도한 정치적 판단에 가까웠다. Bazaar는 느리고 유지보수도 흔들렸지만, GNU 패키지는 GNU 도구를 써야 한다는 원칙 때문에 전환은 2014년까지 미뤄졌다. 결국 ELPA 브랜치 문제와 Bazaar 개발 중단, 변환 스크립트 준비 끝에 이맥스는 Git으로 옮겨갔다.

open-source

현대차·기아, 오픈소스 특허 방어망 넓혀 소프트웨어 중심 차량 전환 준비

현대차·기아가 오픈소스 소프트웨어 특허 분쟁을 줄이기 위해 글로벌 특허 네트워크 OIN 2.0에 가입했다. 소프트웨어 중심 차량, 클라우드, 커넥티드 서비스처럼 오픈소스 의존도가 큰 영역에서 법적 리스크를 미리 관리하려는 움직임이다.