[OS 개발 2] 준비 단계(1) - 제작 환경 구축
제작을 위한 준비
본격적으로 OS제작에 앞서 몇 가지 준비물이 필요합니다.
1. NASM
먼저 우리는 앞으로 OS를 제작하기 위해 어셈블리어를 자주사용하게 될텐데, 이를 CPU가 인식할 수 있는 기계어로 변환하는 작업이 필요합니다. 이미 OS를 제작한 선구자들이 이러한 과정에서 편의를 위해 NASM이라는 컴파일러를 제작했습니다. 사실 카와이 히데미씨가 제작한 NASK라는 컴파일러도 있긴 하지만 이는 사용하지 않기로 했습니다. 일단 아래 사이트에서 NASM을 다운받아 봅니다.
사이트에 접속하면 아래와 같이 링크를 통해 다운받으면 됩니다.
(참고로 저는 꽤 옛날 버전인 0.99버전을 받았습니다. 일부 블로거 분들 글을 보니 최신 버전이 호환문제로 나중에 무한 재부팅과 같은 문제를 일으키므로 2.5.0 이하 버전을 추천하기도 하네요. 저도 진행 과정에서 무한 재부팅 문제로 좀 골치아팠는데, 이는 이후 포스팅에서 기회가 되면 다루도록 하겠습니다.)
NASM 홈페이지
이후 아래와 같이 win32버전으로 zip파일을 내려 받습니다.
NASM 다운로드 페이지
내려받은 파일을 압축을 풀고, 다음으로 환경변수를 설정하도록 한다. 나중에 프로그램을 실행할 때, 어떤 경로에서든지 편하게 실행하기 위해서 입니다. 다음과 같이 환경번수를 실행합니다.
'내 PC' ->(마우스 오른쪽버튼)속성 -> '고급 시스템 설정' -> '고급' 탭 -> 환경변수
그리고 '시스템 변수'에서 다음과 같이 Path 항목의 변수 값의 가장 뒷편에 방금전에 내려받았던 NASM폴더의 경로를 입력합니다.
이때 반드시 기존의 경로와 구분짓기 위해 세미콜론(;)을 앞에 붙여줘야 합니다.
예) ;C:\nasm-2.11.08 ........
환경 변수 설정
이제 환경변수의 입력 값이 잘 적용되었는지 확인해보기 위해 CMD창을 실행하고 nasm -h를 입력하였을 때 다음과 같이 나온다면 정상적으로 nasm을 설치한 것입니다.
NASM 테스트
2. 가상 머신 설치
이제 가상 머신을 통해 우리가 제작하게 될 OS를 구동하기 위한 환경을 구축할 필요가 있습니다. 하지만 기존의 많은 블로거들이 VMware, Virtual Box, Hyper-V 등을 통해 가상환경을 구축했는데요, 저는 VMWare를 선택했습니다.
Hyper-V의 경우, VHD라는 가상 하드드라이브를 통해 구동되는데, FAT32와 같은 파일 포맷환경에서 부트로더를 이식하고 부팅해야합니다. 이번 OS 만들기 과정에서는 이러한 과정까지 추가되면 순수 OS의 구동 과정을 분석하기에 더 어렵고 이야기가 깊어질 것으로 보았습니다. 물론 FAT32 구조까지 분석해하죠. 따라서 Hyper-V 환경에서 테스트는 하지 않기로 했습니다. FAT32 구조까지 공부하고자 하는 분들은 이러한 환경에서 테스트하는 것도 좋을 것 같습니다. 이러한 환경에서 제작한 블로거가 있는데, 추후에 공유하도록 하겠습니다. 본 블로그에서도 기회가 되면 포스팅하도록 하겠습니다.
그리고 Virtual Box는... 그냥 노답이네요.
아무튼 VMWare를 사용하기로 했습니다. 버전은 이전 버전인 VMware Workstation 7 버전을 선택했구요, 무한 리부팅 문제로 이것 저것 다 사용해보다가 버전을 다운그레이드 했다는 점 참고바랍니다.
https://my.vmware.com/web/vmware/downloads
'OperatingSystem > Creating OS' 카테고리의 다른 글
[OS 개발 11] 인터럽트와 예외처리(1) IDT의 개념 (0) | 2016.02.11 |
---|---|
[OS 개발 10] 32비트 커널 로더(4) - 커널 구현과 분석 (3) | 2016.02.10 |
[OS 개발 9] 32비트 커널 로더(3) - GDT의 개념과 적용 (0) | 2016.02.06 |
[OS 개발 8] 32비트 커널 로더(2) - 리얼 모드와 보호 모드 (0) | 2016.02.05 |
[OS 개발 7] 32비트 커널 로더(1) - 커널과 디스크 구조 (0) | 2016.02.05 |
[OS 개발 6] 레지스터 세그먼트와 오프셋 개념 (0) | 2016.02.03 |
[OS 개발 5] 부트로더의 개념 및 제작, 실행, 분석 (4) | 2016.02.03 |
[OS 개발 4] 준비 단계(3) - 부트스트랩 과정 (0) | 2016.02.03 |
[OS 개발 3] 준비 단계(2) - 레지스터와 어셈블리 명령 체계 (0) | 2016.02.02 |
[OS 개발 1] 첫 시작 (1) | 2016.02.02 |