본문 바로가기

MINT64 OS 개발

1. 개요 & 환경 구축

본 내용은 본인 공부에 대한 정리용으로, 자세한 내용이 포함되지 않음을 참고 바랍니다.

 


Ⅰ. 개요

  • 64비트 멀티코어 OS 인 MINT64 OS를 개발할 예정이다.
  • 큰 순서는 부트로더 -> 32bit OS -> 64bit OS 로 진행된다.
  • 64bit OS 개발 완료 후,
    멀티코어 관련 기능을 추가해서 최대 16개의 코어를 지원하게 확장하고 GUI시스템까지 구현할 예정이다. 

 

Ⅱ. OS 개발 시, 필요한 지식

1. 하드웨어 지식

  • 32bit에서 64bit로 바꾸는 작성이나 PC주변장치를 다루는 작업은 하드웨어에 대한 지식이 없으면 불가능하다.
  • 다행히, 대부분의 내용은 하드웨어와 함께 제공되는 스펙문서에 존재한다.
  • 스펙문서만 잘 구하면, 하드웨어를 모른다 하여도, 큰 문제가 발생하지 않는다.

2. 어셈블리어

  • 사람보다는 기계어에 가까운 프로그래밍 언어이다.
  • OS 개발 시, 어셈블리어가 필요한 경우는
    OS처음 부팅할 때, 프로세서에 동작 모드 설정할 때, 멀티태스킹의 일부분, 응용프로그램을 위한 시스템콜 등이다.

3. C언어

  • OS코드의 대부분은 C언어로 작성되므로, C언어를 모르면 OS개발이 불가능하다.
  • 기본 개념, 배열과 포인터의 관계, 타입 캐스팅에 약하다면, C언어 기초 먼저 다지는 것을 추천한다.

4. OS이론

  • OS 개발 초기 단계에는 거의 필요없지만, 개발 중반에는 OS전체의 방향 설계에 큰 역할을 차지한다.

5. 컴파일러, 링커, 도구 사용법

  • '컴파일러'와 '링커'의 경우, 작성한 소스코드를 부팅 가능한 이미지로 만들어주는 프로그램이다.
  • '도구'는 개발을 도와주는 통합개발환경(IDE) 프로그램부터 생성된 OS이미지를 실행할 가상머신 프로그램에 이르기까지 다양한 종류의 프로그램을 의미한다. 
  • OS이미지 생성시, 컴파일러와 링커에 복잡한 옵션을 설정해야 하며, 도구도 설정 작업에 필요한 요소이다.

 

Ⅲ. 환경 구축

  • 개발에 사용할 프로그램은 크게 GCC, NASM, 이클립스, QEMU 등이다.
    (이클립스 경우, 소스 파일 보기 위한 에디터이므로 다른 에디터를 사용해도 무관하다.)
  • 'ubuntu-18.04' 에서 환경 구축을 진행하였다.

1. GCC 설치

  • 설치한 GCC가 32bit와 64bit를 지원하는지 확인한다.
    • 32bit: gcc -m32 <file_name> <C_file>
    • 64bit: gcc -m64 <file_name> <C_file>

2. NASM설치

  • 설치: sudo apt-get install nasm

3. 이클립스 설치

  • 본 툴은 코드 보기용으로, 다른 툴을 사용해도 가능하다.
  • 필자는 visual studio를 사용하여 진행할 예정이다.

4. Qemu 설치

  • 설치: sudo apt-get install libncurses-dev qemu-system make

 

'MINT64 OS 개발' 카테고리의 다른 글

6. 32비트 보호 모드로 전환  (0) 2023.05.06
5. OS이미지 메모리에 복사  (0) 2023.05.06
4. 32비트 보호 모드로 전환  (0) 2023.04.13
3. OS이미지 메모리에 복사  (0) 2023.04.10
2. 간단한 부트로더 제작  (0) 2023.04.10