본문 바로가기

컴퓨터/OS

[OS] NachOS 설치 (binutils&gcc 구버전 설치법 및 NachOS 컴파일)

반응형

학교 운영체제 과제로 NachOS 환경 셋업 및 컴파일 과제가 출제 되었다.

NachOS가 워낙에 오래된 유물인 만큼 꽤 여러 에러를 겪었다...

users.cs.duke.edu/~narten/110/nachos/main/main.html

 

A Road Map Through Nachos

 

users.cs.duke.edu

공식 홈페이지상 1997년 스타트한 프로젝트임으로 대략 24년째 사용되는 교재같은 프로그램이다.

각설하고 세팅법

더보기

1.리눅스 상에서 돌릴것이기 때문에 가상환경을 세팅해준다. VMware나 VirtualBox등 리눅스를 지원하는 가상환경을 아무거나 설치해주자.

베이스 환경
버추얼 박스 설정

가상환경은 위와 같이 설정해주었다.

OS로는 UI가 이쁜 우분투를 사용해주었다. NachOS를 사용하려면 32비트 리눅스를 사용해 주어야 하여

구버전인 우분투 16.04 LTS의 32bit 버전을 사용해 주었다.

2.NachOS 같은 경우 MIPS 명령어를 시뮬레이션 하고 그 위에서 돌아가는 OS이기 때문에  MIPS 크로스 컴파일러 를 설치해주어야 한다. 호환성을 생각하여 구버전의 GCC와 binutils를 설치 해주도록 하자(크로스 컴파일러 세팅)

2-1-1. GCC와 binutils를 다운로드 해준다.

www.gnu.org/software/gcc/mirrors.html

 

GCC mirror sites - GNU Project - Free Software Foundation (FSF)

If you wish to host a new mirror site, please contact gcc@gcc.gnu.org. Include the URL of the gcc.gnu.org mirror area, the country/city where the mirror is located, and a contact e-mail address (and name if appropriate). If you limit access to your mirror

www.gnu.org

GNU 홈페이지에 가면 접근 가능한 미러페이지 주소가 있어 각 서버에 접속해서 원하는 버전에 GCC를 받을 수 있다.

나는 물리적으로 가장 가까운 일본의 츠쿠바 미러를 사용하였으며 wget명령어를 통하여 원하는 버전의 GCC를 받아주었다.

http://ftp.gnu.org/gnu/binutils/

 

Index of /gnu/binutils

 

ftp.gnu.org

또한 미러 페이지가 아닌 FTP 서버에서 직접 받을 수도 있다. binutils의 경우 직접 다운받았다.

GCC와 binutils의 경우 둘다 수업에서 제시해준 버전을 다운받아 주었다.

2-2. 다운받은 파일의 압축을 해제해준다.

TAR 파일의 경우 -xvf 옵션을 주면 해제가 가능하다. 

tar -xvf <TAR파일명.TAR>

각 옵션은

-x: 파일 해제

-v: 자세히

-f: 파일 지정(기본)

을 의미한다.

2-3.환경변수의 설정

크로스 컴파일러를 설치하며 옵션인자를 일일히 입력하기는 불편하고 틀릴 위험성이 있기때문에 환경변수를 등록해주자

export 명령어를 통하여 등록가능하며

 grep 필터링해서 확인해 보면 위와 같이 등록된것을 확인할 수 있다.

참고로 위와같이 설정해준것은 재부팅을 하면 초기화되니 참고하자

 

2-4.binutils 구버전의 설치

binutils 같은 경우 이미 우분투 16.04에 딸려오기 때문에 과제 환경에서 제시해준 버전의 binutils를 받아주자

위에서 압축해제한 binutils 폴더에 들어가주자

 configure파일을 실행시켜 makefile의 환경설정을 진행해주자

주요옵션은

--target: 빌드대상

--prefix: 설치 디렉토리 지정

등이 있다.

이후 make와 make install을 통해 makefile에 구성을 따라 설치해주면 된다.

 이후 나와보면 아까 환경변수에 지정해준 디렉토리가 생성되있는 것을 확인할 수 있다. 나는 버전 확인을 위해 binutils에 포함되어있는 strip바이너리를 이용하여 버전을 확인해 주었다.

2.11.2로 정상 설치!

binutils 구버전 설치 끝

 

2-5.GCC 구버전의 설치

gcc또한 현재 gcc-5가 우분투 16.04에 딸려오기 때문에 다른 폴더에 설치해줄 필요가 있다.

따라서 소스코드로 오는 tar파일 내용물을 빌드해주기 위해 빌드 폴더를 생성해주었다.

생성해준 exgcc-build 폴더에 들어간 뒤 소스코드가있는 디렉토리의 configure파일을 실행시켜준다.

 주요 옵션은

--target: 빌드대상

--prefix: 설치 디렉토리 지정

등이 있다.

빌드시 컴파일 에러를 방지하기 위해 ar 명령어를 통하여 libgcc.a와 libgcc2.a 가짜 파일을 만들어 주자.

ar 명령어를 아무것도 없는 파일을 의미하는 /dev/null에 걸어주어서 가짜정적라이브러리 파일을 구성하여 만들 수 있다.

이후 마찬가지로 sudo make와 sudo make install 명령어를 통하여 빌드해주면 된다.

마찬가지로 확인해보면 정상설치 완료!

3.NachOS 컴파일

cs.nyu.edu/courses/fall07/G22.2250-001/nachos-resources.htm

 

Nachos Resources

 

cs.nyu.edu

NachOS를 받아 줍시다.

마찬가지로 압축해제해줍시다.

makefile이 있는 code 디렉토리에서 make를 실행해주면 nachos를 컴파일 할 수 있습니다.

threads 디렉토리에 가보면 나초스가 컴파일 완료되어있는 것을 확인할 수 있습니다!

PROFIT!