生不带来,死带不走系列
文章目录
前言
参考链接: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.题外话
- 大佬们,CSDN写博客怎么添加首行缩进啊,好烦
- 写博客不能Ctrl c/v图片吗,只能一张一张插入吗,好烦