티스토리 뷰
PintOs 시작하기
PintOs 소개
pintos가 뭐지?
PintOs
는 2004년 스탠포드 대학에서 만들어진 교육용 운영체제
입니다.
PintOs는 x86 아키텍처를 위한 운영체제 이며 Bochs나 QEMU같은 x86 시뮬레이터를 사용해서 작동합니다.
x86 아키텍처는 인텔이 개발한 마이크로 프로세서 계열과 이 프로세서들에서 사용한 기계어 명령어 집합을 의미합니다.
pintos에서 17가지의 과제를 수행하며 User Program, Thread, Virtual Memory, Filesystem 네 가지 주제에 대해 기본적인 내용을 실제로 구현하며 익힐 수 있습니다.
왜 PintOs를 사용할까?
그럼 왜 모든 소스가 공개된 오픈소스 운영체제이며 실제로 널리 사용되는 리눅스로 공부하지 않고 교육용 운영체제인 PintOs
를 사용해서 공부하는 것이 도움이 될까요?
Git
과 리눅스
를 만든 전설의 프로그래머인 Linus Torvalds가 1991년에 처음 리눅스 커널 소스를 공개했을 때 소스길이는 만라인 정도 였지만 전세계 프로그래머의 협업으로 현재 백만라인이 되었습니다.
Github에 등록된 Linus Torvalds의 linux 프로젝트를 보면 Git(2005년)은 리눅스보다 늦게 탄생했지만 현재 무려 60만번에 가까운 커밋이 있습니다.
운영체제를 깊이 이해하기 위해 실제로 각종 개념(쓰레드, 프로세스, 메모리 관리, 파일 시스템) 을 구현 해보는 것이 매우 중요하다고 합니다.
그러나 커널의 한 줄을 고치고 결과를 확인하고 싶더라도 백만 라인의 리눅스 커널을 컴파일해야하고 이를 위해 보통 컴퓨터에서 약 1시간 정도
의 시간이 필요합니다.
과제를 하다가 컴파일을 기다리는게 답답해서 한번 좋은 컴퓨터(AWS의 m4.4xlarge 인스턴스, 시간당 $0.7)에서 컴파일 해보니 1분도 안걸렸던 기억이 있습니다 :)
그래서 위와 같은 이유로 간단하고
, 이해하기 쉽고
, 컴파일도 쉬운
운영체제 핀토스(PintOS)를 사용합니다.
PintOs 실행 과정
실습에서 PintOs를 실행
하기 위해 특이한 과정을 거칩니다.
운영체제 Ubuntu
위에 Bochs 에뮬레이터
를 설치하고 그 에뮬레이터 위에서 PintOs를 실행합니다.
Bochs는 컴퓨터, 모바일에서 x86 환경의 에뮬레이션을 가능하게 하는 무료, 오픈소스 프로그램입니다. 윈도우, 리눅스, 안드로이드 등과 같은 운영체제를 구동할 수 있습니다.
만약 윈도우 운영체제 사용자가 실습한다면 가상머신으로 우분투를 구동하고 다시 그 우분투 위에서 Bochs 에뮬레이터를 통해 PintOs를 실행하는 과정을 거쳐야합니다.
PintOs 설치하기
원래 환경을 설정하고 설치하는 것이 가장 어려운것 같습니다.
환경을 아래에서 소개하는 버전으로 꼭 셋팅해주세요. 환경 셋팅을 권장과 다르게 해보신 분들은 아시겠지만 코드에 문제가 없어도 환경 문제로 계속 에러가 발생합니다. 저도 최신버전을 고집하다 에러가 계속 났고 버전 문제인지 모르고 코드를 계속 의심했습니다. 이 때 허비한 시간이 아직도 아깝습니다.
1. Ubuntu 환경 준비하기
본인의 환경에서 Ubuntu 환경 준비는 구글링으로 해결해주세요 :) 이를 친절하게 설명한 블로그가 많습니다. 이때 우분투 이미지 파일로 반드시 http://releases.ubuntu.com/12.04에서 ubuntu-12.04.05-desktop-i386.iso 를 설치해야합니다.
2. gcc-4.4 설치
우분투에 설치되어 있는 gcc의 버전이 너무 높으면 컴파일이 안되는 경우가 있습니다. 코드에 문제가 없는데 pintos과제를 하면서 make check가 통과되지 않아서 당황한적이 있습니다.. 미리 gcc 4.4버전을 설치해서 그 위험에서 꼭 벗어나야합니다.
아래 코드를 터미널에서 입력하여 gcc 4.4버전을 설치하고 PintOs를 컴파일 하기 위한 준비를 할 것입니다.
sudo apt-get install gcc-4.4
3.sudo mv /usr/bin/gcc-4.4 /usr/bin/gcc
3. bochs 설치
bochs 공식 홈페이지에 접속해서 bochs를 다운 받고 우분투에 설치합니다.
버전은 계속 변경되기 때문에 포스팅을 보는 시점에서의 bochs 최신버전을 다운 받아도 되지만 블로그에 업로드한 bochs-2.6.2 버전을 설치하는 것을 권장합니다.
공식 사이트에서 다운받기 번거로우면 제 블로그에서 업로드한 boch-2.6.2.tar.gz을 wget을 통해 쉽게 설치하실 수도 있습니다.
1.sudo apt-get install wget
2.wget -O bochs-2.6.2.tar.gz http://bowbowbow.tistory.com/attachment/cfile4.uf@210A50415719B98A24574F.gz
bochs 압축파일을 설치하신후 아래 명령어로 압축 해제합니다.
1.tar xvf bochs-2.6.2.tar.gz
이제 bochs 압축이 풀린 폴더로 이동한후 아래 명령어로 설치합니다.
1../configure --enable-gdb-stub --with-nogui
2.make
3.sudo make install
4. PintOs 설치
다른 경로에서 PintOs파일을 구할 수 있지만 편의를 위해 이 블로그에 업로드 했습니다.
아래 wget명령을 통해 쉽게 설치할 수 있습니다.
1.wget -O pintos.tar.gz http://bowbowbow.tistory.com/attachment/cfile9.uf@216A3B4956D876CB03A881.gz
설치한 파일의 압축을 아래 명령어로 해제합니다.
1.tar xvf pintos.tar.gz
이제 pintos/src/threads
폴더로 이동 후 아래 명령어로 컴파일 합니다.
1.make
이제 핀토스 설치 경로
/pintos/src/utils 에 있는 핀토스를 어느 위치에서는 쉽게 실행하기위해 환경 변수 설정을 할것입니다. 제가 핀토스를 설치한 경로는 /home/ubuntu/pintos입니다. 본인이 설치한 위치에 맞게 아래 과정을 따라해주세요.
bashrc
파일을 환경변수를 설정하기 위해 아래 명령어를 통해 vi로 엽니다.
1.sudo vi ~/.bashrc
마지막 라인에 아래와 같이 추가합니다. 제가 핀토스를 설치한 경로를 입력했기 때문에 본인이 핀토스를 설치한 경로에 맞게 변경해서 경로를 입력해주세요.
1.export PATH="$PATH:/home/ubuntu/pintos/src/utils"
이제 아래 명령어로 수정사항을 적용합니다.
1.source ~/.bashrc
이제 PintOs 설치를 마쳤습니다.
pintos/src/threads/ 경로에서 아래 명령을 실행했을 때 아래 사진과 같은 결과가 출력되면 정상적으로 PintOs가 설치된 것입니다(감동)
1.pintos -- run alarm-multiple
- Total
- Today
- Yesterday