VirtualBox上使用qemu和busybear搭建RISCV环境
Step 1:安装一些编译riscv需要的库:
sudo apt-get 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
但是如果遇到了install失败的时候,可以选择使用其他的镜像:
进入 https://mirrors.ustc.edu.cn/repogen/ 选择自己的linux版本,比如说Ubuntu的apt/sources.list右击Download复制连接地址;
touch sources.list-backup
rm sources.list
wget https://mirrors.ustc.edu.cn/repogen/conf/ubuntu-https-4-kinetic
apt-get update
apt-get upgrad
之后应该就可以安装成功了
Step 2:安装工具riscv-tool和riscv-gnu-tools
因为都是比较大的,所以我选择先git然后对子目录进行--recursive
git clone https://github.com/riscv/riscv-gnu-toolchain cd riscv-gnu-toolchain git clone --recursive https://github.com/riscv/riscv-qemu.git git clone --recursive https://github.com/riscv/riscv-newlib.git git clone --recursive https://github.com/riscv/riscv-binutils-gdb.git git clone --recursive https://github.com/riscv/riscv-dejagnu.git git clone --recursive https://github.com/riscv/riscv-glibc.git git clone --recursive https://github.com/riscv/riscv-gcc.git
git clone https://github.com/riscv/riscv-tools.git cd riscv-tool git clone --recursive https://github.com/riscv/riscv-isa-sim.git git clone --recursive https://github.com/riscv/riscv-opcodes.git git clone --recursive https://github.com/riscv/riscv-pk.git git clone --recursive https://github.com/riscv/riscv-tests.git
Step 3: 编译工具链
vi ~/.bashrc # 添加: exprort RISCV="~/riscv_related/riscv-gnu-toolchain" export PATH=$PATH:$RISCV/bin # 退出执行 source ~/.bashrc mkdir riscv-gnu-toolchain-build cd riscv-gnu-toolchain-build ../riscv-gnu-toolchain/configure --prefix=$RISCV make linux
这里configure和make的选项有很多
如果希望是搭建linux上的话环境需要make linux;否则到时候会提示找不到elf文件等
过程中可能会提示已经 directory not empty:
可以进入相应的文件夹中:
rm -rf riscv-binutils rm -rf riscv-gdb cd riscv-binutils-gdb cp -a * ../riscv-binutils cp -a * ../riscv-dbd
Step 4:编译工具riscv-tool
cd riscv-tools ./build.sh # 问题1 :undefined macro AC_DEFINED apt-get install libsys-dev apt-get install pkg-config # 问题2:No rule to make target all apt-get install fesvr # 问题3:runtimeerror is not a member of std vi fesvr/dtm.cd #include<stdexcept>
Step 5:安装qemu:
# 首先git安装qemu # 我的提示没有python apt-get install python-is-python3 # 查看版本 whereis python # 安装glib,gthread: apt-get install libglib2.0-dev apt-get install libpixman-1-dev ./configure -disable-werror make make install
Step 6: 安装busybear
mkdir linux git clone https://github.com/michaeljclark/busybear-linux.git cd busybear-linux make # 问题1: stime有问题 --> 好像已经被废弃了 # 暴力解决方法:更换版本:但是不能直接将新的替换 # 查勘Makefile会发现每次都是会重新下载busybox的 cd conf vi busybear.config BUSYBOX_VERSION = 1.34.0
# 问题2:multiple definition of yylloc
# 是gcc版本太高的原因:
cd riscv-gnu-toolchain
cd riscv-gcc
cd gcc
vi BASE-VER
# 修改为9.5.0(小于10就可以)
Step 7:下载RISCV-Linux
cd linux git clone https://github.com/riscv/riscv-linux.git cd riscv-linux git checkout riscv-linux-4.14 cp ../busybear-linux/conf/linux.config .config make ARCH=riscv CROSS_COMPILE=riscv64-unknown-linux-gnu- olddefconfig make ARCH=riscv vmlinux
Step 8:安装BBL
git clone https://github.com/riscv/riscv-pk.git cd riscv-pk mkdir build cd build ../configure --enable-logo --host=riscv64-unknown-linux-gnu- --with-payload=../../riscv-linux/vmlinux
Step 9:使用二进制文件:
mkdir release cd release wget https://github.com/michaeljclark/busybear-linux/releases/download/v1.0/bbl.bz2 wget https://github.com/michaeljclark/busybear-linux/releases/download/v1.0/busybear.bin.bz2 bzip2 -d *.bz2
Step 9 :登录:
sudo qemu-system-riscv64 -nographic -machine virt -kernel bbl -append "root=/dev/vda ro console=ttyS0" -drive file=busybear.bin,format=raw,id=hd0 -device virtio-blk-device,drive=hd0 -device virtio-net-device,netdev=net0
登录用户名:root
登录密码:busybear
然后就可以运行啦
# 测试命令 uname -a # 结束退出 halt
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通