본문 바로가기

xv6

xv6-riscv

더보기

tmi : xv6-public을 docker에서 실행하여 여러 시험을 한 결과 소스코드를 추가하여 헤더를 추가할 때 make 오류가 뜨며 실패하였습니다. 서울대학교 os 과제 중 하나인 snu-csl/xv6-riscv-snu: xv6 for SNU Operating Systems course (Fall 2023) (github.com) 이 소스코드를 활용하여 xv6 프로그램을 확장하는 것을 목표로 시도할 것입니다. 

XV6-RISCV?

xv6-riscv는 교육 목적으로 개발된 간단한 Unix 유사 운영 체제로, RISC-V 아키텍처에 맞게 조정된 버전입니다. 운영 체제의 원리를 이해하기 위한 교육 도구로 사용되며, RISC-V 프로세서에서 동작하도록 설계되어 있습니다. xv6-riscv를 통해 프로세스 관리, 메모리 관리, 파일 시스템 및 프로세스 간 통신과 같은 운영 체제 개념을 학습하고 이해할 수 있습니다.

 

설치

(WINDOW WSL UBUNTU 22.04 버전에서 실행하였습니다.)

우선 RISC-V "newlib" tool-chain을 설치해야 합니다.

git clone https://github.com/riscv/riscv-gnu-toolchain

 

그 다음 필요 패키지를 다운로드 해줍니다.

sudo apt-get install autoconf automake autotools-dev curl python3 python3-pip libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev ninja-build git cmake libglib2.0-dev

 

그 다음 riscv-gnu-toolchain 폴더로 이동 후 밑의 명령어를 입력합니다.

sudo ./configure --prefix=/opt/riscv

 

이 과정은 소프트웨어를 특정 디렉터리에 설치하기 위한 구성 스크립트를 실행하는 것입니다.

sudo make -j$(nproc)

-j$(nproc)는 현 시스템에서 사용할 수 있는 프로세서의 수를 반환합니다.

저는 -j8 기준으로 50분 정도가 걸렸으며 사양에 따라 2시간까지 걸릴 수 있습니다. 

 

make가 완료 되었다면 ls /opt/riscv/bin 을 입력했을 때

이렇게 나온다면 정상적으로 설치 된 것입니다. 

 

그 다음 PATH 설정을 하기 위해 ~/.bashrc에 들어가서

export PATH=$PATH:/opt/riscv/bin

위와 같이 입력합니다.

source ~/.bashrc

를 입력하여 export를 적용해줍니다.

riscv 를 입력하고 tap을 눌렀을 때 riscv64-unknown-elf- 이 뜬다면 성공한 것입니다. 

 

이제 xv6를 설치하겠습니다. 

git clone https://github.com/snu-csl/xv6-riscv-snu.git

clone 받은 후 xv6-riscv-snu 폴더에 들어가 git checkout pa5를 입력합니다. 

성공적으로 switched 되었다면 vim Makefile에 들어가서 STUDENTID에 원하는 ID를 입력해줍니다.

 

sudo apt install qemu-system-misc

패키지를 설치합니다.

 

make qemu

마지막으로 make qemu를 실행하면 

접속이 되었습니다!

 

터미널 접속 시 나가는 법은

ctrl + a 누른 후 x를 누르면 됩니다.

동시에 누르는 것이 아닌 ctrl + a 를 누르고 손가락은 땐 후 x를 눌러야 합니다.

 

 

'xv6' 카테고리의 다른 글

xv6-riscv (folder structure of xv6)  (2) 2024.02.01
xv6  (0) 2024.01.19