RISC-V篇-从编译qemu开始,运行opensbi+kernel+rootfs

原文发布于微信公众号:Linux底层小工,欢迎关注公众号,获取更多技术文章!

 顺应时代潮流,开始学习risc-v!本文从编译qemu开始,一直到进入Linux shell命令行

需要说明的是,为了方便,我使用的是wsl2的ubuntu22.04,理论上本文适用于所有ubuntu系统,如果你遇到了问题,可以联系我,帮你解决。

首先建立一个risc-v目录,后续下载的文件都放到该目录下,最终效果如下:

图片

01 编译qemu-9.1.1

打开qemu官网https://www.qemu.org/,下载qemu-9.1.1.tar.xz

解压:

tar xf qemu-9.1.1.tar.xz

之后开始编译:

cd qemu-9.1.1mkdir buildcd build../configure --enable-slirp --target-list=riscv64-softmmumake -j12

编译完成后,生成了qemu-system-riscv64,你可以执行以下命令进行安装:

sudo make install

图片

02 安装riscv64编译器

这里直接使用apt进行安装:

sudo apt install gcc-riscv64-linux-gnu g++-riscv64-linux-gnu -y

03 编译opensbi

从github上clone opensbi:

git clone https://github.com/riscv-software-src/opensbi.git -b v1.5.1

编译opensbi:

cd opensbimake CROSS_COMPILE=riscv64-linux-gnu- PLATFORM=generic all -j12

编译完成后,在build/platform/generic/firmware目录下生成相应的bin文件,后面我们要用到fw_jump.bin文件:

图片

04 编译kernel

从国内镜像源下载kernel比较快,我选择中科大镜像源:

wget https://mirrors.ustc.edu.cn/kernel.org/linux/kernel/v6.x/linux-6.11.4.tar.xz

下载得到linux-6.11.4.tar.xz,解压:

tar xf linux-6.11.4.tar.xz

编译kernel:

cd linux-6.11.4make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- defconfigmake ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- -j12

编译完成后生成arch/riscv/boot/Image文件

05 编译rootfs

我直接使用buildroot编译rootfs,省得手动建立相应目录和文件了,buildroot官网下载最新的buildroot:

图片

图片

下载之后解压:

tar xf buildroot-2024.08.1.tar.xz && cd buildroot-2024.08.1

首先进行配置:

make menuconfig

图片

图片

配置之后进行编译:

make -j12

等待编译完成,就可以开始运行了,buildroot编译过程中会下载kernel代码,很慢,这个时候可以修改buildroot目录下的.config文件中kernel的下载链接为中科大镜像源,然后再编译,下载就会很快

06 qemu运行opensbi+kernel+rootfs

新建一个run.sh文件,写入如下内容:​​​​​​​

qemu-9.1.1/build/qemu-system-riscv64 -M virt -smp 4 -m 4G \    -bios opensbi/build/platform/generic/firmware/fw_jump.bin \    -kernel linux-6.11.4/arch/riscv/boot/Image \    -initrd buildroot-2024.08.1/output/images/rootfs.cpio \    -append "root=/dev/ram" \    -display none -serial stdio \    -device virtio-scsi-device \    -device virtio-net-pci,netdev=net0 \    -netdev user,id=net0

当然,如果你的路径和我的不一样,你需要修改成你的路径

保存退出后,给run.sh加上可执行权限:

chmod +x run.sh

开始运行:

./run.sh

运行效果如下,登录用户为root

怎么样很简单吧,如果你喜欢我的文章,请关注一下哟,你的支持是我前进的动力!

下期预告:

qemu+gdb调试opensbi与kernel

欢迎关注公众号:Linux底层小工,获取更多技术文章!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linux底层小工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值