qemu虚拟机模拟一个riscv linux系统

 


 方法一:

使用buildroot-2020.08.1  全自动

https://buildroot.org/download.html

下载后在ubuntu内解压,在buildroot-2020.08.1目录下 

make qemu_riscv64_virt_defconfig

然后

make menuconfig

如果你不懂怎么配置,直接默认。这两步如果出错,一般是你的ubuntu有些软件没装。根据提示,直接搜一下error信息就能找到解决方法。

 

然后直接 make

buildroot会自动下载riscv-toolchian、linux kernel source code、qemu、rootfs、opensbi等等,自动编译,生成各种可执行文件和image文件。

 

编译结束后,到 buildroot-2020.08.1/output/images

 ./start-qemu.sh

 即可启动qemu,将首先执行qemu内置的rom,然后执行OpenSBi作为bootloader,之后载linux kernel。登录名root 密码默认没有密码。

 

 

 方法二:

 

qemu的编译可以参考

https://www.cnblogs.com/qmjc/articles/12692584.html

不想自己编译可以去官网下载发布版,编译好的全家桶,直接用就是了,在windows环境下使用即可。

https://www.qemu.org/download/#windows

 

 

 


 

 

qemu运行整个操作系统需要加载一个操作系统镜像,就是虚拟机的镜像,参考了这篇配置qemu

https://wiki.qemu.org/Documentation/Platforms/RISCV

我图省事儿,用的现成的fedora

https://fedorapeople.org/groups/risc-v/disk-images/

注意,要把全部文件都下载,尤其不要遗漏bbl,这是bbl(bootloader) + Linux kernel一体的。stage4-disk.img是根文件系统,你可以用busybox自己做一个。

 

stage4-disk.img和bbl同文件夹,然后在这个文件夹运行qemu-system-riscv64,命令参数还是看 https://wiki.qemu.org/Documentation/Platforms/RISCV
  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
 

 

qemu就跑起来了。

 

windows下的bat脚本: 文件路径自己改

cd C:\Program Files\qemu

.\qemu-system-riscv64.exe ^
-nographic ^
-machine virt ^
-smp 4 ^
-m 2G ^
-kernel C:\fedora\bbl ^
-append "console=ttyS0 ro root=/dev/vda" ^
-device virtio-blk-device,drive=hd0 ^
-drive file=C:\fedora\stage4-disk.img,format=raw,id=hd0 ^
-device virtio-net-device,netdev=usernet ^
-netdev user,id=usernet,hostfwd=tcp::10000-:22

 

 


 

 

要看刚刚下载readme!!!

https://fedorapeople.org/groups/risc-v/disk-images/readme.txt

 

可以ssh登录它:

  ssh -p 10000 root@localhost

用户名 root 密码 riscv
root@localhost's password: riscv

 

 windows效果,建议用powershell,cmd下字符乱码:

 

 

 

 

 

 

 

posted @ 2020-04-23 18:05  园友1683564  阅读(2427)  评论(0编辑  收藏  举报