By: fulinux
E-mail: fulinux@sina.com
Blog: https://blog.csdn.net/fulinus
喜欢的盆友欢迎订阅!
你的喜欢就是我写作的动力!
返回总目录 : Yocto开发讲解系列 - 总目录
devtool deploy-target命令
使用devtool deploy-target命令可以将recipe的构建的do_install任务中安装的所有文件直接输出部署到运行着的目标机器上,目标机器上面需要运行ssh服务。
注意:部署目标功能仅用于开发。您永远不要使用它来更新将在生产中使用的映像。
结合我们的qemux86-64平台,先运行系统,然后将上次安装到系统中的learnyocto程序删除:
build]$ runqemu qemux86-64
...
runqemu - INFO - Network configuration: ip=192.168.7.2::192.168.7.1:255.255.255.0
...
- 1
- 2
- 3
- 4
在另外一个shell终端上登录,并删除learnyocto:
$ ssh root@192.168.7.2
root@qemux86-64:~# rm /usr/bin/learnyocto
- 1
- 2
为了演示我们正常的开发流程,我先在项目的main函数里面加一条打印:
build]$ vim workspace/sources/learnyocto/main.c
- 1
#include <stdio.h>
int main (int argc, char **argv)
{
printf ("[develop branch]Hello Yocto!\n");
printf ("[develop branch]learn devtool deploy-target\n");
return 0;
} /* ----- End of main() ----- */
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
编译:
$ devtool build learnyocto
- 1
编译通过后,想看实际修改的效果,还是每次要调用
devtool build-image
命令来生成目标镜像,然后再运行吗?No!
在线部署
我们今天学习一个新的方法,使用devtool deploy-target命令,将我们的recipe要安装的文件等直接部署到运行的机器中去,参考下面先将其部署到用户根目录下看看:
build]$ devtool deploy-target learnyocto root@192.168.7.2:~/
$ ssh root@192.168.7.2
root@qemux86-64:~# ls -l usr/bin/
-rwxr-xr-x 1 root root 23512 Oct 24 02:55 learnyocto
root@qemux86-64:~# ./usr/bin/learnyocto
[develop branch]Hello Yocto!
[develop branch]learn devtool deploy-target #后面加的一个打印
root@qemux86-64:~#
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
可见其执行程序已经部署到机器上了。这个部署的过程有点像是将下面目录:
build]$ ls workspace/sources/learnyocto/oe-workdir/image/usr/
- 1
复制到了板子上了。
正常部署时,目标路径应该是系统根目录,如下:
build]$ devtool deploy-target learnyocto root@192.168.7.2:/
#另一个shell终端中:
root@qemux86-64:~# learnyocto
[develop branch]Hello Yocto!
[develop branch]learn devtool deploy-target #后面加的一个打印
root@qemux86-64:~#
- 1
- 2
- 3
- 4
- 5
- 6
部署失败的情况
有些情况下部署会失败:
- 需要部署程序正在运行,或者库被依赖使用中
- 目标机器上没有没有安装应用程序所依赖的库或者其他程序
该命令不会自动部署程序依赖的其他库和程序
谢谢阅读!希望帮我点个赞加关注,你的喜欢就是我持续更新的动力!