문 OS
Moon OS는 X86_64 및 ARMV6 아키텍처를 대상으로하는 모듈 식 마이크로 커널입니다.

스크린 샷 :
Bootsplash :
VORBOSE BOOT :
커널 공황 : 
특징
- 여러 아키텍처 지원 :
- ACPI 지원이있는 X86_64 PC
- 4 레벨 페이징
- 스택 트레이스/기호 백트레이스
- 구역 버디와 슬래브 할당 기.
-
syscall 통한 시스템 호출 ( int 기반 시스템 호출에 대한 지원 없음)
- 닌텐도 3DS (ARMV6)
- I2C 드라이버
- Bootrom IVT
- 문자열을 디스플레이에 렌더링합니다
공유 기능 (두 아키텍처 모두 이것을 지원합니다) :
- 우스 산
- Parsable Boot Arguments (조용한/Verbose)
- 엘프 로더
- Primitive Scheduler (지금은 초과 근무 개선이 될 것입니다. 현재 My My 초점은 모든 것을 시작하고 실행하는 데 있습니다 (IPC, 서버, LIBC 등).
미래의 기능 :
- 스레드
- 카산
- ACPI
- smbios
- 멀티 태스킹
- 다음을 포함하되 이에 국한되지 않는 많은 하드웨어 드라이버
- 네트워크 카드
- 스토리지 드라이버
- GPU
- 그리고 훨씬 더
- 사용자 랜드를위한 LIBC
가까운 미래의 TODO 목록
- APIC를 더 잘 활용하십시오 (현재 타이머에만 사용됩니다)
- 가상 메모리 서브 시스템
- 새로운 물리적 메모리 관리자? (불안정한.)
이것은 현재 작업 중입니다.
- 스케줄러
- IPC
- 포팅 mlibc
- initrd
- 커널 감압 라이브러리에서 Initrd를 압축 해제합니다
- 기본 (빌드 머신) 프로그램을 제작하고 (괜찮은 모듈성을 유지하기 위해) ININTRD에 파일을 빌드하고 추가합니다.
- InitRD (TGA, BMP)에서 이미지를로드하고 렌더링합니다.
- ARMV6 포트를 훨씬 더 유용하게 만들기위한 새로운 추가 (SD 카드 드라이버, GPU, VBLANK)
디렉토리 연습 :
- LIBS/ - 유틸리티는 커널 (스케줄러, 메모리 관리자 등)과 밀접한 관련이 없지만 작동해야합니다.
- 커널/ - 커널 소스 코드
- 부츠/ - 부팅에 달이 필요한 모든 것
- 서비스/-특수 마이크로 커널 서버 + LIBC
- 사용자 공간/-부트 로더 파일, 구성, 모듈 등. 빌드 타임에 많은 파일이 자동으로 추가됩니다.
설치
건물 : (데비안 기반 배포판을 사용하고 있다고 가정)
필요한 도구 설치 :
- Sudo 적절한 업데이트
- Sudo apt 설치 GCC NASM QEMU-SYSTEM-X86 LIBFUSE DEV RUBY RUBY-RUBYGEMS
- Sudo Gem 설치 Ceedling # 테스트
커널을 빌드하십시오
-
make all - 커널을 구축하십시오 -
make run - QEMU에서 커널을 실행하고 필요한 경우 빌드하십시오 (x86_64 만 해당) -
make kvm -KVM으로 QEMU에서 커널을 실행하고 필요한 경우 빌드하십시오 (x86_64 만 해당) -
kvm 및 run 대한 명령 줄 옵션 :-
modern=yes 현대적인 기능을 모방합니다 (x86_64 만 해당)
아키텍처 구성 :
-
Make.conf 에서 두 가지 변수를 편집합니다.-
ARCH 와 BOARD . 허용 값은 의견에 문서화됩니다.
나의 여행 : (새로 온 사람들을위한 영감)
나는 항상 OS를 만들고 싶었으므로 언젠가는 OS를 만들기로 결정했습니다. 그것은 많은 일이라는 것이 밝혀졌고, 그 당시에는 정보가 너무 부족했고, 그곳에있는 정보가 거의 없기 때문에 (몇 달 동안) 오랜 휴식을 취한 시점까지 완전히 압도했습니다.
나는 OS 개발 학습 경험 중에 약 4 개의 "커널"을 작성했으며, 너무 압도적이기 때문에 시작할 때마다 GDT :/ (일부 부트 로더가 커널 항목이라고 불리는 부트 로더가있는 곳)를 지나갔습니다.
이 코드가 수행하는 작업과 최신 정보로 자신의 커널을 작성하는 방법을 이해하려는 초보자 인 경우 OSDEV Discord 서버 (OSDEV Wiki에 링크 된)에 가입하고 처음에는 어려워지면 포기하지 마십시오.
나는 약 8 개월 전에 글을 쓰는 시점 (한 달 동안 여러 달 동안의 휴식 시간으로)을 개발하기 시작했지만 여전히 배울 것들이 많이 있지만, try harder 사고 방식은 투쟁을 극복하고 지식이 부족하여 자습서 나 다른 프로젝트에서 코드를 훔치거나 복사 할 필요가없는 커널을 작성하는 데 도움이되었습니다.
나는 이것이 당신이 일이 너무 어려워 보일 때이 사고 방식을 사용하도록 영감을 주셨기를 바랍니다.
행운을 빕니다 ~ v01d (Tim).
특별한 감사
- Lowlevel.eu 또는 Osdev Wiki와 같은 웹 사이트에 감사드립니다. Github 및 Discord의 시원하고 유용한 OS 개발자도 있습니다.
마무리 터치 (내가 사용하는 리소스)
- https://www.cs.cmu.edu/~ralf/files.html
- https://ethv.net/workshops/osdev/notes/notes-3.html
- https://osdev.wiki (베어 본이지만 최신 Osdev Wiki)
- https://wiki.osdev.org