
이번 학기 운영체제 수업을 듣고 있다. 재작년에 컴퓨터구조 수업을 들었을 때 너무 추상적이고 어려웠던 기억이 있다. 그래서 운영체제를 듣고 싶지 않았지만 전공 필수 과목이라 어쩔 수 없이 들었다. 하지만 컴퓨터구조 처럼 추상적이지도, 어렵지도 않은 것 같아서 재밌게 듣고 있다.
오늘은 교수님께서 주신 첫 번째 과제 xv6 Project에서 xv6 설치 과정에 대해 포스팅 해보겠다.

커맨드 창에
wsl --list --online
을 입력하면 위 사진처럼 리스트가 뜬다. 이 중 Ubuntu-24.04 파일이 있다면 우분투 설치가 되어 있는 것이다. 만약, 우분투 설치가 되어있지 않다면 Linux용 Windows 하위 시스템 설치되어 있지 않습니다. 라고 뜨면서 설치할 수 있는 커맨드가 나타나므로 보고 설치하면 된다.

교수님께서 알려주신 설치를 진행하려면 우분투 환경으로 바꿔야하는데 어떻게 하지? 생각하다가 그냥 커맨드 창에
ubuntu
를 쳐봤다. 근데 바뀌었다. 얻어걸렸다. 얏호~

cat /etc/issue
를 커맨드 창에 입력하면 우분투의 버전을 확인할 수 있다. cat가 뭔가 했더니 concatenate, 파일에 연결한다는 뜻이라고 한다.
여기서 시행착오가 있었다. GitHub에서 생성한 레포지토리의 SSH key를 가져와서 git clone을 해야되는데, 그 전에 패키지 설치를 해야한다. 그런데 자료를 제대로 안보고 바로 빌드를 해버려서 오류가 났다. 물론, 구글 검색을 해서 패키지는 바로 설치했지만 자료만 제대로 봤다면 바로 진행했을 텐데..
어쨌든 패키지를 설치하려면

sudo apt update
로 업데이트를 한 후,

sudo apt install -y build-essential expect qemu-system-misc gcc-riscv64-unknown-elf
를 입력하여 여러 패키지를 설치해준다.
물론 나는 이미 다 설치해놓은 상태여서 사진을 보면 알 수 있듯이, 이미 설치되어 있다고 뜬다. 내 커맨드 결과와 같지 않다고 해서 문제될 것은 없다. 에러만 뜨지 않으면 된다.
여기서 어려움을 겪었다. 1시간을 헤맸다. 'make', 'make qemu' 커맨드를 입력하는데 오류가 많이 떴다... 일단 이 얘기는 뒤에 가서 하고

git clone (SSH key 주소) p1
cd p1/xv6-riscv
를 입력하여 깃을 클론해주고, 클론된 파일에 접근해준다.
해당 깃이 이미 클론되어 있어, 사진에는 이미 존재한다는 문구가 떴다.

make
위 커맨드를 입력해서 make 해주면 되는데(뭘 make 하는지는 몰겟다ㅋㅋ)
Error: Couldn't find a riscv64 version of GCC/binutils.
에러가 떴다.
ㅠㅠ
바로 구글에 검색하니 stackoverflow 페이지를 찾을 수 있었고, 답변에서 좋은 사이트를 찾았다.
https://pdos.csail.mit.edu/6.828/2019/tools.html
그리고 이 페이지에서 알려준대로
riscv64-unknown-elf-gcc --version
을 입력했더니 무언가가 설치 안됐다고, 명령어를 입력하라고 해서 설치를 완료 했다. 알고 보니 내가 자료를 읽지 않고 설치하지 않았던 패키지(4번 과정) 때문이었다. 그래서 이 포스트 순서대로 잘 따라오신 분들은 오류가 나지 않았을 것이다.
이후
make qemu
를 입력했는데, qemu의 버전이 낮다고. 7.2.0 이상이어야 한다고 했다. 이것 또한 구글 검색과 제미나이의 도움을 받으며 30분 넘게 설치하고, 입력하고 했는데 도저히 7.2.0 이상 버전이 설치되지 않았다.. 왜지?
하라는 대로 다 했는데 안됐다.
sudo apt update
sudo apt install build-essential zlib1g-dev libglib2.0-dev libpixman-1-dev
wget https://download.qemu.org/qemu-7.2.0.tar.xz
tar xf qemu-7.2.0.tar.xz
cd qemu-7.2.0
여기까진 순조로웠다. 이후 './configure ...' 어쩌구 하는 커맨드를 입력하고 설치할 것을 다 설치해도 qemu의 버전이 6.2에서 머물렀다. 그런데 아까 찾았던 페이지에서 qemu 설치 방법이 있길래 시도해봤다.
./configure --disable-kvm --disable-werror --prefix=/usr/local --target-list="riscv64-softmmu"
make
sudo make install
cd ..
를 진행하고 (시간이 꽤 많이 걸린다)
make qemu
를 입력하니

드디어 떴따!!

그리고 밑에 뜨는 커맨드창에 'ls'를 입력하면 빌드 정보가 뜬다.
ㅠㅠ 힘들엇다