littlebot
Published on 2025-04-12 / 1 Visits
0

【源码】基于QEMU的RISCV Linux快速启动项目

项目简介

本项目是RISC-V的入门级最佳实践指南总结,可助力开发者快速搭建RISC-V Linux开发环境。项目提供了RISC-V相关信息、在QEMU上启动RISC-V Linux的详细步骤,以及运行交叉编译示例应用程序的方法。

项目的主要特性和功能

  1. 全面的RISC-V信息整合:收集RISC-V各种规范、大学课程、Web ISA模拟器、开源RTL资源及相关社区和会议信息。
  2. 详细的环境搭建指南:指导用户在Ubuntu 20.04.3系统搭建RISC-V Linux开发环境,涵盖安装依赖、获取交叉编译工具链、构建QEMU、Linux内核和BusyBox等。
  3. 可运行自定义应用程序:用户能编写并交叉编译自定义示例应用程序,添加到根文件系统后在RISC-V Linux系统运行。

安装使用步骤

前提条件

确保已下载本项目的源码文件,且系统为Linux distribution (Ubuntu 20.04.3 LTS)。

安装依赖

bash sudo apt install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev git sudo apt install libpixman-1-0

获取交叉编译工具链

bash wget https://toolchains.bootlin.com/downloads/releases/toolchains/riscv64/tarballs/riscv64--glibc--bleeding-edge-2020.08-1.tar.bz2 sudo mkdir -p /opt/bootlin sudo tar jxf riscv64--glibc--bleeding-edge-2020.08-1.tar.bz2 -C /opt/bootlin/

构建QEMU

bash cd qemu git checkout v5.2.0 sudo apt install ninja-build ./configure --target-list=riscv64-softmmu make -j $(nproc) sudo make install cd ..

构建Linux内核

bash cd linux git checkout -b risc-v v5.11 make ARCH=riscv CROSS_COMPILE=/opt/bootlin/riscv64--glibc--bleeding-edge-2020.08-1/bin/riscv64-buildroot-linux-gnu- defconfig make ARCH=riscv CROSS_COMPILE=/opt/bootlin/riscv64--glibc--bleeding-edge-2020.08-1/bin/riscv64-buildroot-linux-gnu- -j $(nproc) cd ..

构建BusyBox

bash wget https://busybox.net/downloads/busybox-1.31.1.tar.bz2 tar jxvf busybox-1.31.1.tar.bz2 cd busybox-1.31.1 CROSS_COMPILE=/opt/bootlin/riscv64--glibc--bleeding-edge-2020.08-1/bin/riscv64-buildroot-linux-gnu- make defconfig CROSS_COMPILE=/opt/bootlin/riscv64--glibc--bleeding-edge-2020.08-1/bin/riscv64-buildroot-linux-gnu- make menuconfig CROSS_COMPILE=/opt/bootlin/riscv64--glibc--bleeding-edge-2020.08-1/bin/riscv64-buildroot-linux-gnu- make -j $(nproc) CROSS_COMPILE=/opt/bootlin/riscv64--glibc--bleeding-edge-2020.08-1/bin/riscv64-buildroot-linux-gnu- make install

创建RamDISK

```bash cd busybox-1.31.1/_install mkdir -p dev sudo mknod dev/console c 5 1 sudo mknod dev/ram b 1 0 touch init vim init

!/bin/sh

echo "### INIT SCRIPT ###" mkdir /proc /sys /tmp mount -t proc none /proc mount -t sysfs none /sys mount -t tmpfs none /tmp echo -e "\nThis boot took $(cut -d' ' -f1 /proc/uptime) seconds\n" exec /bin/sh chmod a+x init chown root:root init chown root:root dev find -print0 | cpio -0oH newc | gzip -9 > ../../initramfs.cpio.gz cd ../../ ```

启动Linux系统

bash sudo ./qemu/build/qemu-system-riscv64 -nographic -machine virt -kernel ./linux/arch/riscv/boot/Image -initrd initramfs.cpio.gz -append "root=/dev/vda ro console=ttyS0"

构建并运行自定义应用程序

bash cd testcases make clean;make echo simple-function.out|cpio -H newc -o|gzip -9 >> ../initramfs.cpio.gz cd ../../ sudo ./qemu/build/qemu-system-riscv64 -nographic -machine virt -kernel ./linux/arch/riscv/boot/Image -initrd initramfs.cpio.gz -append "root=/dev/vda ro console=ttyS0" ./simple-function.out

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】