欢迎光临散文网 会员登陆 & 注册

手把手教你在QEMU上运行RISC-V Linux

2023-03-15 15:34 作者:补给站Linux内核  | 我要投稿

今天教大家在QEMU模拟器上运行一个RISC-V Linux

一个RISC-V Linux包括:

  • opensbi

  • linux

  • 根文件系统

1、下载RISC-V工具链

自己下载工具链源码进行编译容易配错选项,我们使用编译好的工具链即可。

网址:https://toolchains.bootlin.com

这个网站提供了一些已经编译好的工具链,我们从中下载即可。

arch选择risCV64-lp64d,libc选择glibc,然后点击下载。

stable是稳定版,bleeding-edge是最新的,可根据需要选择,这里我们选择bleeding-edge。

下载后解压:

将risCV64-lp64d--glibc--bleeding-edge-2022.08-1/bin路径添加到PATH环境变量中:

2、安装QEMU

QEMU官网:https://www.qemu.org/

下载安装:

3、编译opensbi

下载opensbi:

编译:

编译完后生成的固件在build/platform/generic/firmware/目录下:

生成的固件有三种类型:dynamic、jump和payload

  • dynamic:带有动态信息的固件

  • jump:指定下一级的boot地址跳转

  • payload:包含下一级boot的二进制内容,通常是uboot/linux

这里我们使用jump类型固件,OpenSBI运行后,可以直接跳转到kernel运行。

因为opensbi本身就是一个bootloader,因此可以不使用uboot引导kernel,通过opensbi的jump固件,可以直接跳转到kernel启动。

4、编译kernel

Linux内核官网:www.kernel.org

选择当前稳定版5.19.16下载

解压kernel:

编译:

编译完成后,在arch/riscv/boot下生成Image:


【文章福利】小编推荐自己的Linux内核技术交流群:【749907784】整理了一些个人觉得比较好的学习书籍、视频资料共享在群文件里面,有需要的可以自行添加哦!!!(含视频教程、电子书、实战项目及代码)       


5、制作rootfs

文件系统可以用busybox、buildroot等工具制作,busybox需要自己一步一步的做出来,过程比较麻烦。更便捷的做法是使用buildroot,它可以自动帮我们完成。

下载地址:https://buildroot.org/download.html

下载后解压:

进入buildroot菜单配置界面:

选择RISC-V架构

选择ext文件系统类型:

保存后编译:


编译需要花一些时间,buildroot前期大部分时间去编译工具链了。 编译完后,生成文件在output/images目录下:

rootfs.ext2是我们需要用到的。

6、运行

将fw_jump.elf、Image、rootfs.ext2拷贝到当前目录下:

新建start-qemu.sh脚本,输入以下内容:

修改权限:

chmod 777 start-qemu.sh

运行start-qemu.sh启动RISC-V Linux:

输入root回车登录:

成功进入Linux!

buildroot搭建环境

前面我们用buildroot制作了文件系统,但buildroot其实可以帮我们搭建一套完整环境,包括工具链、opensbi、linux、文件系统等等,只需要简单配置一下,即可自动帮我们完成,非常方便。下面教大家使用buildroot搭建一个qemu risCV64 linux系统。

使用默认的qemu_risCV64配置进行编译:

接下来就是漫长的等待,可能需要几个小时。 编译完后,生成文件在output/images目录下:

可以看到opensbi、Image、rootfs都做好了,包括qemu的下载编译也会帮我们自动完成。可以直接运行start-qemu.sh:

使用buildroot搭建环境,几乎什么都不需要做,非常方便!要注意的就是确保网络畅通,网络不流畅buildroot可能会中断。

总结

学习RISC-V Linux搭建环境是第一步,有了环境才能更好的去跟踪源码调试,当然如果有开发板更好。以上是我在qemu上搭建RISC-V Linux的总结,希望对大家有帮助。

原文作者:嵌入式Linux充电站





手把手教你在QEMU上运行RISC-V Linux的评论 (共 条)

分享到微博请遵守国家法律