- TacOS는 C와 어셈블리로 처음부터 작성한 자체 커널 기반의 UNIX-like 취미용 OS이며, DOOM과 여러 작은 사용자 공간 프로그램을 실행할 수 있음
- 커널에는 VFS, 스케줄러, TempFS, 장치, 컨텍스트 스위칭, 가상 메모리 관리, 물리 페이지 프레임 할당, Doom 포팅이 포함됨
- 실행 환경은 실제 하드웨어와 Qemu 에뮬레이터를 모두 지원하며, 실제 하드웨어는 제작자의 노트북에서 테스트됨
- 빌드와 실행은
git clone 후 make run으로 시작하며, Xorriso, Qemu, NASM, Clang 설치가 필요함
- TacOS는 실제 사용을 위한 완성도는 아니며, 취미용 toy OS로 여러 알려진 버그가 있음
TacOS 개요
- TacOS는 C와 어셈블리로 작성된 from-scratch OS이며, 자체 커널을 가짐
- UNIX-like 커널로 구성되어 있으며, DOOM과 여러 작은 사용자 공간 프로그램을 실행할 수 있음
- 주요 구성 요소는 다음과 같음
- VFS
- 스케줄러
- TempFS
- 장치
- 컨텍스트 스위칭
- 가상 메모리 관리
- 물리 페이지 프레임 할당
- Doom 포팅
실행 환경과 한계
- TacOS는 실제 하드웨어와 Qemu 에뮬레이터에서 실행 가능함
- 실제 하드웨어 테스트는 제작자의 노트북에서 수행됨
- 프로젝트는 실제 사용 가능한 완성형 OS가 아니라 취미용 toy OS임
- 여러 알려진 버그가 있음
빠른 시작
git clone https://github.com/UnmappedStack/TacOS
cd TacOS && make run
make run은 TacOS를 빌드하고 Qemu 에뮬레이터에서 자동 실행함
- 필요한 도구는 다음과 같음
빌드 명령
make run: TacOS를 빌드하고 Qemu에서 실행함
make qemu: 이미 빌드된 TacOS를 Qemu에서 실행함
make disk: 전체 디스크 이미지를 tacos.iso로 빌드함
make kernel: 시스템 핵심인 TacOS 커널을 빌드함
make libc: 표준 라이브러리를 빌드함
make userspace: 사용자 공간 애플리케이션을 빌드함
make initrd: 시스템이 부팅할 초기 램디스크를 생성함
make lint: 커널에 대한 린터 규칙을 실행함
make qemu-gdb: GDB가 연결된 상태로 TacOS를 Qemu에서 실행함
디버깅
- TacOS 테스트 중 GDB를 붙이려면
make qemu-gdb를 실행한 뒤, 다른 터미널에서 GDB 원격 타깃에 연결함
$ gdb -q
(gdb) target remote :1234
(gdb) file kernel/bin/tacos
(gdb) continue
- 커널을 디버깅할 때는
kernel/bin/tacos를 지정함
- 사용자 공간 프로그램을 디버깅할 때는
initrd/usr/bin/<program>을 지정함
라이선스와 기여 규칙
- TacOS는 Mozilla Public License 2.0을 사용함
- 기여는 열려 있지만, pull request 전에 issue를 열고 변경 사항을 할당받아야 함
- 단순 오타나 문법 수정만 담은 pull request는 병합되지 않음
- 커밋 메시지는
[component] change 형식을 따라야 함
- 관련 없는 여러 컴포넌트의 수천 줄 변경을 하나의 거대한 커밋으로 담은 pull request는 리뷰 대상이 되지 않음
커뮤니티
- TacOS 관련 업데이트와 OSDev 프로젝트 도움, 대화를 위한 Discord 서버가 있음