Post

빌드 안내

앞으로 부트로더에 대한 설명을 이어갈 것인데, 사실 부트로더에 대한 설명을 쓰다가 빌드 툴에 대한 안내가 있어야할 것 같아서 먼저 작성해 둔다.

코드 빌드 법

참고 문헌에 명시된 “64Bit 멀티코어 OS의 구조”책에서는 nasm과 cygwin을 사용한다. 윈도우 개발자를 배려한 것인데 사실 cygwin 설정법이 무지막지하게 귀찮다. 그래서 나는 window에 wsl을 설치하여 ubuntu를 올린 뒤 gcc 크로스 플랫폼을 설치하여 사용하였다.

설치법은 아래와 같다

설치법

NASM

1
apt -y install nasm

gcc

1
apt -y install gcc

copyobj

1
apt -y install copyobj

ld

1
apt -y install ld

binutils

1
apt -y install binutils

그 밖에 설정해야할 것들

이렇게되면 책에서 설명하는 부분과 많이 달라지는 부분이 생기는데 링커 스크립트와 Image를 만들어주는 ImageMaker에 대한 부분이 바로 그것이다. 이 부분은 아래의 코드를 따르면 된다. 참고 문헌에서 제공하는 ImageMaker.c의 코드를 일부 수정해야하는데 해당 내용이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h> // 윈도우는 io.h, linux는 unistd.h
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>

...

open( "Disk.img", O_RDWR | O_CREAT |  O_TRUNC ) // open 함수에 대한 명세가 바뀌어서 뒤에 인자들을 삭제해주어야한다.

...

open( argv[ 1 ], O_RDONLY ) // 해당 함수도 동일

...

open( argv[ 2 ], O_RDONLY ) // 해당 함수도 동일

차후 Make 파일에 대한 부분도 순수 window로 개발할 때와는 달라질때가 있어서 바꿔줘야하는 부분이 있다. 하지만 이 부분의 경우 참고 문헌에서 제공하는 소스 코드와는 달라질 수 있기 때문에 해당 부분에 대한 설명이 필요할때 추가적으로 덧붙여서 하겠다.

참고 문헌

  1. 64Bit 멀티코어 OS의 구조 - 한승훈 저
This post is licensed under CC BY 4.0 by the author.