MinOS 프로젝트 소개

e9cf3c3d-c0fa-450f-a293-ede36bf46c32
e9cf3c3d-c0fa-450f-a293-ede36bf46c32

MinOS와 SinOS는 운영체제 내부 구조를 깊이 이해하고,
실제 기기에서 동작하는 OS를 직접 구현하기 위한 장기 개인 프로젝트입니다.

  • MinOS: x86-64 기반 실험용 운영체제 (MikanOS 기반 확장)
  • SinOS: 실제 기기에서 실행 (맥북프로 2012년형 mid)
  • ManaOS: 미상

본 프로젝트는 단기 결과물이 아닌,
5년 이상 지속적으로 발전시키는 개인 OS 연구 및 포트폴리오를 목표로 합니다.

프로젝트 계기

6599c1aa-3419-4abe-8f81-60915fef9da0
6599c1aa-3419-4abe-8f81-60915fef9da0

나만의 프로젝트를 하고싶다!!

요즘 megayuchi 아저씨의 유튜브를 자주 보는데 항상 부러웠던 것이 있다.
이 아저씨는 언제부터 만들었는지는 모르겠지만, 몇 년 동안 걸쳐서 자기만의 엔진을 만들었고 그 엔진 위에서 직접 상호작용이 가능하며 여러 사람들이 즐겨주는 자기만의 세상을 만들었다.

뿐만 아니라 지속적인 업데이트를 하면서 연구한 기술들을을 적용하는 결과물로써의 역할도 하게 만들었다.

4de94319-5798-439a-9b5d-80e09f41bd56
4de94319-5798-439a-9b5d-80e09f41bd56

나는 어떤 주제로 나만의 애완 프로젝트를 만드는 것이 좋을까?

이 프로젝트는 단기적인 결과물이 아닌, 향후 5년 이상 지속적으로 발전시키는 개인 프로젝트가 됐으면 했다. 나의 커리어 정체성을 나타내면서 내가 쌓아온 기술에 대한 포트폴리오로써 작동하게 하고싶었다.

그동안 다양한 보안 분야를 전전하며 내가 가장 하고싶은 일을 찾아나섰는데, 안드로이드 보안 솔루션 회사의 업무 경험 이후 운영체제 수준의 구조와 보안 로직에 흥미를 갖게 됐다.

많은 고민 끝에 현재 업무 능력 향상에도 큰 도움이 될거라고 생각해 안드로이드를 지향하는 ARM 기반 운영체제로 결정하게 됐다.

Roadmap & Features

1. MinOS (x86-64)

5f09261e-e944-4e8a-9f8b-354b5de80b28
5f09261e-e944-4e8a-9f8b-354b5de80b28

운영체제를 처음부터 끝까지 직접 만들어보는 것은 이번이 처음이었다.
부트로더부터 시작해 커널이 동작하기까지의 전체 흐름을 이해하기 위해, 학습 목적으로 여러 자료를 검토한 끝에 0부터 시작하는 OS 자작입문 (우치다 코타)을 선택했다.

Linux 스타일의 64bit 운영체제를 C++로 구현할 수 있다는 점이 이후 ARM 기반 Android like OS로 확장하기 위한 사전 학습으로 적합하다고 판단했다.

하지만 이 책의 내용을 따라하는 것 뿐만 아니라 MikanOS 코드를 베이스로 기능들을 확장해나가는 것이 목표이다.

  • :white_check_mark: MikanOS 커널 기본 기능 구현 (2025.02.14 ~ 2026.01.01)
  • :white_check_mark: WSL2 및 macOS(Apple Silicon) QEMU 환경 구축
  • :x: 멀티코어(Symmetric Multiprocessing) 지원 확장
  • :x: 그래픽 기능 추가 (mlx 포팅 목표)
  • :x: DOOM 포팅

2. SinOS (ARM64)

실제 arm 보드에서 실행되는 OS를 구현하는 것을 목표로 한다.
역시 다양한 하드웨어를 두고 고민해봤지만, radxa 사의 rock5b+ 보드가 오픈소스 레퍼런스도 많고, 개발자가 컨트롤하기 가장 좋은 보드라고 생각되어 결정하게 됐다.

개발 편의성을 위해 하드웨어 지원 레이어를 두고 qemu와 rock5b+ 모두에서 실행되는 Android like OS 를 구현하는것을 목표로 한다.

  • Boot Chain: Rockchip 전용 U-Boot 커스텀 및 커널 로더 구현
  • Kernel Core: ARM64 Exception Level(EL) 관리 및 가상 메모리 설계
  • Graphics: Mesa 오픈소스 드라이버 연동 및 프레임버퍼 제어
  • Security: 앱 샌드박스 환경 및 권한 모델 설계 (Android-like Security)
  • 컴파일러? 앱 개발 환경?
  • 가상메모리, 공유메모리?
  • 계정 권한. 앱 샌드박스 환경?
  • 메모리 보호체계?
  • 디버깅 지원?
  • arm 포팅? :x:
  • ELF 지원
  • 어소트락 Win32API 게임엔진마냥 엔진 흉내내는 프로젝트? wingdi.h 만 사용하는거면 GPU 가속 안씀

3. ManaOS (아직은 상상뿐)

여기서부터는 평생 갈 프로젝트로 넣고싶은 것들을 추가해보는 프로젝트가 될 것이다.

  • Vulkan 포팅 -> 이거 정말 어려울 수 있음. SwiftShader라는 CPU 기반 Vulkan API 에뮬레이션이 있지만 성능이 구림. 성능좋은 CPU는 다를지도?
  • 나만의 exploit db + 로드맵도 같이적는곳. manaos의 사이트 :x:
  • 다른 운영체제의 어플리케이션을 실행할 수 있도록 구현. :x:
    • Windows exe? :x: 이건 정적링킹도 어려울수 있음. WINAPI(ntdll.dll, kernel32.dll, user32.dll)는 반드시 동적임포트된다. sanos, yuzaos, reactos 이런애들껄 보고 만들 수도 있을듯?
    • Android APK? :x:
  • 게임엔진? :x:
    • doom
    • 서바이벌 프로젝트
  • RISC-V?

레퍼런스

ESC
Type to search...