ubuntu下使用yocto制作龙芯文件系统

一、下载yocto代码

  1. poky下载得到poky
  2. openembedded配方下载得到meta-openembedded目录
  3. MIPS架构配方下载得到meta-img目录
git clone git://git.yoctoproject.org/poky
git clone git://git.openembedded.org/meta-openembedded
git clone https://github.com/MIPS/meta-img.git

二、代码切换分支
根据自己的版本选择适合自己的分支,这里由于meta-img只有morty分支,一般poky和meta-openembedded都会切换为morty分支,但是由于项目需求morty分支不满足,所以目前我的poky和meta-openembedded都是sumo分支,meta-img选择master分支。

三、目录放置
我们把meta-openembedded和meta-img放到poky目录下,目录结构如下图所示:
在这里插入图片描述
四、安装yocto编译环境

sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm

五、构建自己的cpu机器
在meta-img/conf/machine目录下有多重mips架构的机器,其中和龙芯2k1000最接近的是mips64r2el-n32,所以我们参考qemumips64r2el-n32.conf来编写2k1000.conf,文件如下:

#@TYPE: Machine
#@NAME: qemumips64r2el-n32
#@DESCRIPTION: MIPS 64r2, Little Endian, Hard Float, n32

#我们不需要qemu所以把下面两行注释掉
#require conf/machine/include/qemu.inc
#require conf/machine/include/qemuboot-mips.inc
require conf/machine/include/tune-mips64r2.inc
require mips-common.inc

DEFAULTTUNE = "mips64r2el-n32"

#我们不需要跑qemu所以把下面两行注释掉
# runqemu extra options
#QB_CPU = "-cpu MIPS64R2-generic"

#我们需要制作下面做多种格式文件系统
IMAGE_FSTYPES+=" cpio.gz cpio tar.gz jffs2 ext2 ext3 ext4"

这样子我们2k1000的机器就做好了。

六、选择不编译内核
由于yocto会自动编译内核,但是目前yocto的内核编译都不成功,因为龙芯的代码没有传到linux.org上,我们也可以自己做一个源,或者选择本地工程,但是比较复杂,所以这里选择不编译内核。我们从2k1000的机器文件中也可以看到,他编译内核是因为 require mips-common.inc 这个语句,这个文件在conf/machine/mips-common.inc,我们把里面一些关键信息注释就可以不编译内核了

# Include file for parameters common to many MIPS platforms

#KERNEL_IMAGETYPE = "vmlinux"
#KERNEL_ALT_IMAGETYPE = "vmlinux.bin"

SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1"

# This disables gobject-introspection which needs fixing for some
# targets. If you need to use that package, remove this line.
#MACHINE_FEATURES_BACKFILL_CONSIDERED = "qemu-usermode"

#PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"

七、开始编译
编译过程也就是运行两条命令:

MACHINE='loongson2k1000' source oe-init-build-env build 
bitbake core-image-minimal

如下图所示:
在这里插入图片描述

八、编译错误处理
当我们执行source oe-init-build-env build命令后,会在当前目录创建一个build目录,我们要在build/conf/bblayers.conf目录下添加 openembedded配方和MIPS架构配方,添加后如下所示,:

# POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf
# changes incompatibly
POKY_BBLAYERS_CONF_VERSION = "2"

BBPATH = "${TOPDIR}"
BBFILES ?= ""
BSPDIR := "${@os.path.abspath(os.path.dirname(d.getVar('FILE', True)) + '/../..')}"

BBLAYERS ?= " \
		${BSPDIR}/meta \
		${BSPDIR}/meta-poky \
		${BSPDIR}/meta-yocto-bsp \
		${BSPDIR}/meta-openembedded/meta-oe \
		${BSPDIR}/meta-openembedded/meta-python \
		${BSPDIR}/meta-openembedded/meta-networking \
		${BSPDIR}/meta-openembedded/meta-initramfs \
		${BSPDIR}/meta-openembedded/meta-multimedia \
		${BSPDIR}/meta-openembedded/meta-filesystems \
		${BSPDIR}/meta-img \
 "

这样子编译还会宝下面的错误:
在这里插入图片描述
我们只要把报错的文件删除就可以了。这样子就可以成功编译全部了。

九、优化结构和添加脚本

  1. 把downloads从build目录中更改到build外的同级目录,这样子不用每次删除build后都要重新下载。
  2. 添加脚本替换build目录下的两个conf文件
  3. 使用脚本一键编译loongson2k1000平台

下面这个链接可以下载我构建好的yocto:
https://download.csdn.net/download/sinat_22338935/20087662

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小坚学Linux

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

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

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

打赏作者

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

抵扣说明:

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

余额充值