운영체제 과목 과제로 이용되며 악명이 높은 xv6를 설치하고 실행해보자.
(사실 과제 서버에서는 필요한 패키지들이 이미 설치되어 있기 때문에 크게 문제가 될 것이 없다. 하지만 과제 서버에서는 VSCode 사용이 불가하다는 치명적인 문제가 있기에, 로컬 환경에서 xv6를 설치해보려고 한다.)
xv6 설치 환경으로는 Ubuntu 20.04 버전이 추천되지만, 본인은 Ubuntu 22.04
버전에서 설치를 진행해보겠다.
git clone https://github.com/mit-pdos/xv6-riscv.git
cd xv6-riscv
make qemu
제대로 설치 및 실행이 완료되었다면 아래와 같은 터미널 메세지를 확인할 수 있으며, ls
를 입력해 ls 명령어 실행 결과를 확인할 수 있다.
Ctrl+a
를 누른 후, x
를 눌러 xv6를 종료할 수 있다.
xv6 실행에 필요한 패키지가 설치되어있지 않은 상황이라면, 당연히 제대로 실행이 이루어지지 않을 것이다. 아래에서 xv6 실행에 필요한 대표적인 두 패키지 설치를 진행해보겠다.
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:canonical-server/server-backports
sudo apt update
sudo apt install qemu-system
설치 후 버전 확인
qemu-system-riscv64 --version
QEMU emulator version 9.0.2
버전이 설치된 것을 확인할 수 있었다.
RISC-V GNU Compiler Toolchain은 xv6 레포지토리의 README 하단에서도 설치가 필요함을 명시하고 있다.
You will need a RISC-V "newlib" tool chain from
https://github.com/riscv/riscv-gnu-toolchain, and qemu compiled for riscv64-softmmu.
sudo apt update
sudo apt-get install autoconf automake autotools-dev curl python3 python3-pip python3-tomli 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 libslirp-dev
git clone https://github.com/riscv/riscv-gnu-toolchain
cd riscv-gnu-toolchain
git submodule update --init --recursive newlib
sudo mkdir -p /opt/riscv
sudo chown $USER:$USER /opt/riscv
echo 'export PATH=/opt/riscv/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
./configure --prefix=/opt/riscv
make
설치 후 버전 확인
riscv64-unknown-elf-gcc --version
riscv64-unknown-elf-gcc (g04696df09) 14.2.0
버전이 설치된 것을 확인할 수 있었다. (설치 이후 레포지토리는 삭제해도 문제가 없다)