编译环境VMware + ubuntu 18.04
编译环境构建:参考OpenBmc开发2:构建开发环境
打开一个Terminal(快捷键Ctrl + Alt + T),cd命令切换到openbmc文件夹下
cd openbmc
find meta-* -name local.conf.sample
可以看到如下编译配置
插入TEMPLATECONF,上边查询到的配置有很多,但是有一些需要自己进行配置才能编译,先选择一个可以编译。以romulus为例:
export TEMPLATECONF=meta-ibm/meta-romulus/conf
. openbmc-env
执行命令后会在openbmc目录下生成一个build文件夹,并自行进入到build目录下。
如果想换一个编译配置,执行如下命令删除原来的配置文件,然后在执行export TEMPLATECONF=
rm -rf build/conf
export TEMPLATECONF=
. openbmc-env
修改配置文件执行:
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 '
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文件中的英文描述
编译镜像执行:
bitbake obmc-phosphor-image
如果显示编译时间执行:
time bitbake obmc-phosphor-image
如果只下载不编译执行:
bitbake obmc-phosphor-image -c fetch
整个编译耗时大约6个小时.(下图是因为中间处理过一次错误,时间统计有误),请耐心等待,具体编译时间与电脑配置有关,主机CPU核心数越多、性能越高、内存越大编译时间会大幅度缩减。同时编译中需要下载源码,一个好的上网环境可以大幅度提高编译时间。
编译中如果有报错:
可以再次执行编译命令,如果是相同的错误,请仔细阅读log文件,根据提示进行相关的操作。
编译完成后生成的镜像在build/tmp/deploy/image文件夹下。
ls tmp/deploy/images/romulus/
请参考OpenBmc开发:错误汇总