티스토리 뷰

OS 개발

#1 개발환경 세팅 1

K.Nero 2018. 12. 21. 14:37

지금부터 이 글은 64비트 멀티코어 OS 원리와 구조 책을 보며 실습해 가는 과정을 적은 글입니다.
책이 발간된 지가 좀 됐기 때문에 예제들이 따라가기 힘든 부분이 있어 보인다. (플로피 디스크 사용 등)
이 글은 책에 나오는 소스들을 요즘 환경에 맞게 구성하면서 실행하는 것에 중점을 맞춰서 보면된다.
그래서 책의 내용은 거의 없고 소스와 환경 구성에 대한 설명만 있다. 그럼 이제 시작해 보겠다.

우선 gcc(GNU Compiler Collection)를 설치하고 빌드를 할 수 있는 환경이 필요하기 때문에 환경을 위해서 도커를 설치했다. (PC = 맥)
(https://www.docker.com/products/docker-desktop)

도커를 설치하고 우분투 이미지를 받는다. (버전은 자유롭게 선택)

docker pull ubuntu:16.04

이미지를 컨테이너로 실행을 시키는데 소스와 결과물을 공유하기 위해서 특정 폴더를 공유한다.(-v 옵션 사용)

docker run --name ubuntu -d -v /Users/kwonsm/Documents/workspace:/home/ubuntu -i -t ubuntu:16.04 /bin/bash

이제 컨테이너에 접속한다. (컨테이너 이름을 통해서 접속)

docker exec -i -t ubuntu bash

이제 컨테이너에 접속해서 gcc 를 설치해 준다. (gcc 명령어를 실행했을 경우 없다면 설치하면 되는데 기본 우분투 이미지에는 없다)

apt-get install gcc

그리고 vi 도 없기 때문에 설치해 준다.

apt-get install vim

우분투 컨테이너에서 /home/ubuntu 로 이동해서 테스트 소스를 작성한다. (내 로컬 경로와 연결을 해두었기 때문에 맥에서 소스를 확인할 수 있다.)

#include <stdio.h>

int main(int argc, char** argv)
{
printf("Hello, world\n");
return 0;
}

그리고 gcc 명령어를 통해서 컴파일 한다.

gcc -m32 -o test32 test.c (32비트 컴파일)

gcc -m64 -o test64 test.c (64비트 컴파일)

실행해 보니 아래와 같은 에러가 발생했다.

/usr/include/features.h:367:25: fatal error: sys/cdefs.h: No such file or directory

찾아보니 libc6-dev-i386 가 없어서 발생한 것이었다.
(https://askubuntu.com/questions/470796/fatal-error-sys-cdefs-h-no-such-file-or-directory/485634)

apt-get install libc6-dev-i386

그리고 생성된 실행파일을 실행하니 Hello, world 를 볼 수 있었다.

./test32

./test64

(만약 실행이 되지 않는다면 크로스 컴파일러가 필요하기 때문에 bintuils 가 필요하지만 ubuntu 는 이미 설치돼 있었다.)

어셈블러는 부팅할 때 잠깐 필요하다고 하며 개발을 위해 nasm(The Netwide Assembler) 을 설치한다. (gcc 와 마찬가지로 32, 64비트 모두 지원하며 오픈소스이다)

apt-get install nasm

마지막으로 오픈소스 에뮬레이터인 qemu 를 설치해 준다.

apt-get install qume

책 저자분이 버전을 0.10.4 버전에 최대한 맞춰야 한다고 했지만 구하기 힘들어 일단 최신버전으로 설치. 왠지 난항이 예상된다....

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함