-
Notifications
You must be signed in to change notification settings - Fork 0
[RISC‐V 64] 1. Windows 개발환경 구축
uftrace를 RISC-V로 포팅하기 위해서는 RISC-V CPU로 동작하는 개발 보드를 구매하거나, 컴퓨터에 RISC-V 가상 환경을 구축하는 방법이 존재한다.
만약, RISC-V CPU로 동작하는 개발 보드를 구매하고자 한다면 VisionFive2 라고 하는 개발 보드를 해외 직구로 구할 수 있지만 여기서는 윈도우 컴퓨터에 RISC-V 가상 환경을 구축하는 방법을 기준으로 설명한다.
해당 내용을 조금 더 깔끔하게 보고자 한다면 1. RISC-V 포팅을 위한 개발 환경 셋팅.pdf PDF 파일을 다운로드 하여 봐도 된다.
- 공식 다운로드 페이지 : https://www.qemu.org/download/#windows
- 위의 링크로 접속하여 “Stefan Weil provides binaries and installers for both 32-bit and 64-bit Windows.” 내용에서 주황색 “64-bit”를 클릭한 뒤 최신 버전을 선택한다.
- 현재 23년 8월 3일 기준으로 최신 버전은 qemu-w64-setup-20230802.exe이다.
-
설치를 완료하였다면, 기본적으로 설치되는 경로는
C:\Program Files\qemu
이고, 해당 경로에 가면 아래와 같이 QEMU와 관련된 실행 파일이 존재하는 것을 확인할 수 있다.
- 제어판 → 시스템 및 보안 → 시스템 → 고급 시스템 설정 → 시스템 속성 창에서 고급 탭 → 환경 변수 버튼을 클릭하면 아래와 같은 창이 뜨게 된다.
-
이 작업은 윈도우의 명령 프롬프트에서 QEMU의 설치 경로로 이동하지 않더라도, 어느 위치에서나 QEMU 실행 파일을 실행할 수 있도록 하는 과정이다.
-
아래의 창에서 시스템 변수 목록에 “Path”를 찾아 더블 클릭 한 뒤 나오는 환경 변수 편집이라는 창에서 QEMU가 설치된 경로를 추가해준다.
-
-
윈도우의 명령 프롬프트(cmd) 창에서
qemu-system-riscv64 --version
명령을 실행하였을 때 아래와 같이 버전이 출력 된다면 정상적으로 설치가 완료된 것이다.
- 해당 환경을 구축하는 방법은 아래 링크의 글을 참조하였다.
-
Ubuntu의 각 버전 별 Preinstalled Image 링크
-
버전 옆에 LTS가 붙지 않은 링크는 지원이 중단되면 링크가 언제든지 사라질 수 있기 때문에 동일한 환경을 오래 사용하고 싶다면 LTS를 다운로드 받는 것이 좋다.
-
RISC-V Ubuntu 20.04.5 (LTS)
-
RISC-V Ubuntu 22.04.2 (LTS)
-
RISC-V Ubuntu 23.04
-
-
Ubuntu 버전 별 OpenSBI 패키지 링크
-
fw_jump.elf
파일을 추출하기 위해 사용됨 -
Ubuntu 22.04의 OpenSBI 1.3 패키지
-
Ubuntu 23.04의 OpenSBI 1.3 패키지
-
-
QEMU에서 Ubuntu 부팅 시 사용할 최신 U-Boot Qemu 패키지 링크
-
uboot.elf
파일을 추출하기 위해 사용됨 -
u-boot-qemu 2023.07 버전
-
- user-data.zip 파일 링크
-
Preinstalled Image 다운로드
- Preinstalled Image는 우분투를 설치하는 과정 없이 사용할 수 있도록 제공하는 디스크 이미지 파일로, 여기서는 Ubuntu 22.04 버전을 사용한다.
- 위의 링크를 참조하여 Ubuntu 22.04 버전의 Preinstalled Image를 다운로드하고 압축을 해제한다.
-
fw_jump.elf 추출
-
Ubuntu에서 제공하는 OpenSBI 패키지 파일에서
fw_jump.elf
파일을 추출해야 하며, 위의 링크를 참조하여 Ubuntu 22.04의 OpenSBI 1.3 패키지를 다운로드 한다. -
반디집과 같은 압축 프로그램으로 해당 패키지 파일을 열고, 파일이나 폴더 이름을 더블 클릭해 따라가면
/usr/lib/riscv64-linux-gnu/opensbi/generic
폴더에서 아래와 같이 fw_jump.elf 파일을 찾을 수 있다. -
fw_jump.elf
파일을 클릭한 상태에서 드래그 해 외부로 해당 파일을 추출한다.
-
-
uboot.elf 추출
-
Ubuntu에서 제공하는 U-Boot Qemu 패키지 파일에서
uboot.elf
파일을 추출해야 하며, 위의 링크를 참조하여 U-Boot Qemu 패키지를 다운로드 한다. -
반디집과 같은 압축 프로그램으로 해당 패키지 파일을 열고, 파일이나 폴더 이름을 더블 클릭해 따라가면
/usr/lib/u-boot/qemu-riscv64_smode
폴더에서 아래와 같이uboot.elf
파일을 찾을 수 있다. -
uboot.elf
파일을 클릭한 상태에서 드래그 해 외부로 해당 파일을 추출한다.
-
-
user-data.img 추출
- 위의 링크를 참조하여 user-data.zip 파일을 다운로드 받고, user-data.img 파일만 추출한다.
-
Qemu 가상 환경 자동 실행을 위한 배치 파일 생성
-
매번 복잡하고 긴 명령어를 입력하지 않도록 하기 위해 아래 내용에 적절한 값을 주고 파일명이 .bat로 끝나는 배치 파일을 생성한다.
qemu-system-riscv64 -M virt -smp [가상머신에 할당할 CPU 수] -m [가상머신에 할당한 메모리 용량 (MB단위) ] -nographic -bios fw_jump.elf -kernel uboot.elf -drive if=none,file=ubuntu-22.04.2-preinstalled-server-riscv64+unmatched.img,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -drive file=user-data.img,format=raw -device virtio-net-device,netdev=net0 -netdev user,hostfwd=tcp:127.0.0.1:[외부에서 가상머신 접속 시 사용할 포트 번호]-:22,id=net0
-
- 바로 복사 후 붙여넣기 해 사용할 수 있는 예시 내용은 아래와 같다.
- 시스템에 설치된 cpu의 코어가 6개 이상이고 메모리는 8GB 이상 설치된 경우
`qemu-system-riscv64 -M virt -smp 4 -m 8192 -nographic -bios fw_jump.elf -kernel uboot.elf -drive if=none,file=ubuntu-22.04.2-preinstalled-server-riscv64+unmatched.img,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -drive file=user-data.img,format=raw -device virtio-net-device,netdev=net0 -netdev user,hostfwd=tcp:127.0.0.1:3333-:22,id=net0`
- 시스템에 설치된 사양은 잘 모르겠고 그냥 알아서 동작하기를 원하는 경우
`qemu-system-riscv64 -M virt -smp 2 -m 4096 -nographic -bios fw_jump.elf -kernel uboot.elf -drive if=none,file=ubuntu-22.04.2-preinstalled-server-riscv64+unmatched.img,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -drive file=user-data.img,format=raw -device virtio-net-device,netdev=net0 -netdev user,hostfwd=tcp:127.0.0.1:3333-:22,id=net0`
-
정상적으로 따라왔다면, bak 폴더를 제외한 파일들이 아래와 같이 존재하여야 한다.
-
명령 프롬프트 창을 열어
riscv-ubuntu-22.04.bat
실행 (또는 자기가 지정한 배치 파일 이름으로 실행)- 배치 파일을 하면 아래와 같이 무언가가 출력 되며, 최종적으로는 리눅스 부팅 로그 화면이 떠야 한다.
- 다만, 부팅 로그가 끝난 뒤에도 뭔가 시스템을 초기화하는 과정이 실행되는데 이 상태에서도 로그인은 가능하다.
- id : ubuntu / pw : ubuntu
- 처음 로그인을 수행하면 비밀번호를 바꾸도록 강제하므로, 바꾼 비밀번호는 잘 기억해야 한다.
- Preinstalled Image는 앞서 서술한 것과 같이 우분투가 미리 설치된 디스크 이미지이며, 해당 파일의 크기는 4.5G로 되어있다.
- 해당 파일은 컴퓨터의 SSD나 하드디스크 용량과도 같은데 첫 부팅 후 apt update를 수행하게 되면 사용할 수 있는 여유 공간이 부족한 것을 확인하였고, 추후 새로운 패키지를 설치하거나 파일을 생성해야 하면 용량이 부족할 것이다.
- 따라서, 이에 대한 해결 법은 디스크 이미지 파일의 용량을 확장하는 것이다.
-
다행히
qemu-img resize [디스크 이미지 파일명] [원하는 용량]
명령을 사용하여 간단하게 디스크 용량을 확장할 수 있다.- 단, 디스크 용량 확장은 가상머신이 종료된 상태에서 해야하며 명령을 실행한 결과 성공하였으면 아래와 같이 “Image resized.” 라는 문자열이 출력된다.
- 파일의 크기를 확인해봐도 크기가 설정한 용량에 맞게 증가한 것을 확인할 수 있다.