나무모에 미러 (일반/어두운 화면)
최근 수정 시각 : 2025-09-14 00:16:00

COSMOSOS



운영체제
Unix
파일:Finder 222.png macOS
파일:Linux 로고.svg Linux파일:Windows 아이콘 2021_화이트.svg Windows
DOSDR-DOS · 파일:MS-DOS 아이콘.svg MS-DOS · 파일:FreeDOS 로고.svg FreeDOS · K-DOS
기타실시간 운영체제 · 파일:퓨시아 아이콘.svg파일:퓨시아 아이콘 화이트.svg Fuchsia · TempleOS · ReactOS · BeOS · 하이쿠 · 파일:attachment/OS/2/os2_logo.png OS/2 · CP/M · 모바일 운영체제 · OpenVMS · MenuetOS(Kolibri OS) · Pintos · Qubes OS · COSMOSOS(AuraOS) · Knix · OS/2025
취소선 처리된 배포판은 개발 중단된 배포판.

파일:cosmosos.png
1. 개요2. 설치 방법3. 코딩4. 특징
4.1. 파일 시스템4.2. 소리4.3. 네트워크
5. 드라이버6. XSharp7. IL2CPU8. 버전9. 장점10. 단점11. 정말 운영체제를 만들고 싶다면

1. 개요

C# Open Source Managed Operating System, COSMOS

C#[1]으로 운영체제를 제작할 수 있는 개발 키트로 운영체제 개발에 필요한 각종 시스템 라이브러리를 제공하며 컴파일 시 IL2CPU를 통해 C# 코드를 XSharp로 번역하고 기계어로 컴파일한 후 그 결과물을 담은 부팅 가능한 ISO 파일이 만들어진다. [2]

IDE는 윈도우 기준 Visual Studio를 사용하며, 기타 운영체제에선 제약이 없다[3].

2. 설치 방법

공식 위키에서 확인 할 수 있다.

유저 킷과 데브 킷으로 나뉘는데 데브 킷이 좀 더 많은 기능을 지원한다.[4] 기본적으로 .NET Core 6.0 및 .NET 프레임워크 4.0[5]가 필요하다.

유저 킷은 일반적인 프로그램 개발자용인데에 비해 데브 킷은 좀 더 섬세한 개발자에게 권장된다.[6]

3. 코딩

개발 킷을 설치한 후 Visual Studio의 프로젝트 생성에서 COSMOS가 나오게 되는데 이를 선택한 후 만들면 된다.[7]

처음 프로젝트가 만들어지면 Kernel.cs라는 파일만 있고 기본적인 코드가 입력되어 있다. 이후 실행하면 빌드가 시작된 후 가상머신을 실행하여[8] 완성된 운영체제를 실행하게 된다. 또한 디버깅이 가능한데, 디버그용으로 Visual Studio에 메시지를 보내거나, 충돌 알림, 커널 패닉 알림, 심지어는 코드 실행 중간에 멈추는 것까지 가능하다.[9]

CGS라는 코스모스 그래픽 인터페이스가 내장되어 있으나 기본적으로 CLI 기반이며 그래픽을 사용하려면 별도의 코딩이 필요하다.

깃허브[10], 디스코드[11], 유튜브 등에는 다양한 강좌들이 있으므로 어떻게 만들어야 할 지 모른다면 참고하자.

4. 특징

4.1. 파일 시스템

파일 시스템은 개발 중이라 불완전하지만 FAT[12], ISO9960[13]를 사용할 수 있으며 파일 시스템들을 관리하기 위해 Virtual File System (VFS, 가상 파일 시스템)이 사용된다. 파일 시스템을 사용하기 위해서는 먼저 초기화[14]한 후 VFS에 등록하는 과정이 필요하다. #

CosmosOS의 경로 형식은 MS-DOS와 유사하지만 드라이버 문자는 영문자가 아닌 숫자가 사용된다. 이 숫자는 드라이브의 ID이며 0부터 시작한다.

4.2. 소리

CAI 코스모스 사운드 인터페이스가 내장되어 있다. (AC97, 사운드블레스터16 호환기기만 지원)

4.3. 네트워크

기본적인 DNS/IPv4 인터페이스가 존재한다. [15]

5. 드라이버

기본 내장된 드라이버로는 등등이 있고, 만약 원한다면 CosmosOS를 사용하는 개발자가 더 만들 수도 있다.

6. XSharp

파일:상세 내용 아이콘.svg   자세한 내용은 XSharp 문서
#!if (문단 == null) == (앵커 == null)
를
#!if 문단 != null & 앵커 == null
의 [[XSharp#s-|]]번 문단을
#!if 문단 == null & 앵커 != null
의 [[XSharp#|]] 부분을
참고하십시오.
XSharp은 CosmosOS에서 만들어 사용하는 C#처럼 다루기 쉬운 어셈블리어의 일종이다.

7. IL2CPU

파일:상세 내용 아이콘.svg   자세한 내용은 IL2CPU 문서
#!if (문단 == null) == (앵커 == null)
를
#!if 문단 != null & 앵커 == null
의 [[IL2CPU#s-|]]번 문단을
#!if 문단 == null & 앵커 != null
의 [[IL2CPU#|]] 부분을
참고하십시오.
IL2CPU는 C#/VB.NET 코드를 XSharp으로 바꿔주는 툴로, CosmosOS에서 만들고 사용한다.

8. 버전

파일:상세 내용 아이콘.svg   자세한 내용은 COSMOSOS/버전 목록 문서
#!if (문단 == null) == (앵커 == null)
를
#!if 문단 != null & 앵커 == null
의 [[COSMOSOS/버전 목록#s-|]]번 문단을
#!if 문단 == null & 앵커 != null
의 [[COSMOSOS/버전 목록#|]] 부분을
참고하십시오.

9. 장점

코딩하기 쉽다. C#[21]을 기본 언어로 사용하여 기존 C나 어셈블리로 코딩하는 것보다 훨씬 쉬우며 GUI나 네트워크 드라이버도 지원하기 때문에 웬만한건 다 만들수 있다. 심지어는 멀티테스킹도 지원하는 라이브러리가 있다. SATA도 라이브러리가 있고, 무려 유니코드도 전용 라이브러리가 있다.

10. 단점

아직 개발 중인지라 예기치 않은 버그가 발생할 수 있다. Issues에서 확인하면 버그 이슈들이 많다.

특히 VFS, 파일 시스템 같은 경우 옛날 기기 (IDE 하드디스크)만 지원해 SATA로 실행은 힘든데 나머지 USB/NVME/SSD는 안된다로 보면 된다.[22]

C#를 사용하므로 저수준의 코딩이 어렵다는 것이 문제다. Plugs로 대충 할 수는 있지만 세세하게는 못한다. 따라서 바이너리 프로그램 실행을 만드는 것도 어렵다.[23][24][25]

11. 정말 운영체제를 만들고 싶다면

사실 이 킷은 운영체제 개발을 진지하게 고민하고 공부하고 싶다면 쓰지 않아도 된다.
제한이 너무 많고, 실제로 운영체제 이론 (Paging, GDT 등등)을 배우기도 힘들기 때문이다.
따라서 정말로 OS를 제대로 만들고 싶다면 어셈블리어랑 C에 대한 지식을 완전히 쌓은다음 책 등을 통해서 개발을 해야 한다.
[1] 커널 부분은 C#로 개발되어 있지만 .NET 언어라면 전부 가능하다. 즉 VB.NET, F# 등으로도 만들 수 있다.[2] 여기서 Plugs라는 기능을 사용하는데, 이 기능은 시스템 라이브러리를 어셈블리어로 바꿔준다. 하지만 당연하게도 모든 기능의 Plug가 존재하지는 않는다.[3] 윈도우에서도 당연히 다른 IDE를 사용할 수는 있다.[4] 유저킷은 안정적이고 데브킷이 업데이트를 많이 한다. Git에서 다운받아 빌드하는 형식이다.[5] Windows[6] 현재는 유저 킷이 업데이트가 밀린 관계로 데브 킷이 사실상 필수이다.[7] 리눅스 또는 macOS등의 Unix 기반 운영체제의 경우 닷넷 CLI 도구로 생성이 가능하다.[8] VMware Player, VMware WorkstationQEMU를 지원한다. 다만 VirtualBox를 사용해도 초반에는 별로 상관 없다.[9] 다만 디버깅 기능은 VMware를 사용하고 디버깅 옵션이 켜져있어야만 가능하다.[10] 자세히는 https://cosmosos.github.io이다.[11] 기존 Gitter.im을 사용하였다.[12] 사실상 기능 면에서는 FAT32만 지원된다.[13] DVD/CD에서 사용하는 파일 시스템으로 읽기만 가능하다.[14] 윈도우 등 다른 운영체제에서 포맷한 것은 작동하지 않고, CosmosOS에서 직접 초기화해서 사용해야 하는데 초기화 시 절반의 확률로 디스크가 손상된다...[15] 현재 CosmosHTTP를 사용하거나 직접 코드를 작성해 HTTP 연결을 할 수 있는 정도이. 브라우저 엔진은 만들거나 디스코드에서 일부 사용자가 제작한 것을 다운로드해야 한다.[16] 현 시점에서는 Multiboot2 프레임버퍼 태그만 지원.[17] 대부분의 해상도가 지원지 않음.[18] ISO9660[19] 실질적으로는 FAT32만 지원된다.[20] 거의 Cosmos가 출시했을 때부터 포함되어 있었으나 현재는 비활성화 되어있다.[21] 설명한 듯이 XSharp 또한 지원한다.[22] 특정 라이브러리를 사용하여 사용까진 가능하다.[23] 어렵긴 하지만 elf파일을 구동하는 구현이 있긴 있다.[24] IL2CPU 설정을 조금 건들이면 C, C++ 코드도 사용가능하다.[25] 사실 이건 X#을 사용하면 일부 해결되는 문제다. 자세한 내용은 XSharp 문서 참고.