QEMU RISC-V
Testing RISC V under qemu
Build and Install
Building the full system emulator and the user mode emulator on Linux:
git clone --recursive https://github.com/riscv/riscv-qemu.git
cd riscv-qemu
./configure \
--target-list=riscv64-softmmu,riscv32-softmmu,riscv64-linux-user,riscv32-linux-user
make -j$(nproc)
# last operation require root right, so possible that you need sudo make install
make install
# it will be installed under /usr/local/bin so you need to add your path if it's in the default one
Use a working buildroot environment
Download buildroot project for risc-v
git clone https://github.com/riscv/riscv-buildroot.git
git checkout origin/riscv-start
Build buildroot enviroment
cd riscv-buildroot
make qemu_riscv64_virt_defconfig
make
This configuration let you work on version downloaded in the configuration
Use mainline kernel
# create local.mk file inside your buildroot directory
echo "LINUX_OVERRIDE_SRCDIR=linux-mainline" > local.mk
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git linux-mainline
# checkout the mainline commit id or tag you need for example
cd linux-mainline
git checkout v4.20-rc7 -b devel-riscv
# if you system is already build
make linux-dirclean
make
# otherwise follow the instruction on previous section
make qemu_riscv64_virt_defconfig
make
# configure the kernel
make linux-menuconfig
Run your built image
Your output image are in output/images. In order to execute just run:
qemu-system-riscv64 -M virt -kernel output/images/bbl -append "root=/dev/vda ro console=ttyS0" -drive file=output/images/rootfs.ext2,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -netdev user,id=net0 -device virtio-net-device,netdev=net0 -nographic