일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 셋업
- 내일부터
- PINTOS
- botw
- 자 이제 시작이야
- alarm clock
- 핀토스 프로젝트 4
- 핀토스 프로젝트 3
- 바빠지나?
- 파란 장미
- 핀토스 프로젝트
- Project 1
- 끝
- 글리치
- 노가다
- 아직도 실험 중
- 글루민
- 마일섬
- multi-oom
- 가테
- 핀토스 프로젝트 1
- 황금 장미
- 일지 시작한 지 얼마나 됐다고
- 제발흰박
- 핀토스 프로젝트 2
- Today
- Total
거북이의 쉼터
(2021.09.06) 핀토스 셋업 삽질 본문
정말 오랜만에 생산적인 일을 시작했다. 오랜만이라고 해 봐야 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를 치면 성인 인증이 뜨는 걸까...
아무튼 이제 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를 읽어보고, 뭘 해야하는지 청사진을 짜고, 본격적인 코딩과 디버깅을 반복하는 일정이 될 것이다. 다음 포스팅에서 보도록 하자.
'코딩 삽질 > KAIST PINTOS (CS330)' 카테고리의 다른 글
(2021.10.12) Priority Scheduling - preemption (0) | 2021.10.12 |
---|---|
(2021.10.06) Priority Scheduling 가이드라인 (0) | 2021.10.06 |
(2021.10.05) Alarm Clock - timer_interrupt() 수정 (0) | 2021.10.05 |
(2021.10.02) Alarm Clock - timer_sleep() 수정 (0) | 2021.10.01 |
(2021.10.01) Alarm Clock 가이드라인 (2) | 2021.10.01 |