openEuler Embedded快速上手与qemu应用问题补充

openEuler Embedded快速上手与qemu应用问题记录

参考链接:快速上手 — openEuler Embedded在线文档 1.0.0 documentation
按照手册安装时遇到许多问题,在此记录。

openEuler Embedded快速上手

1. 安装必要的主机包

问题1:自动安装不想要的podman-docker

第一步sudo yum install python3 python3-pip docker,会自动安装podman-docker,无法进行后续操作。
解决方法:应当执行下面的命令,安装docker-ce:

sudo yum install python3 python3-pip docker-ce

问题2:docker重启失败

执行sudo systemctl restart docker时出现下述错误:

[root@localhost ~]# sudo systemctl daemon-reload && sudo systemctl restart docker
Job for docker.service failed because the control process exited with error code.
See "systemctl status docker.service" and "journalctl -xe" for details.

systemctl status docker.service查看具体错误信息如下:

[root@localhost ~]# systemctl status docker.service
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Tue 2023-10-24 13:47:47 CST; 4s ago
     Docs: https://docs.docker.com
  Process: 303558 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=1/FAILURE)
 Main PID: 303558 (code=exited, status=1/FAILURE)
...

解决方法:参考链接centos7 - Docker service start failed - Stack Overflow

2. 初始化oebuild构建环境

注意:在执行oebuild init <work_dir> 之前,需要先用su user切换为普通用户。

在linux上安装qemu:

https://zhuanlan.zhihu.com/p/631195884
遇到一些问题,上网查找解决了。

4. 使用oebuild构建一个qemu-aarch64镜像

https://openeuler.gitee.io/yocto-meta-openeuler/master/yocto/oebuild.html
按安装文档执行完pip install oebuild之后运行报错,通过另一种安装方式(二进制包安装)解决了,仓库README文档给出了这种安装方式,openEuler网站文档没有给出,提了一个issue:
https://gitee.com/openeuler/oebuild/issues/I7WJ2W
构建得到iso文件,但未能正常运行,提示No bootable device,待处理

5. 在qemu上运行构建出来的镜像

将上一步得到的.iso文件载入qemu的虚拟机中即可

6. 简单写一个hello的c语言程序

#include <stdio.h>
int main() {
    printf("Hello, World!\n");
    return 0;
}

7. 使用交叉编译链编成二进制程序

将x86的c语言文件交叉编译为aarch64的二进制程序
gcc hello.c -o hello

8. 在qemu上运行的镜像上成功运行二进制程序

posted @ 2023-08-30 21:12  Digitzh  阅读(292)  评论(0)    收藏  举报