【openbmc编译镜像】

生不带来,死带不走系列


前言

参考链接:https://blog.csdn.net/qq_34160841/category_9800067.html?spm=1001.2014.3001.5515
原文章很棒,但是我遇到的问题比他多o(╥﹏╥)o主要还是问题记录为主


一、首先有代码

玛卡巴卡

二、编译过程

1.环境

ubuntu16.04需要python3.6版本以上
个人环境:ubuntu18.04

2.编译镜像

2-1查看编译配置(对我来说没啥用,没有过多学习)

find meta-* -name local.conf.sample

2-2生成编译配置

这里最好查一下这方面的知识
方法一:

. setup <machine>

方法二:

export TEMPLATECONF=meta-ibm/meta-romulus/conf 
. openbmc-env1		# “.== source

2-3下载download包

如果你的downloads文件不在build目录下需要增加DL_DIR ?= “your downloads path”
如果你一开始就解压到你指定的<machine>机器下,你会发现后面再指定一个机器时还要再搞一次,嗯。。。看你心情

2-4 修改配置文件

列举一下你可能修改的:
如果在局域网或者没有联网环境开发,需要在local.conf中添加BB_NO_NETWORK = “1”,否则会有如下错误
在这里插入图片描述
其他配置没有修改的必要,例如:编译的线程数类的配置,你修改后可能会因为线程太多编译出错(后面我就遇到了)

2-5编译镜像

bitbake obmc-phosphor-image
time bitbake obmc-phosphor-image #加time显示编译时间
如果只下载不编译执行:
bitbake obmc-phosphor-image -c fetch

2-6编译可能遇到的问题

建议:不要或谨慎根据网上操作删除本地或编译下载的数据包,否则可能造成未知问题,从而重新编译
问题一:
出现很多的*.tar.gz包或者*.bb包报错找不到
如果你用setup制定了后,download压缩包要放到指定目录下,而不是放在build目录下
问题二:
在这里插入图片描述
如果在局域网或者没有联网环境开发,需要在local.conf中添加BB_NO_NETWORK = “1”
但是本人实际在首次编译时会报出该错误,添加BB_NO_NETWORK = "1"后编译会报出其他错误,此时再将BB_NO_NETWORK删除就可以了,编译也不会报BB_NO_NETWORK的错误
问题三:
在这里插入图片描述
出现该问题,查找pdbg的bb文件,SRCREV配置问题,用tag信息。就是说,在编译过程中,会通过gitlab等进行版本验证,因为网络是不通的,并且download压缩包内没有,所以会出现报错,而所谓的用tag信息,是指改为当前版本的commit id,这样就不会出现去下载验证,而是直接用当前的。
例如上面:在pdbg的bb文件,SRCREV值改为commit id即可
问题四:
出现webui_git.bb文件中,因为npm没有安装,出现npm报错.原因:(1)npm设置参数中,http* 参数为空,出现报错。(2)第二个错误是网络问题,删除webui的编译即可,用不到webui,并且网络环境也不支持
我遇到webui报错处理方式是不编译,找到“phosphor-webui”的编译处将他删掉
问题五:
忘记截图

ERROR: Worker process (12928) exited unexpectedly (-9), shutting down...

差不多这样一句话,就是因为想缩短编译时间,无脑给了较大的编译线程数导致的,这也是为啥建议不改编译线程数,不然查起来问题。。。ε=(´ο`*)))唉
问题六:
在这里插入图片描述
oe_runmake failed:类似这种报错,是由于中断编译造成(百度解释)
解决方案是:bitbake -c clean xxx。例如此处,bitbake -c clean phosphor-user-manager
问题七:
在这里插入图片描述
出现该问题,可以bitbake clean也可以去修改报错的bb文件加个空格类的操作,重新保存重新编译加载该文件即可
问题八:
忘记了记了。。。

2-7定位问题的方法(百度到的,链接忘了)

仔细阅读提示发现这么一句话log file is located at /home/zgt/work/zynq7000/elphel393/poky/build/tmp/work/elphel393-poky-linux-gnueabi/linux-xlnx/4.9-xilinx-v2017.3+gitAUTOINC+9c2e29b2c8-r0/temp/log.do_compile.127632
打开log.do_compile.127632文件,搜索Error等关键字可定位出错误位置

2-8查看镜像

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

2-9启动镜像

1-如果你有机器(那你有钱),将镜像文件烧写(拷贝)到机器重启就行了
2-通过qemu模拟

3.启动镜像

● 下载:https://jenkins.openbmc.org/job/latest-qemu-x86/lastSuccessfulBuild/artifact/qemu/build/qemu-system-arm
● 增加权限:chmod u+x qemu-system-arm
● 执行:

./qemu-system-arm -m 256 -M romulus-bmc -nographic \	# 指定虚拟机内存256MB,制定机型romulus-bmc,无窗口运行
-drive file=./obmc-phosphor-image-romulus.static.mtd,format=raw,if=mtd \	# 指定镜像文件路径
-net nic \	# 添加一块虚拟的网卡,这里是用户模式,可是定hostfwd,映射到本地端口上
-net user,hostfwd=:127.0.0.1:2222-:22,hostfwd=:127.0.0.1:2443-:443,hostfwd=udp:127.0.0.1:2623-:623,hostname=qemu

● 用户名/密码:root/0penBmc
● 检查系统状态:obmcutil state

3-1问题

忘记截图
就是镜像启动时有很多报错(十条以上)建议重启linux在用qemu启动

4.题外话

  1. 大佬们,CSDN写博客怎么添加首行缩进啊,好烦
  2. 写博客不能Ctrl c/v图片吗,只能一张一张插入吗,好烦

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenBMC(开放式基础管理控制器)是一个开源项目,旨在提供给云计算服务供应商和企业具备完全控制硬件基础设施的能力。编译OpenBMC有以下几个步骤: 首先,安装必要的软件依赖项。在Linux系统中,可以使用包管理器来安装所需的软件包,如GCC编译器、Make工具、Git版本控制工具和其他开发库。 然后,通过Git下载OpenBMC源代码。可以使用以下命令将代码克隆到本地目录: ``` git clone https://github.com/openbmc/openbmc.git ``` 接下来,进入OpenBMC源代码目录,并执行配置命令。通过配置命令,可以选择要编译和安装的组件、目标硬件平台以及其他选项。例如: ``` ./configure --enable-host --enable-phosphor-logging ``` 然后,使用Make工具进行编译。Make会根据配置生成的Makefile文件来编译源代码并生成可执行文件。执行以下命令进行编译: ``` make ``` 编译时间可能会比较长,耐心等待。如果一切顺利,编译完成后将生成可执行文件和库文件等。 最后,进行安装。执行以下命令将编译生成的文件安装到指定的目录中(可以根据需要修改目录): ``` make install DESTDIR=/path/to/installation/directory ``` 安装完成后,可以根据需要进行配置和使用OpenBMC。 需要注意的是,编译OpenBMC可能涉及到额外的配置和依赖项,具体详细步骤可能会因为不同的系统和需求而略有差异,建议参考OpenBMC官方文档和相关社区讨论获取更详尽的指导。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值