TinyEMU之Linux Kernel编译


本文属于《 TinyEMU模拟器基础系列教程》之一,欢迎查看其它文章。

1 准备工作

我们需要,下载以下内容。

RISC-V交叉编译器,github仓库:https://github.com/riscv-collab/riscv-gnu-toolchain,也可以自己去选择,该仓库Release下其他版本的编译器。我们这里下载的是gcc version 12.2.0。
Linux内核源码,github仓库:https://github.com/riscvarchive/riscv-linux/tree/riscv-linux-4.15,我们这里与TinyEMU例子中,使用的Linux 4.15版本保持一致。

2 安装RISC-V交叉编译器

解压

tar -xvzf riscv64-glibc-ubuntu-20.04-nightly-2023.01.31-nightly.tar.gz

编辑.bashrc

vim ~/.bashrc

将编译器bin路径(/home/tools/riscv/bin替换为自己的路径),加入.bashrc文件末尾。

export PATH=/home/tools/riscv/bin:$PATH

使路径生效

source ~/.bashrc

最后,查看编译器版本,以验证安装

riscv64-unknown-linux-gnu-gcc -v

编译器环境搭建好了。
在这里插入图片描述

3 编译Linux Kernel

解压

tar -xvzf riscv-linux-riscv-linux-4.15.tar.gz

将diskimage-linux-riscv-2018-09-23\patches\config_linux_riscv64,拷贝到riscv-linux-riscv-linux-4.15目录下,并修改文件名为.config。

  • Linux中的.config文件是一个非常重要的配置文件,通常位于内核源码目录下,通过修改.config文件,用户可以启用或禁用某些内核功能,也可以调整各种参数和选项,以适应自己的使用环境。
  • 说白了,就是可以选择哪些模块参与编译,哪些模块不参与编译,可进行功能的裁剪。
  • 执行make defconfig,可生成的.config文件;执行make menuconfig,可以修改.config文件。
  • 这里,我们使用TinyEMU例子中,提供的.config文件,就可以编译出,与例子中同样配置的Linux Kernel。
  • 不知道diskimage-linux-riscv-2018-09-23是什么的,可查看前文《TinyEMU之源码编译与使用》

使用交叉编译器,来编译Linux Kernel

make ARCH=riscv CROSS_COMPILE=riscv64-unknown-linux-gnu- -j64

遇到选择yes/no,默认回车即可。一会就编译完毕了。
在这里插入图片描述
编译完成后,在riscv-linux-riscv-linux-4.15目录下,生成了内核镜像文件:vmlinux。

使用file命令,查看其文件格式,为RISC-V的ELF格式。
在这里插入图片描述

4 镜像格式转换

在diskimage-linux-riscv-2018-09-23/readme.txt中,有明确描述:TinyEMU只支持原始(RAW)boot loader和kernel image。

因此,必须使用以下命令,将ELF格式镜像,转换为RAW格式镜像:

riscv64-unknown-linux-gnu-objcopy -O binary vmlinux kernel.bin

这个kernel.bin,才能在TinyEMU中,被正确加载执行。

  • 18
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

百里杨

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

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

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

打赏作者

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

抵扣说明:

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

余额充值