[1000줄 OS 구현하기] 시작하기

1. 출처

Operating System in 1,000 Lines | OS in 1,000 Lines

1000줄로 운영체제를 직접 구현할 수 있다고 한다.

운영체제를 공부할 겸 한번 만들어 보자.

실제로 Linux의 0.01 version이 8413 줄에 불과했다고 하니 충분히 가능할 것 같다.

글에 따르면 완성된 OS에선 기본적인 context switching, paging, user mode, a command shell, disk device driver, file read/write operations in C 등을 할 수 있다고 한다.

이 과정에서 가장 어려운 부분은 ‘디버깅’이라고 한다.

구현되지 않은 printf 없이 디버깅하는 방법을 배워야 한다.

충분히 재미있고 의미 있는 시간이 될 것 같다.


2. 개발환경 구성

일전에 구축한 Proxmox에 Ubuntu 가상머신을 생성한다.

이유는 맥에 불필요한 의존성들을 설치하기 싫어서다.

VSCode의 Remote Development를 활용해서 SSH를 통해서 원격으로 개발한다.

GitHub – ramen4598/MyOS: 1000줄로 운영체제 구현하기. 출처 : https://operating-system-in-1000-lines.vercel.app/en/

1000줄로 운영체제 구현하기. 출처 : https://operating-system-in-1000-lines.vercel.app/en/ – ramen4598/MyOS

Github에 새로운 Repo를 만든다.

/disk/*
!/disk/.gitkeep
*.map
*.tar
*.o
*.elf
*.bin
*.log
*.pcap

.gitignore를 추가한다.


3. 준비물

Getting Started | OS in 1,000 Lines

Ubuntu에 필요한 패키지를 설치한다.

sudo apt update && sudo apt install -y clang llvm lld qemu-system-riscv32 curl
  • clang: C 언어 컴파일러로, LLVM 프로젝트의 프론트엔드
  • llvm: 컴파일러 인프라스트럭처 프로젝트로, 다양한 프로그래밍 언어를 지원
  • lld: LLVM 프로젝트의 링커로, 오브젝트 파일을 실행 파일로 연결
  • qemu-system-riscv32: RISC-V 32비트 아키텍처를 에뮬레이션 하는 시스템 에뮬레이터
  • curl: URL을 통해 데이터를 전송하는 명령줄 도구
curl -LO https://github.com/qemu/qemu/raw/v8.0.4/pc-bios/opensbi-riscv32-generic-fw_dynamic.bin
Code language: JavaScript (javascript)
  • OpenSBI : RISC-V 시스템의 부팅과 초기화를 담당하는 펌웨어

댓글 남기기