Skip to content

[RISC‐V 64] 1. Windows 개발환경 구축

최기철 edited this page Aug 27, 2023 · 1 revision

1. RISC-V 포팅을 위한 개발 환경 셋팅

uftrace를 RISC-V로 포팅하기 위해서는 RISC-V CPU로 동작하는 개발 보드를 구매하거나, 컴퓨터에 RISC-V 가상 환경을 구축하는 방법이 존재한다.

만약, RISC-V CPU로 동작하는 개발 보드를 구매하고자 한다면 VisionFive2 라고 하는 개발 보드를 해외 직구로 구할 수 있지만 여기서는 윈도우 컴퓨터에 RISC-V 가상 환경을 구축하는 방법을 기준으로 설명한다.

해당 내용을 조금 더 깔끔하게 보고자 한다면 1. RISC-V 포팅을 위한 개발 환경 셋팅.pdf PDF 파일을 다운로드 하여 봐도 된다.

1. QEMU 설치

1-1. QEMU 다운로드 및 설치


  • 설치를 완료하였다면, 기본적으로 설치되는 경로는 C:\Program Files\qemu 이고, 해당 경로에 가면 아래와 같이 QEMU와 관련된 실행 파일이 존재하는 것을 확인할 수 있다.

    Untitled


1-2. 어디서나 QEMU 를 실행할 수 있도록 환경 변수 설정

  • 제어판 → 시스템 및 보안 → 시스템 → 고급 시스템 설정 → 시스템 속성 창에서 고급 탭 → 환경 변수 버튼을 클릭하면 아래와 같은 창이 뜨게 된다.
    • 이 작업은 윈도우의 명령 프롬프트에서 QEMU의 설치 경로로 이동하지 않더라도, 어느 위치에서나 QEMU 실행 파일을 실행할 수 있도록 하는 과정이다.

    • 아래의 창에서 시스템 변수 목록에 “Path”를 찾아 더블 클릭 한 뒤 나오는 환경 변수 편집이라는 창에서 QEMU가 설치된 경로를 추가해준다.

      Untitled 1

      Untitled 2

1-3. QEMU 설치 확인

  • 윈도우의 명령 프롬프트(cmd) 창에서 qemu-system-riscv64 --version 명령을 실행하였을 때 아래와 같이 버전이 출력 된다면 정상적으로 설치가 완료된 것이다.

    Untitled 3

2. RISC-V 64bit 아키텍처의 Ubuntu 가상 환경 구축

2-1. Ubuntu 가상 환경 구축 시 필요한 파일들의 링크 목록





2-2. QEMU를 사용한 RISC-V Ubuntu 가상 환경 구축

  1. Preinstalled Image 다운로드

    • Preinstalled Image는 우분투를 설치하는 과정 없이 사용할 수 있도록 제공하는 디스크 이미지 파일로, 여기서는 Ubuntu 22.04 버전을 사용한다.
    • 위의 링크를 참조하여 Ubuntu 22.04 버전의 Preinstalled Image를 다운로드하고 압축을 해제한다.
  2. 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 파일을 클릭한 상태에서 드래그 해 외부로 해당 파일을 추출한다.

      Untitled 4

  3. uboot.elf 추출

    • Ubuntu에서 제공하는 U-Boot Qemu 패키지 파일에서 uboot.elf 파일을 추출해야 하며, 위의 링크를 참조하여 U-Boot Qemu 패키지를 다운로드 한다.

    • 반디집과 같은 압축 프로그램으로 해당 패키지 파일을 열고, 파일이나 폴더 이름을 더블 클릭해 따라가면 /usr/lib/u-boot/qemu-riscv64_smode 폴더에서 아래와 같이 uboot.elf 파일을 찾을 수 있다.

    • uboot.elf 파일을 클릭한 상태에서 드래그 해 외부로 해당 파일을 추출한다.

      Untitled 5

  4. user-data.img 추출

    • 위의 링크를 참조하여 user-data.zip 파일을 다운로드 받고, user-data.img 파일만 추출한다.
  5. 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`

2-3. RISC-V 64bit Ubuntu 가상 환경 구축 결과 확인

  • 정상적으로 따라왔다면, bak 폴더를 제외한 파일들이 아래와 같이 존재하여야 한다.

    Untitled 6

3. RISC-V 64bit 아키텍처의 Ubuntu 가상 환경 실행

  • 명령 프롬프트 창을 열어 riscv-ubuntu-22.04.bat 실행 (또는 자기가 지정한 배치 파일 이름으로 실행)

    • 배치 파일을 하면 아래와 같이 무언가가 출력 되며, 최종적으로는 리눅스 부팅 로그 화면이 떠야 한다.
    • 다만, 부팅 로그가 끝난 뒤에도 뭔가 시스템을 초기화하는 과정이 실행되는데 이 상태에서도 로그인은 가능하다.
      • id : ubuntu / pw : ubuntu
      • 처음 로그인을 수행하면 비밀번호를 바꾸도록 강제하므로, 바꾼 비밀번호는 잘 기억해야 한다.

    Untitled 7

    Untitled 8


4. RISC-V 64bit Ubuntu 가상 환경의 디스크 용량 확장

4-1. 가상 환경의 디스크 용량을 확장해야 하는 이유

  • Preinstalled Image는 앞서 서술한 것과 같이 우분투가 미리 설치된 디스크 이미지이며, 해당 파일의 크기는 4.5G로 되어있다.
  • 해당 파일은 컴퓨터의 SSD나 하드디스크 용량과도 같은데 첫 부팅 후 apt update를 수행하게 되면 사용할 수 있는 여유 공간이 부족한 것을 확인하였고, 추후 새로운 패키지를 설치하거나 파일을 생성해야 하면 용량이 부족할 것이다.
  • 따라서, 이에 대한 해결 법은 디스크 이미지 파일의 용량을 확장하는 것이다.

4-2. 가상 환경의 디스크 용량 확장 방법

  • 다행히 qemu-img resize [디스크 이미지 파일명] [원하는 용량] 명령을 사용하여 간단하게 디스크 용량을 확장할 수 있다.

    • 단, 디스크 용량 확장은 가상머신이 종료된 상태에서 해야하며 명령을 실행한 결과 성공하였으면 아래와 같이 “Image resized.” 라는 문자열이 출력된다.
    • 파일의 크기를 확인해봐도 크기가 설정한 용량에 맞게 증가한 것을 확인할 수 있다.

    Untitled 9

Clone this wiki locally