[PintOS project] 0.Installing PintOS : 프로젝트 시작하기

@developer/takealittle.time·2024년 11월 3일
0

KAIST PintOS Project

목록 보기
1/9


00. 작업 환경의 구축

  • 우선, PintOS 운영체제 프로젝트를 위해서는 ubuntu18.04 작업 환경이 필요하다. (이상 버전부터는 종속성 에러가 발생한다고 한다.)

  • EC2가 ubuntu18.04를 프리 티어로 지원하지 않기 때문에, WSL로 환경을 구축하시는 분, docker를 이용해 환경을 구축하시는 분 등등 개발 환경을 구축하는 데에 있어서는 개인의 입맛에 따라 갈렸다.
    나는 아래와 같은 형태의 작업 환경을 구축했다.

왜 굳이 이렇게 복잡하게 환경을 구축 했는지?

  • 우선은 학구적 호기심!
    docker도, EC2도. 여러 환경을 어쨌든 겪어보면서 친해지고 싶었다.
    docker 자체가 사실 리눅스 환경에 친화적이라고 알고 있었기 때문에 리눅스 위에서 돌리고 싶었기도 했다.

  • 함께 프로젝트 작업을 하시는 분들의 컴퓨터 환경이 모두 달랐다. windows를 쓰시는 분, iOS를 쓰시는 분 등등.
    EC2라는 원격 컴퓨터를 이용해 환경을 구축한다면, 통합 솔루션이 될 수도 있을 것 같았다.
  • 위와 같은 형태의 ubuntu18.04 작업 환경을 구축하는 방법론에 관해서는 아래 두 글에 작성 해 놓았다.

⚙️ AWS, EC2, docker를 활용한 ubuntu18.04 개발환경의 구축


01. 팀 git을 만들어 pintOS project 파일들 clone 해 오기

  • ubuntu18.04 환경 구축을 완료 했다면, 이제 본격적으로 pintOS 프로젝트를 받아 올 차례다.

  • git을 활용 해 팀 작업을 하는 데 있어 공부해보고 싶었던 니즈가 계속해서 있었는데, 좋은 기회다 싶어 팀 git 생성을 자처했다.
    여러 방법이 있겠지만 나는 Organization을 만들어 팀 git 저장소를 마련했다.

  • 아래 게시글에 해당 내용을 작성했다.

    ⚙️git을 통해 팀 협업하기::Organization과 Team Repository

    https://velog.io/@takealittletime/git을-통해-팀-협업하기Organization과-Team-Repository


02. pintOS 동작 확인하기

  • 개발 환경을 구축하고, 팀 git을 생성하고, PintOS clone까지 끝 마쳤다면, 이제 pintOS가 동작을 잘 하는지 확인 해 볼 차례다.

  • 다른 것보다도 qemu라는 에뮬레이터를 먼저 다운로드 받아야 한다. 각자의 컴퓨터 환경이 모두 다르기 때문에, 이qemu를 이용해서 pintOS를 굴린다.

sudo apt update
sudo apt install -y gcc make qemu-system-x86 python3
  • qemu 설치가 끝났다면, pintos_kaist 디렉토리에서 아래 명령어를 입력한다.
source ./activate
  • 이는 activate라는 실행 파일을 실행 해 pintos 라는 명령어를 속한 디렉토리에 상관없이 사용할 수 있도록 해준다.
    아무런 응답이 없다면 잘 실행 된 것이다.

Tip. 💡

1. source ./activate 자동 실행설정

  • 위의 source ./activate는 pintOS 환경에 새로 들어올 때마다 실행을 해줘야 하는데, home 디렉토리의 bashrc 문서에 이를 추가해주면 그럴 필요가 없다.
cd ~
code .bashrc
//위와 같이 home 디렉토리로 이동해서, bashrc 문서를 열어준다.
// 그리고 해당 문서 안에 아래와 같이 source ~activate를 적어준다.
//ex) pintos_kaist 폴더 경로가 home/pintos_kaist인 경우
source /home/pintos_kaist/activate

2. .gitignore 설정을 이용한 build 파일 배제

  • 앞으로 PintOS를 구현하면서 정말 많은 test를 실행하게 될 것인데, 이 때마다 build 폴더에 여러 build 파일들이 자동으로 생성될 것이다.
    이 때, 이 build 파일들까지 git 저장소에 push 되면 오히려 귀찮아질 수 있으므로, ~/pintos_kaist 폴더에 다음과 같은 .gitignore 파일을 추가 해 주자.
  • 내용에는 위와 같이 build/ 만 적어주면 끝이다.

* 이미 build 폴더를 추가해준 뒤라면?

git rm -r --cached threads/build/

  • 위의 명령어를 통해 이미 git에 추가된 threads/build 폴더를 삭제해주고, .gitignore 파일을 add 하고 commit, push 해준다.

3. pintos_kaist/tests/thread/mlfqs/Make.tests 파일 수정을 통한 테스트 시간 감축

  • 이제, threads/ 디렉토리로 옮겨 가 make check를 실행 해보자.

  • 한참을 실행되다 다음과 같은 결과가 나오면 잘 실행 된 것이다.

  • 위의 make check 명령은 현재 pintos 프로젝트에서 사용하는 테스트 파일들을 한 번씩 쭉 돌려보는 것이다.
    그래서 상대적으로 시간이 오래 걸린다.

  • 테스트케이스 하나의 경우에 대해서만 동작을 수행하고 싶다면,
    pintos/(프로젝트 명)/build 에 들어가서
    pintos -T (timeout이 걸리는 시간) -- -q run (테스트파일 명)을 수행해주면 된다.
    ex) pintos -T 10 -- -q run alarm-multiple: alarm-multiple 파일을 수행하며, 10초 뒤에는 무조건 종료하라. (무한 루프 방지)

  • 수행한 결과는 threads/build/tests/threads 디렉토리에서 확인할 수 있다.
    (.output 파일이 내가 짠 코드의 Test Case 결과이며, 틀렸을 경우 Expected Output과 Actual Output이 비교되어 출력된다.)

  • 테스트 케이스에 관한 정보나 코드는 pintos/tests/threads에 있다.


03. 회고 및 느낀 점

  • 벌써 PintOS 프로젝트 주차까지 왔다.
    학부 때부터 공부했던 컴퓨터 시스템과 운영체제에 대한 내용들을 직접 구현해보면서 몸으로 체감할 수 있는 기회다.

  • 일단은 무인도에 갑자기 툭 떨어진 기분이 좀 든다.
    굉장히 범위도 넓고 큰 코드 더미를 받았는데, 어떻게 시작해야 할지 감도 잘 안 잡히고, 좀 막막한 기분이다.
    하지만 동시에 그 만큼 설레이기도 한다.
    '아무나 할 수 없는' 경험이라고 생각한다.
    평생에 살면서 사용해볼 줄만 알았지, OS를 직접 구현해보리라고 상상도 해보지 못했다.
    컴퓨터 공학을 전공하고, 앞으로 개발을 함에 있어 기억에 남을 일인 것 만큼은 확실하다.

  • 열심히, 진지하게 임해보고 싶다.


* 참고 자료 / 이미지 출처

profile
능동적으로 사고하고, 성장하기 위한. 🌱

0개의 댓글

관련 채용 정보