OpenBmc开发6:创建新layer(适配自己的board)

 1 概述

在openbmc开发中,我们通常需要修改配置文件以适配自己的板卡,如果直接修改原有的配置文件在使用git更新后会覆盖自己的修改,同时这也不是正常的开发流程,因此我们需要创建自己layer,以更好的适配自己的板卡,同时自己创建layer可进一步学习openbmc的架构。

2 查看layer层结构

以meta-palmetto为例,查看palmetto层目录结构如下:

tree meta-ibm/meta-palmetto/

如果没有tree 命令,可以执行如下命令安装

sudo apt intsall tree

 查看palmetto的配置文件结构

tree meta-ibm/meta-palmetto/conf/

 

2 创建layer

创建顶层目录meta-live(或者你想要的名字)

mkdir -p meta-live

复制meta-palmetto层到meta-live下并改名为meta-test(或者你想要的名字)

cp -r meta-ibm/meta-palmetto meta-live/meta-test

 

3 修改配置文件

修改meta-live/meta-test/conf/ layer.conf文件,将palmetto替换成test。

扫描二维码关注公众号,回复: 13129595 查看本文章

 

修改meta-live/meta-test/conf/ bblayers.conf.sample文件,将改文件中的“/meta-ibm/meta-palmetto”修改为“/meta-live/meta-test”,如下图所示。

 

 修改meta-live/meta-test/conf/local.conf.sample文件,将“MACHINE ??= “palmetto””改为“MACHINE ??= “test””。

 

修改meta-live/meta-test/machine/palmetto.conf文件为test.conf。

 

4 编译镜像

4.1 配置变异环境

依次执行如下命令:

rm -rf  build/conf

export TEMPLATECONF=meta-live/meta-test/conf

. openbmc-env

如果你的downloads文件不再build目录下需要增加DL_DIR ?= “your downloads path”

如果你的编译环境没有网络连接,需要增加BB_NO_NETWORK = "1"。

 

4.2 编译镜像

执行如下命令,等待recipes 解析完成并开始编译。

time bitbake obmc-phosphor-image

 

4.3 错误处理   

不出意外你会看到提示如下错误:

 

此时此刻,千万别慌,请仔细阅读错误提示,是说没有提供u-boot,这是因为机型配置文件是用的之前的需要做相应的修改。

修改meta-live/meta-test/machine/palmetto.conf文件,中的“UBOOT_MACHINE_ palmetto”修改为“UBOOT_MACHINE_${MACHINE}”或着“UBOOT_MACHINE_test”。这里还有一些palmetto的字样,暂时不用管,后续有需求修改即可,不修改也不影响。

 

继续执行编译命令,将会看到如下错误提示。

 

这个提示是因为没有内核配置文件不对,修改meta-live/meta-test/recipes-kernel/linux/linux-aspeed_%.bbappend文件,将“palmetto”修改为 “test”或者“${MACHINE}”,建议修改为${MACHINE}这种引用的方式。meta-live/meta-test/recipes-kernel/linux/linux-aspeed/palmetto.cfg文件修改为test.cfg。

继续执行编译命令,会出现如下错误提示:

往上滑查找错误输出,如图所示:

这是因为在编译时候没有找到指定设备树,需要修改meta-live/meta-这是因为在编译时候没有找到指定设备树,需要修改meta-live/meta-test/machine/palmetto.conf文件,将“KERNEL_DEVICETREE = "${KMACHINE}-bmc-opp-${MACHINE}.dtb"”修改为KERNEL_DEVICETREE = "${KMACHINE}-bmc-opp-palmetto.dtb"。因为我们没有提供test机型的设备树,暂时先用palmetto机型的。

4.4 运行编译镜像

经过不断的折腾,总算编译完成了。

编译镜像输出结果

执行qemu命令启动镜像(这里我使用的是官方的qemu-system-arm,并且放在build目录下)

sudo ./qemu-system-arm -m 256 -M palmetto-bmc -nographic -drive file=./tmp/deploy/images/test/flash-test,if=mtd -net nic -net user,hostfwd=:127.0.0.1:2222-:22,hostfwd=:127.0.0.1:2443-:443,hostname=qemu

 

至此,创建一个简单的层结束,先喝杯咖啡回想一下。。。 

 

猜你喜欢

转载自blog.csdn.net/qq_34160841/article/details/106185242