지난 시간에는 RISC-V의 개념과 Arm코어와의 비교를 포스팅했습니다.
RISC-V #2 - RISC-V와 ARM 명령어 셋 비교
이번 포스트에서는 가상화를 통한 RISC-V를 부팅해보는 실습을 해보겠습니다.
가상화 도구란? 물리적으로 존재하는 컴퓨터가 아닌, 다른 컴퓨터가 만들어내는 가상의 컴퓨터로써 Host가 구현하고자하는 Geust의 하드웨어를 소프트웨어적으로 구현하는 도구이다.
1. x86계통
x86계통의 가상화 머신(Hypervisor)은 대표적으로 virtual box와 vmware 두 가지가 존재한다.
vmware는 무료버전과 유료버전이 존재하고 virtual box는 오픈소스(GPL)로써 무료로 배포되어있다.
2. 범용
x86계열과 저전력 프로세서를 범용으로 가상화할 수 있는 플랫폼으로 qemu가 존재한다.
오픈소스이며 이번 실습때 사용할 플랫폼이다.
3. Embedded
OVP(Open virtual Platform)의 대표 가상화 도구인 Imperas이다.
저전력 프로세스의 가상화에 특화되어있으며 유료이다.
이번 실습에서는 Qemu를 통한 RISC-V의 가상화 및 리눅스 부팅을 실습할 것이다.
먼저 실습에 필요한 커널과 Storage disk이미지를 다운로드한다
kernel-bbl 다운
1
2
|
Wget https://fedorapeople.org/groups/risc-v/disk-images/bbl
|
cs |
Disk img 다운
1
2
|
wget https://fedorapeople.org/groups/risc-v/disk-images/stage4-disk.img.xz
xzdec -d stage4-disk.img.xz > stage4-disk.img
|
cs |
prerequisistes
1
2
3
|
sudo apt-get install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat1-dev
Sudo apt-get install libglib2.0-dev zlib1g-dev libpixman-1-dev
|
cs |
source 다운로드
1
2
|
Git clone https://github.com/riscv/riscv-qemu.git
|
cs |
source build
1
2
3
4
5
|
Mkdir build
Cd build
../configure --target-list=riscv64-softmmu
make
|
cs |
Qemu-system-riscv64 실행
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
qemu-system-riscv64 \
-nographic \
-machine virt \
-smp 4 \
-m 2G \
-kernel bbl \
-object rng-random,filename=/dev/urandom,id=rng0 \
-device virtio-rng-device,rng=rng0 \
-append "console=ttyS0 ro root=/dev/vda" \
-device virtio-blk-device,drive=hd0 \
-drive file=stage4-disk.img,format=raw,id=hd0 \
-device virtio-net-device,netdev=usernet \
-netdev user,id=usernet,hostfwd=tcp::10000-:22
|
cs |
Qemu-system-rsicv64 실행 중
Qemu-system-riscv64 실행 (user : root , pw : riscv)
부팅 및 로그인 완료
이상으로 가상화 환경에서 RISC-V를 부팅했습니다.
이제 gcc를 통해 크로스컴파일 등의 방법으로 risc-v에 맞게 컴파일된 elf파일을 위의 환경에서 실행해 볼 수도 있습니다.
피드백은 언제든지 환영입니다.
마이크로서비스#4 - AWS에서 쿠버네티스 구축 (0) | 2019.09.26 |
---|---|
마이크로서비스#3 - 쿠버네티스란 무엇인가? (0) | 2019.07.27 |
마이크로서비스#2 - 가상화 컨테이너기술에 대한 이해 (0) | 2019.07.22 |
RISC-V #2 - RISC-V와 ARM 명령어 셋 비교 (0) | 2019.07.19 |
마이크로서비스#1 - 마이크로서비스 아키텍처 이해 (0) | 2019.07.18 |