거북이의 쉼터

(2021.09.06) 핀토스 셋업 삽질 본문

코딩 삽질/KAIST PINTOS (CS330)

(2021.09.06) 핀토스 셋업 삽질

onlim 2021. 9. 6. 15:28

정말 오랜만에 생산적인 일을 시작했다. 오랜만이라고 해 봐야 1달 정도 논 것이 전부긴 하지만....

 

지난번 수업 때 cheating 의혹을 받아 CS330 OS 수업이 F처리가 되었기 때문에 다시 이 끔찍한 것을 짜게 된 것이 정말 유감스럽다. 또한 기존에 코딩했던 그대로 짤 수도 없는 것이 1년 전부터 pintos가 카이스트에서 마개조 당했다는 말을 들었기 때문이다. Document를 보니 스탠퍼드에서 보급되던 기존 형태와 비교하면 뭔가 추가 퀘스트들이 많이 더해졌고, 딱 봐도 복잡하게 설명된 것이 점수도 많이 줘서 이걸 안 할 수도 없고, 하려니 골머리가 썩겠다는 생각이 들었다.

 

아무튼 다시 한번 들어야 하는 수업이 된 이상 이번에는 제대로 기록을 남겨서 cheating 의혹에서 자유로워지고자 하기에 이 기록을 시작하게 되었다. 물론 이 수업을 다 듣기 이전에는 철저히 비공개 처리할 것이며, 이 기록은 오직 나만이 보기 위해서, 그리고 정말 혹시 모를 의혹에 대비하기 위해 만든 것임을 강조한다. 따라서, 이 일지들이 비공개에서 해제되는 때는 내가 이 수업에서 완전히 자유로워졌을 때이며, 혹시나 이 일지들이 공개로 풀린다 하더라도 다른 이들이 되도록 참조하지 않길 바란다. 그러다 cheating policy로 훅 가는 수가 있어...

 

우선 이 거대한 프로젝트에 앞서서 해야 할 것은 셋업 과정이다. 어느 환경에서 코딩을 하는지에 따라 번거로운 코드 탐색 과정이 훨씬 단축될 수 있기 때문에 이는 중요한 과정이다. 지난번에 pintos를 진행했을 때는 정말 아무것도 모르는 순수한 영혼답게 putty로 주어진 가상 머신에 접속해서 vim만으로 그 모든 것을 코딩했었다. 물론 vim에다가 plugin들을 떡칠하다시피 해서 어느 정도 에디터로서의 기능은 하도록 했다지만, 다시는 그렇게 하기는 싫기 때문에 이번에는 다른 접근 방법을 사용할 것이다.

 

윈도에는 리눅스를 사용할 수 있도록 해주는 WSL (Windows Subsystem for Linux)이라는 아주 좋은 프로그램이 있다. 또한 visual studio code를 사용하면 이 WSL에 바로 접속해서 에디팅을 하는 것이 가능하다. 번잡하게 에디팅을 하기 위해 가상 서버를 열고 닫을 필요가 없다는 것이다. 안 그래도 다년간의 경험을 통해 vmware workstation이 얼마나 많은 리소스를 잡아먹는지를 경험했었기에 이렇게 하면 번잡한 것들을 대부분 생략할 수 있을 것이라 생각했다. 그래서 이번 개발 환경은 WSL + visual studio code로 정했다. Document에 필요한 환경이 적혀 있기에 이를 참조하여 세팅을 하기로 한다. 우선 다음과 같이 적혀 있는 것을 볼 수 있다.

FYI. We have tested the pintos code and the solution on the Ubuntu 16.04.6 LTS with gcc (gcc (Ubuntu 7.4.0-1ubuntu1~16.04~ppa1) 7.4.0) and qemu-system-x86_64 (QEMU emulator version 2.5.0 (Debian 1:2.5+dfsg-5ubuntu10.43)), same as the given linux machine.

 

마이크로소프트 스토어에 WSL용 Ubuntu가 몇 개 있는데, 16.04는 없었다. 그래서 구글에 검색을 해 보니 이 사이트에서 16.04 버전의 Ubuntu를 받을 수 있어서 내려받아서 설치하고 WSL 2 버전으로 바꾸는 방법도 참조해 바꾸었다. Ubuntu 설치 이후, kaist pintos를 검색해 프로젝트용 레포지토리를 git에서 clone으로 받았고, 이후 수정 사항들이 내 git에 올라가도록 설정도 마쳤다. 그나저나 대체 왜 구글에서 kaist pintos를 치면 성인 인증이 뜨는 걸까...

 

역시 청소년에게 유해한 pintos. 우리 모두 pintos를 멀리합시다.

아무튼 이제 Ubuntu 내에서 gcc와 qemu를 받아야 한다. 깃 레포지토리에 존재하는 install.sh만 실행하면 되는 것처럼 보였는데, 해당 버전들이 존재하지 않는다고 하니 이를 수동으로 설치해야 하나 고민하다가 결국 유사한 버전으로 받기로 했다. gcc는 7.5.0 버전을 설치했고, qemu는 1:2.5+dfsg-5ubuntu10.51을 받았다. 사실 이렇게 결정한 이유가, install.sh에 아래와 같은 코드가 적혀있어서 gcc 7.5.0 버전도 괜찮을 것이라 생각했고, qemu 버전도 documen와는 다르게 명시되어 있어 선택한 qemu 버전 간에 그렇게 큰 차이가 있을 것이라 생각했지 않았다.

gcc --version | grep "7.5.0-3ubuntu1~18.04"
...
sudo apt-get -y install qemu=1:2.11+dfsg-1ubuntu7.36
qemu-x86_64 --version | grep "1:2.11+dfsg-1ubuntu7.36"

설치 방법은 이 사이트를 참조하였고 apt-cache policy 명령을 이용해 지원되는 버전을 찾아 설치 후 install.sh에 나온 방법대로 버전 연결까지 끝냈다. 아무튼 이렇게 필수적인 프로그램들의 설치와 더불어 build-essential들까지 설치를 끝마친 다음에 visual studio code를 설치했다. 다운을 받은 뒤에 확장에서 Remote - WSL을 찾아서 설치했고, 정상적으로 잘 작동하는 것을 확인할 수 있었다. 이제 이걸로 셋업은 끝이다.

 

이제 여기서 코딩을 하면 된다.

생각보다 단순히 끝난 것 같지만 여기도 많은 삽질이 있었다. WSL을 설치하고 gcc를 7.4.0 버전을 맞춰서 수동 설치해보려다 실패하고, add-apt-repository 명령으로 레포지터리를 추가하면 되지 않을까 열심히 구글링 해봤지만 찾은 것이 없어서 때려치우고 초기화한 뒤 7.5.0을 택했다. 시작부터 간단한 것이 없다.

 

이제 Document를 읽어보고, 뭘 해야하는지 청사진을 짜고, 본격적인 코딩과 디버깅을 반복하는 일정이 될 것이다. 다음 포스팅에서 보도록 하자.

Comments