-
핀토스 설치하기programming/pintos 2018. 12. 31. 16:17
스탠포드 대학교에서는 핀토스 프로젝트를 학교 서버에서 돌리게 한다. 서버 대신 로컬에서 돌리려면 몇 가지 코드를 수정할 필요가 있다. 또, 핀토스는 가상 환경을 만들기 위한 에뮬레이터로 Bochs와 QEMU를 모두 지원하는데, 스탠포드의 공식 핀토스 설명서는 주로 Bochs를 기준으로 하는 반면 서강대 과제는 QEMU를 이용한다. 일반적으로 QEMU가 속도가 훨씬 빠르다고 알려져 있기 때문에 나는 QEMU를 사용한다. 실행할 때마다 에뮬레이터를 지정할 게 아니라면, 핀토스 소스 코드를 고쳐서 디폴트 에뮬레이터를 QEMU로 설정하는게 편하다.
- 핀토스 코드를 다운 받아서 적절한 위치에 압축을 푼다.
- 다음 커맨드로 QEMU를 설치한다.
sudo apt install qemu
- 아무 디렉터리에서나 핀토스를 실행하려면 배시셸의 환경변수를 설정해야 한다. ~/.bashrc 에 다음 문장을 추가한다.
export PINTOSDIR=/핀토스를/설치한/디렉터리 export PATH=$PINTOSDIR/src/utils:$PATH
-
환경변수를 새로 반영하려면 배시셸을 껐다가 다시 켜든가, 다음 커맨드를 실행한다.
source ~/.bashrc
- $PINTOSDIR/src/utils/Makefile 을 열어서 "LDFLAGS = -lm"을 "LDLIBS = -lm"으로 수정한다.
- $PINTOSDIR/src/threads/, $PINTOSDIR/src/userprog/, $PINTOSDIR/src/vm/, $PINTOSDIR/src/filesys/에 각각 있는 Make.vars를 열어서 다음과 같이 구문을 수정한다.
- "SIMULATOR = --bochs" + "SIMULATOR = --qemu"
-
$PINTOSDIR/src/utils/와 $PINTOSDIR/src/threads/에서 각각 make를 실행해서 핀토스 커널을 컴파일한다.
make
-
$PINTOSDIR/src/utils/pintos 를 수정해서 QEMU를 디폴트로 고치고, 실행에 필요한 경로를 지정해야 한다. 103번째 줄을 다음과 같이 수정한다.
- $sim = "bochs" if !defined $sim; + $sim = "qemu" if !defined $sim;
259번째 줄을 다음과 같이 수정한다.
- my $name = find_file ('kernel.bin'); + my $name = find_file ($ENV{'PINTOSDIR'}.'/src/threads/build/kernel.bin');
-
$PINTOSDIR/src/utils/Pintos.pm 의 362번째 줄을 다음과 같이 수정한다.
- $name = find_file ("loader.bin") if !defined $name; + $name = find_file ($ENV{'PINTOSDIR'}."/src/threads/build/loader.bin") if !defined $name;
-
QEMU에도 여러 버전이 있는데 그중 하나를 특정해서 이용해야 한다. 64비트 시스템을 쓰니까 다음과 같이 지정한다.
cd /usr/bin/ sudo ln -s qemu-system-x86_64 qemu
이 상태에서 다음 명령어로 핀토스를 실행해본다.
pintos -v -- -q run alarm-multiple
아래 그림과 같이 실행이 완료되고도 프로세스가 종료되지 않는 경우가 있는 듯하다.
이런 경우에는 $PINTOSDIR/src/device/shutdown.c 의 103줄 아래에 다음 구문을 삽입한다.outw(0x604, 0x0|0x2000);
이 코드를 수정하면 커널을 다시 빌드해야 한다. $PINTOSDIR/src/threads 에서 다음 커맨드를 실행한다.
make clean; make
핀토스를 다시 실행시켜보면 다음과 같이 정상 종료된다.
이제 과제를 수행할 준비가 모두 끝났다. 스레드 구현부터 하나씩 시작하면 된다.
'programming > pintos' 카테고리의 다른 글
핀토스 코드 비교 정리 (0) 2018.12.31 핀토스 다시 하기 (0) 2018.12.28 댓글