MinOS 프로젝트 소개
2024년 12월 10일
프로젝트 시작 계기 #
나만의 프로젝트를 하고싶다!!
요즘 megayuchi 아저씨의 유튜브를 자주 보는데 항상 부러웠던 것이 있다.
이 아저씨는 언제부터 만들었는지는 모르겠지만, 몇 년 동안 걸쳐서 자기만의 엔진을 만들었고 그 엔진 위에서 직접 상호작용이 가능하며 여러 사람들이 즐겨주는 자기만의 세상을 만들었다.
뿐만 아니라 지속적인 업데이트를 하면서 연구한 기술들을을 적용하는 결과물로써의 역할도 하게 만들었다.
나도 나만의 Hello World 를 갖고 싶지만, 게임 개발자가 아니기 때문에 현실적으로 게임 엔진을 만드는건 너무 비효율적이라는 결론이 났다.
그렇다면 나는 어떤걸로 나만의 프로젝트를 만드는게 적절할까?
나는 안드로이드 보안과 관련된 일을 하고있다.
안드로이드의 arm 아키텍쳐부터 TEE, 커널, 프레임워크 등 운영체제 전반적인 이해가 필요할 때가 많기 때문에 이 프로젝트로 나만의 Hello World를 구현하기로 결정했다.
프로젝트 소개 #
위 사이트에서 여러 운영체제를 찾아보다가 MikanOS (0부터 시작하는 OS자작 입문 - 우치다 코타) 를 선택했다.
한국어로 된 운영체제 개발 관련 책을 찾다보니 박주항이라는 분이 운영체제 개발에 미쳐있는 듯한 느낌을 받을 수 있었다.
일단 사이트의 저자이고, SKYOS를 설명한 C++로 나만의 운영체제 만들기 책을 쓴 분이다. 책을 쓰고 MikanOS를 번역하고, 부족한 부분을 또 채워서 YuzaOS 라는 운영체제를 만드는 중으로 보여서 아주 신뢰가 갔다.
이런 사람에게 영감을 준 것으로 보이는 책이기도 했지만, 사실 다 떠나서 가장 중요한 부분은 Linux 베이스의 운영체제라는 점이였다.
Linux 베이스, 64bit 시스템인데 안드로이드를 공부하는 입장에서 선택하지 않을 이유가 없었다.
프로젝트 이름 #
이름은 MinOS 로 정했다. 전체를 구현할 수 없어 최소 기능의 운영체제라는 중의적 의미도 갖고 있지만 사실 미뇽의 Min이다.
어느 기점으로 정할진 모르겠지만, 기능의 큰 업데이트마다 미뇽 신뇽 망나뇽 진화하듯이 MinOS → SinOS → ManaOS 같은 이름의 변화를 둘 것이다.
프로젝트의 로드맵 #
MinOS #
- MikanOS의 전체 기능 구현 (2025.02.24 ~ 목표는 추석 이전에 완료) ❌
- WSL, M1 Mac 지원 ✅
SinOS #
khadas VIM4 (출시된다면 VIM5) 보드에서 작동 가능한 운영체제.
부트롬 제외하고 부트로더부터 모든 부트 체인을 만들 수 있고, 디버깅 포트도 있어서 디버깅도 쉬울듯. GPU도 Pixel과 같은 Mali 사용하고 있고, 개발자 친화적이라 좋은듯.
- 컴파일러? 앱 개발 환경?
- 가상메모리, 공유메모리?
- 계정 권한. 앱 샌드박스 환경?
- 메모리 보호체계?
- 디버깅 지원?
- arm 포팅? ❌
- ELF 지원
- 어소트락 Win32API 게임엔진마냥 엔진 흉내내는 프로젝트? wingdi.h 만 사용하는거면 GPU 가속 안씀
ManaOS #
여기서부터는 평생 갈 프로젝트로 넣고싶은 것들을 추가해보는 프로젝트가 될 것이다.
- Vulkan 포팅 -> 이거 정말 어려울 수 있음. SwiftShader라는 CPU 기반 Vulkan API 에뮬레이션이 있지만 성능이 구림. 성능좋은 CPU는 다를지도?
- 나만의 exploit db + 로드맵도 같이적는곳. manaos의 사이트 ❌
- 다른 운영체제의 어플리케이션을 실행할 수 있도록 구현. ❌
- Windows exe? ❌ 이건 정적링킹도 어려울수 있음. WINAPI(ntdll.dll, kernel32.dll, user32.dll)는 반드시 동적임포트된다. sanos, yuzaos, reactos 이런애들껄 보고 만들 수도 있을듯?
- Android APK? ❌
- 게임엔진? ❌
- doom
- 서바이벌 프로젝트
- RISC-V?