前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为riscv64编译uboot和grub

为riscv64编译uboot和grub

作者头像
灯珑LoGin
发布2023-11-20 08:31:07
2670
发布2023-11-20 08:31:07
举报
文章被收录于专栏:龙进的专栏龙进的专栏

安装工具链

首先需要安装交叉编译工具链,可以用apt安装riscv64的gcc编译工具链。我是自己编译了一个musl-gcc,下载:

https://github.com/DragonOS-Community/musl-cross-make/releases/tag/9.4.0-231114

然后解压到~/opt/cross/目录下,并且添加环境变量

编译uboot

去uboot的仓库下载uboot v2023.10,然后解压并编译:

代码语言:javascript
复制
make qemu-riscv64_smode_defconfig CC="riscv64-linux-musl-gcc"
make -j $(nproc) CC="riscv64-linux-musl-gcc" OBJCOPY=riscv64-linux-musl-objcopy STRIP=riscv64-linux-musl-strip RANLIB=riscv64-linux-musl-ranlib NM=riscv64-linux-musl-nm LD=riscv64-linux-musl-ld

然后当前目录下的”u-boot.bin”就是我们要的结果了。

测试运行:

代码语言:javascript
复制
qemu-system-riscv64 -nographic -machine virt -kernel u-boot.bin

编译grub

grub有两种方式去编译,一种是克隆仓库编译2.12版本,另一种是直接下载2.06的压缩包。

grub 2.12编译(克隆仓库的方式)

克隆仓库

代码语言:javascript
复制
git clone https://github.com/DragonOS-Community/grub
cd grub
git checkout grub-2.12-rc1

配置编译

代码语言:javascript
复制
sudo apt install -y gawk

ABS_PREFIX=/opt/dragonos-grub
PREFIX=${ABS_PREFIX}/arch/riscv64/efi/grub

./bootstrap

mkdir build

cd build

../configure --target=riscv64 --prefix=${PREFIX} --host=x86_64-linux-gnu  --disable-werror --with-platform=efi BUILD_CC=gcc HOST_CC=x86_64-linux-gnu-gcc  TARGET_CC=riscv64-linux-musl-gcc TARGET_OBJCOPY=riscv64-linux-musl-objcopy TARGET_STRIP=riscv64-linux-musl-strip TARGET_RANLIB=riscv64-linux-musl-ranlib TARGET_NM=riscv64-linux-musl-nm TARGET_LD=riscv64-linux-musl-ld

make -j $(nproc) && sudo make install
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023年11月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装工具链
  • 编译uboot
  • 编译grub
  • grub 2.12编译(克隆仓库的方式)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档