- RetrOS-32는 i386 아키텍처를 중심으로 만든 완전 커스텀 32비트 취미 운영체제이며, 그래픽·멀티태스킹·네트워킹을 포함함
- 커널·유틸리티·빌드 시스템은 C와 Assembly로 작성됐고, 사용자 공간 애플리케이션은 C++로 작성되며 Make와 Docker를 빌드에 사용함
- 실제 하드웨어 테스트 대상에는 Lenovo x240, Asus Eee PC 시리즈, Dell Optiplex 780, Samsung N150 Plus, Samsung NP-NC10, IBM Thinkpad a21p가 포함됨
- 실행 방식은 QEMU, copy.sh의 v86, 실제 하드웨어 부팅을 지원하며, 실제 기기에서는 GRUB ISO를 사용해
.iso파일을 USB나 CD에 구워 실행함 - 로드맵에는 부트로더, 선점형 멀티스레드 스케줄링, 파일시스템, 그래픽 창 관리자, 네트워크 스택, 사용자 공간 스레드, TCP 원격 가상 터미널 등이 구현 완료 항목으로 정리돼 있음
RetrOS-32 개요
- RetrOS-32는 i386 아키텍처에 초점을 둔 32비트 취미 운영체제 프로젝트임
- 프로젝트 설명은 그래픽, 멀티태스킹, 네트워킹을 갖춘 32비트 취미 운영체제라고 밝힘
- 시작일은 2022년 5월 12일로 적혀 있음
- 프로젝트 페이지는 Project OSHub page로 연결됨
로그인과 사용자
- 기본 사용자는 system, admin, guest 3개임
- admin 비밀번호는
admin이고, guest는 비밀번호가 없음 - 현재 admin과 guest 사이의 차이는 없음
- 사용자는
admin create <username> <password>명령으로 만들 수 있음
구현 언어와 빌드 구성
- 커널, 유틸리티, 빌드 시스템은 C와 Assembly로 작성됨
- 사용자 공간 애플리케이션은 C++ 로 작성됨
- 컴파일에는 Make를 사용함
- 크로스플랫폼 컴파일에는 Docker를 사용함
테스트된 하드웨어
- 테스트된 실제 하드웨어 목록은 다음과 같음
- Lenovo x240
- Asus Eee PC series
- Dell Optiplex 780
- Samsung N150 Plus
- Samsung NP-NC10
- IBM Thinkpad a21p
빌드와 실행 방법
- 크로스플랫폼 환경에서는 이미지 파일 컴파일에 Docker, 에뮬레이션에 QEMU가 필요함
- 네이티브 컴파일 의존성은 플랫폼별로 다름
- MacOS:
i386-elf-gcc,i386-elf-ld,i386-elf-g++ - Linux / WSL Ubuntu:
build-essential,gcc-multilib - GRUB를 부트로더로 쓰려면
grub2,xorriso,xxd도 필요함
- MacOS:
- Linux에서는 저장소 클론,
./debian.sh, Git 서브모듈 초기화,make compile,make img,make qemu순서로 빌드·실행함 - MacOS는 빌드 도구가 32비트 x86 코드에 의존하므로 현재 네이티브 컴파일이 불가하며, Docker가 가장 단순한 방법임
- Windows는 Docker 또는 WSL을 사용함
- 실행 방식은 세 가지임
- copy.sh v86에서
.img파일을 하드디스크 이미지로 업로드 - QEMU에서
make qemu또는qemu-system-i386 <image name>실행 - 실제 하드웨어에서
.iso파일을 USB나 CD에 굽고 GRUB ISO 사용
- copy.sh v86에서
프로젝트 구조
- 저장소 구조는 커널, 드라이버, 그래픽, 네트워크, 파일시스템, 라이브러리, 사용자 공간 앱, 테스트, 도구 디렉터리로 나뉨
boot에는 커스텀 부트로더와multiboot.ld가 있음kernel에는 주요 커널 소스와 아키텍처별 코드, 커널 스레드 코드가 있음apps에는 사용자 공간 애플리케이션과libcore.a,libgraphic.a,libnet.a가 있음net에는 네트워킹 코드가 있고,fs에는 파일시스템 관련 코드가 있음tools에는 빌드 도구와 스크립트가 포함됨
구현 완료 항목과 남은 작업
- 부팅 관련 항목은 커스텀 부트로더, GRUB 호환, Stage 2 부트로더가 완료됨
- 커널과 시스템 기능에는 다음이 포함됨
- 멀티스레드 선점형 스케줄링
- GDT와 TSS 기반 커널·사용자 공간 분리
- 인터럽트 처리
- IPC
- 시스템 콜
- 사용자 공간 스레드
- 드라이버와 하드웨어 관련 기능에는 PS/2 키보드·마우스, PIT, VESA
640x480x8, RTC, Serial, E1000, PCI가 포함됨 - 파일시스템과 저장장치 쪽에는 ATA IDE 드라이버, Ext2 유사 파일시스템, FAT16, 읽기·쓰기가 완료됨
- FAT16은 최대 32MB 파일을 지원함
- Atapi는 아직 미완료임
- 메모리 기능에는 32비트 가상 메모리, 커널
kalloc/kfree, 사용자 공간malloc/free가 포함됨 - 그래픽 기능에는 창 관리자, GFXLib, 더블 프레임버퍼 렌더링, 마우스 이벤트, 동적 리사이즈, 전체화면, 위젯 라이브러리가 포함됨
- Custom HTML to Widgets는 미완료임
- 네트워크 스택에는 Ethernet, IP, ARP, UDP, Socket API, Loopback 인터페이스, DHCP, DNS, TCP, netcat 스타일 명령이 완료됨
- Webserver, FTP, IRC, SSH, Telnet, HTTP, HTML은 미완료임
- 애플리케이션과 도구에는 터미널, 윈도 서버, 프로세스 정보, Finder, C 컴파일러/바이트코드 인터프리터, 바이트코드 실행용 커스텀 VM, 문법 강조 편집기, 계산기, 3D 게임, 텍스트 모드 Snake 게임, TCP 원격 가상 터미널, LZ 압축 라이브러리가 포함됨
- 제안 기능과 알려진 이슈의 전체 목록은 open issues에 있음
라이선스와 프로젝트 링크
- RetrOS-32는 MIT License로 배포됨
- 프로젝트 링크는 https://github.com/joexbayer/RetrOS-32임