3P by GN⁺ 1일전 | ★ favorite | 댓글 1개
  • RetrOS-32는 i386 아키텍처 기반 32비트 취미용 운영체제 프로젝트임
  • 그래픽, 멀티태스킹, 네트워킹 기능을 제공하며 실제 하드웨어에서도 테스트됨
  • C, C++, 어셈블리어로 작성되었고 Docker를 통해 크로스플랫폼 컴파일을 지원함
  • 사용자 시스템 구축, QEMU 에뮬레이션 실행, 실기기 부팅이 가능함
  • 프로젝트는 완성도 높은 커널 기능네트워크 스택을 갖추고 있으며 지속적으로 기능 추가 중임

RetrOS-32bit 프로젝트 소개

  • i386 아키텍처를 기반으로 한 32비트 취미용 운영체제 개발 프로젝트임
  • 그래픽 환경, 멀티태스킹, 네트워크 기능을 지원함
  • 프로젝트 시작일: 2022년 5월 12일

기본 로그인 정보

  • 기본 사용자 계정: system, admin, guest
  • admin 비밀번호는 admin, guest는 비밀번호 없음
  • 새로운 사용자는 admin create <사용자명> <비밀번호> 명령어로 생성 가능

주요 개발 언어 및 툴

  • C, Assembly: 커널, 유틸리티, 빌드 시스템
  • C++: 사용자 공간 애플리케이션
  • Make: 빌드 자동화
  • Docker: 크로스플랫폼 컴파일 환경 제공

테스트된 하드웨어

  • Lenovo x240
  • Asus Eee PC 시리즈
  • Dell Optiplex 780
  • Samsung N150 Plus
  • Samsung NP-NC10
  • IBM Thinkpad a21p

시작하기 (Getting Started)

필요한 도구 (Prerequisites)

  • Docker: 크로스플랫폼 컴파일
  • QEMU: 가상 머신 에뮬레이션
  • Linux/WSL 환경: build-essential, gcc-multilib, grub2, xorriso, xxd
  • MacOS: Docker 사용 필요 (32비트 x86 빌드 제한)

설치 방법 (Installation)

  • Git 저장소 클론
  • Git 서브모듈 초기화
  • make compile, make img 명령으로 이미지 파일 생성
  • make qemu 명령으로 QEMU 에뮬레이터 실행

MacOS와 Windows에서는 Docker 사용 권장

사용법 (Usage)

  • copy.sh v86 사이트에서 .img 파일 업로드하여 실행
  • QEMU로 직접 실행 가능: make qemu 또는 qemu-system-i386 <이미지명>
  • 실기기에서는 GRUB 기반 ISO를 USB/CD로 구워서 부팅 가능

프로젝트 구조 (간단 요약)

  • apps: 사용자 공간 애플리케이션
  • bin: 바이너리 파일
  • boot: 부트로더 소스
  • drivers: 커널 드라이버
  • fs: 파일 시스템 코드
  • graphics: 그래픽 처리 코드
  • include: 헤더 파일
  • kernel: 커널 주요 소스
  • lib: 라이브러리
  • net: 네트워킹 코드
  • rootfs: 루트 파일 시스템
  • tests: 테스트 코드
  • tools: 빌드 및 유틸리티 도구

개발 로드맵 (Roadmap)

  • 커스텀 부트로더 및 GRUB 호환 부트 완료
  • 멀티스레드 선점형 스케줄링커널/유저 공간 분리 구현
  • 네트워크 스택: Ethernet, IP, ARP, UDP, TCP, DHCP, DNS 완료
  • 그래픽스 시스템: 창 관리자, 위젯, 더블 프레임버퍼 렌더링 구현
  • 파일 시스템: Ext2 유사, FAT16 지원, 읽기/쓰기 가능
  • 향후 계획: 웹서버, FTP, IRC, SSH, Telnet, HTTP, HTML 지원 추가 예정
Hacker News 의견
  • 이런 프로젝트는 AI보다 훨씬 더 보기 좋음. 판매될 것 같진 않지만, 기술자가 창의적으로 작업을 하는 모습임
    • 10대 후반에 취미로 OS 개발을 많이 공부했음. 여전히 작은 커널을 만들곤 함 (최근에는 RISCV 작은 커널로 파트너에게 메시지를 출력했음)
  • 오랫동안 본 것 중 가장 인상적인 열정 프로젝트 중 하나임. 왜 직접 C 컴파일러를 작성했는지 궁금함
  • 기본 시스템 폰트는 더 압축된 변형이어야 함. 시스템이 훨씬 더 정제되어 보일 것임
    • 문자에 더 많은 가로 공간이 필요함이 명확함. 각 문자는 너비가 적어야 하고, 문자 간의 공간은 가능한 한 적어야 함 - 현재 사용 중인 폰트 크기와 해상도에서는 한 픽셀 정도면 충분함
    • 폰트 시스템에 대해 잘 모르지만, 고정 폭 비트맵 폰트라고 가정함. 코드베이스 내에서 이러한 변경을 하는 것이 얼마나 어려운지 모르겠지만, 너무 많은 작업이라면 걱정하지 말 것
    • 웹 OS 사이트를 처음부터 만들고 있으며, 최근 폰트 클래스를 완전히 다시 작성했음. 그래서 이 문제가 머릿속에 있음
  • 훌륭함! 오늘 다시 시작한다면 무엇을 다르게 할 것인가?
    • 하위 레벨 부분에 대한 언어 적합성에 대한 생각은? (예: C에 머무르거나 C++의 간단한 부분 집합 또는 새로운 언어 중 하나)
    • 다양한 리소스가 있는 상황에서 어떻게 다른 사람의 코드를 복사하지 않고 프로젝트를 흥미롭게 유지했는가?
  • 축하함! 1977년에 Commodore PET 2001을 사용했던 사람으로서 멋지게 보임. KolibriOS와 MenuetOSx64를 가지고 놀고 있었지만, 나만의 OS를 만들고 싶었음. 해냈음! 계속 전진하길 바람
  • 축하의 말을 전하고 싶음. 프로젝트에 깊은 인상을 받았음. 10대 때부터 OS 개발 팬이었고, 이 성과가 실현되는 것을 보니 기분이 좋음. 그래픽 서브시스템이 어떻게 초기화되는지 궁금함. 성공을 기원함
  • GNU처럼 크고 전문적일 것인가? :)
  • 이 컴파일러가 운영 체제와 어떻게 상호작용하는지 설명해 줄 수 있는가? 특히 구조체 같은 기능을 어떻게 처리하는지, 이 분야의 현재 제한 사항이나 계획된 개선 사항은 무엇인지 궁금함
  • 몇몇 프로젝트가 동시에 이정표에 도달하는 것이 흥미로움. 컴퓨터와 깊이 있게 작업하고 결과를 공유하는 사람들이 여전히 있다는 것이 안심이 됨
    • 계속 전진하길 바람
  • 에디터에서 Turbo C/QBasic의 흔적을 봄
    • 프로젝트에 찬사를 보냄