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 |