手把手教你在QEMU上运行RISC |
您所在的位置:网站首页 › generic怎么读音 › 手把手教你在QEMU上运行RISC |
今天教大家在QEMU模拟器上运行一个RISC-V Linux 一个RISC-V Linux包括: opensbilinux根文件系统好文推荐: 万字讲解你写的代码是如何跑起来的? 什么是Linux内核,如何搞懂Linux内核?(Linux内核学习笔记合集来了!) 字节终面:CPU 是如何读写内存的? 全网最牛Linux内核分析--Intel CPU体系结构 一文让你读懂Linux五大模块内核源码,内核整体架构设计(超详细) 嵌入式前景真的好吗?那有点悬! 一文教你如何使用GDB+Qemu调试Linux内核 Linux内核必读五本书籍(强烈推荐) 全网独一无二Linux内核Makefle系统文件详解(一)(纯文字代码) 带你深度了解Linux内核架构和工作原理! 如何读懂GDB底层实现原理(从这几点入手~) 一文彻底理解Memory barrier(内存屏障) 一篇文带你搞懂,虚拟内存、内存分页、分段、段页式内存管理(超详细) 1、下载RISC-V工具链自己下载工具链源码进行编译容易配错选项,我们使用编译好的工具链即可。 网址:https://toolchains.bootlin.com 这个网站提供了一些已经编译好的工具链,我们从中下载即可。 arch选择riscv64-lp64d,libc选择glibc,然后点击下载。 stable是稳定版,bleeding-edge是最新的,可根据需要选择,这里我们选择bleeding-edge。 下载后解压: tar -jxvf riscv64-lp64d--glibc--bleeding-edge-2022.08-1.tar.bz2将riscv64-lp64d--glibc--bleeding-edge-2022.08-1/bin路径添加到PATH环境变量中: export PATH=/home/yjx/workspace/toolchain/riscv64-lp64d--glibc--bleeding-edge-2022.08-1/bin:$PATH2、安装QEMUQEMU官网:https://www.qemu.org/ 下载安装: wget https://download.qemu.org/qemu-7.1.0.tar.xz tar xvJf qemu-7.1.0.tar.xz cd qemu-7.1.0 ./configure make3、编译opensbi下载opensbi: git clone https://github.com/riscv-software-src/opensbi.git编译: export CROSS_COMPILE=riscv64-linux- make PLATFORM=generic编译完后生成的固件在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、编译kernelLinux内核官网:www.kernel.org 选择当前稳定版5.19.16下载 解压kernel: tar -xf linux-5.19.16.tar.xz cd linux-5.19.16编译: export ARCH=riscv export CROSS_COMPILE=riscv64-linux- make defconfig make -j8编译完成后,在arch/riscv/boot下生成Image: 文件系统可以用busybox、buildroot等工具制作,busybox需要自己一步一步的做出来,过程比较麻烦。更便捷的做法是使用buildroot,它可以自动帮我们完成。 下载地址:https://buildroot.org/download.html 下载后解压: tar -xvf buildroot-2022.02.6.tar.gz进入buildroot菜单配置界面: cd buildroot-2022.02.6 make menuconfig选择RISC-V架构 Target options ---> Target Architecture (i386) ---> (X) RISCV选择ext文件系统类型: Filesystem images ---> [*] ext2/3/4 root filesystem保存后编译: make -j8编译需要花一些时间,buildroot前期大部分时间去编译工具链了。 编译完后,生成文件在output/images目录下: rootfs.ext2是我们需要用到的。 6、运行将fw_jump.elf、Image、rootfs.ext2拷贝到当前目录下: 新建start-qemu.sh脚本,输入以下内容: #!/bin/sh qemu-system-riscv64 -M virt \ -bios fw_jump.elf \ -kernel Image \ -append "rootwait root=/dev/vda ro" \ -drive file=rootfs.ext2,format=raw,id=hd0 \ -device virtio-blk-device,drive=hd0 \ -netdev user,id=net0 -device virtio-net-device,netdev=net0 -nographic修改权限: chmod 777 start-qemu.sh 运行start-qemu.sh启动RISC-V Linux: 输入root回车登录: 成功进入Linux! buildroot搭建环境前面我们用buildroot制作了文件系统,但buildroot其实可以帮我们搭建一套完整环境,包括工具链、opensbi、linux、文件系统等等,只需要简单配置一下,即可自动帮我们完成,非常方便。下面教大家使用buildroot搭建一个qemu riscv64 linux系统。 使用默认的qemu_riscv64配置进行编译: cd buildroot-2022.02.6 make qemu_riscv64_virt_defconfig make -j接下来就是漫长的等待,可能需要几个小时。 编译完后,生成文件在output/images目录下: 可以看到opensbi、Image、rootfs都做好了,包括qemu的下载编译也会帮我们自动完成。可以直接运行start-qemu.sh: 使用buildroot搭建环境,几乎什么都不需要做,非常方便!要注意的就是确保网络畅通,网络不流畅buildroot可能会中断。 总结学习RISC-V Linux搭建环境是第一步,有了环境才能更好的去跟踪源码调试,当然如果有开发板更好。以上是我在qemu上搭建RISC-V Linux的总结,希望对大家有帮助。 首页 - 内核技术中文网 - 构建全国最权威的内核技术交流分享论坛 转载地址:手把手教你在QEMU上运行RISC-V Linux |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |