update_engine是google提供的一个升级模块,对于linux的平台,我们可以移植到我们的嵌入式平台,通过update_engine模块对系统升级,最近由于工作需要,在linux平台上面移植一下,其中遇到了很多问题,在不停的寻找答案中,问题都一一解决了,现在分享一下移植的过程,提供给有同样需求的同鞋。
移植过程如下:
1. 获取update_engine的源码
https://github.com/coreos/update_engine。
2. 编译buildroot的代码
source build/envsetup.sh
cd buildroot
make mesona111_xxxxb_defconfig
make
3. 拷贝update_engien代码至buildroot/output/build/
mv update_engine-master update_engine
4. 查看update_engine目录,发现里面没有makefile,只有autogen.sh configure.ac Makefile.am三个文件,我们需要通过这三个文件生成makefile。我们先查看configure.ac:
发现update_engine需要依赖其他的模块,但是我们不确定哪些是已经有的,哪些还没有,我们直接执行,根据错误提示信息,然后把对应的模块添加进来。
5. 生成configure(生成makefile需要的)
./autogen.sh
有如下错误信息:
+ autoreconf --force --install --symlink
Can't exec "libtoolize": No such file or directory at /usr/bin/autoreconf line 196.
Use of uninitialized value in pattern match (m//) at /usr/bin/autoreconf line 196.
configure.ac:4: error: Autoconf version 2.69 or higher is required
configure.ac:4: the top level
autom4te: /usr/bin/m4 failed with exit status: 63
aclocal: /usr/bin/autom4te failed with exit status: 63
autoreconf: aclocal failed with exit status: 63
根据提示信息,是autoconf的版本太低导致的,编译过程我们发现,sdk本身编译出了autoconf工具:
autoconf --version (autoconf (GNU Autoconf) 2.68)
output/host/usr/bin/autoconf --version (autoconf (GNU Autoconf) 2.69)