OpenBmc开发3:编译镜像

编译环境VMware + ubuntu 18.04

编译环境构建:参考OpenBmc开发2:构建开发环境

1、进入openbmc目录

      打开一个Terminal(快捷键Ctrl + Alt + T),cd命令切换到openbmc文件夹下

cd openbmc

2、查看可用编译配置

find meta-* -name local.conf.sample

可以看到如下编译配置 

OpenBmc开发3:编译镜像_第1张图片

3、生成编译配置

   插入TEMPLATECONF,上边查询到的配置有很多,但是有一些需要自己进行配置才能编译,先选择一个可以编译。以romulus为例:

export TEMPLATECONF=meta-ibm/meta-romulus/conf 
. openbmc-env

执行命令后会在openbmc目录下生成一个build文件夹,并自行进入到build目录下。 

OpenBmc开发3:编译镜像_第2张图片

如果想换一个编译配置,执行如下命令删除原来的配置文件,然后在执行export TEMPLATECONF=.

rm -rf build/conf
export TEMPLATECONF=
. openbmc-env

4、 修改配置文件

修改配置文件执行:

gedit conf/local.conf    

或者执行:

vi conf/loacl.conf

 github上clone下来的openbmc是配置文件、类文件以及一些脚本文件等,没有源码文件,比如uboot、kernel、fs文件系统等,而是在编译中过程中根据配置文件中SRC_URL来下载需要的源码文件,不修改配置文件,默认将下载下来的源码存放在build/downloads文件夹来下。如果已经下载过这些源码文件,可以修改DL_DIR变量为你下载文件的路径。

为了提高编译速度,可添加编译进程数量和make参数,不设置默认参数是虚拟机cpu核心数。

BB_NUMBER_THREADS = ' 8 '
PARALLEL_MAKE     = ' -j 8 '

OpenBmc开发3:编译镜像_第3张图片

loca.conf中的部分参数以及部分可添加参数解释:

DL_DIR ——存放编译过程中下载后的数据,

BB_NUMBER_THREADS ——同时工作的最大任务数,一般给cpu核心数的两倍,我CPU核心数是4,故设置为8

PARALLEL_MAKE——每个任务使用的线程数,应该包含"-j",如果希望8个线程一起运行,则设置为"-j 8"

BB_GENERATE_MIRROR_TARBALLS——在DL_DIR中产生源代码控制库(比如 GIT),包含元数据的tarball

INHERIT += “rm_work” ——命令BitBake在构建完包之后删除针对构建包的工作目录
RM_WORK_EXCLUDE += " core-image_minimal"  ——排除要被删除的对象
SSTATE_DIR = " "——存放共享状态缓存位置。

BB_NO_NETWORK = "1" ——如果你的环境不能联网需要此配置

还有一些其他参数可以看local.conf文件中的英文描述

5、编译镜像

编译镜像执行:

bitbake obmc-phosphor-image

如果显示编译时间执行:

time bitbake obmc-phosphor-image

OpenBmc开发3:编译镜像_第4张图片

如果只下载不编译执行:

bitbake obmc-phosphor-image -c fetch

 整个编译耗时大约6个小时.(下图是因为中间处理过一次错误,时间统计有误),请耐心等待,具体编译时间与电脑配置有关,主机CPU核心数越多、性能越高、内存越大编译时间会大幅度缩减。同时编译中需要下载源码,一个好的上网环境可以大幅度提高编译时间。

编译中如果有报错:

可以再次执行编译命令,如果是相同的错误,请仔细阅读log文件,根据提示进行相关的操作。

6、查看镜像

编译完成后生成的镜像在build/tmp/deploy/image文件夹下。

ls tmp/deploy/images/romulus/

OpenBmc开发3:编译镜像_第5张图片

OpenBmc开发3:编译镜像_第6张图片

7、编译错误及处理

         请参考OpenBmc开发:错误汇总

 

你可能感兴趣的:(OpenBmc)