基于Ubuntu20.04搭建OpenHarmony v3.0.6的qemu仿真环境

这篇具有很好参考价值的文章主要介绍了基于Ubuntu20.04搭建OpenHarmony v3.0.6的qemu仿真环境。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0. 前言

出于个人兴趣,也出于对国产操作系统的好奇,想尝试一下以LiteOS为内核的Openharmony。但过程相当不顺利,主要原因是官方文档内容组织的不敢恭维。挺好的东西,不把说明书写好,让用户怎么用?我研究的核心问题就一个:如何在基于Qemu仿真的Openharmony中输出一个hello world。大家可以看看这个官方网站:https://www.openharmony.cn/mainPlay,看看能不能找到教程,能不能找到从安装环境到用Qemu仿真的教程。

你不能让只是好奇的用户直接去买板子吧。可看看官方教程写的,全是各种设备的操作。这是文档组织者的傲慢。如果Openharmony官方文档写得足够好,这篇博客本不该存在。

好,牢骚发完了。说一下这篇博客大致在干什么事。这篇博客基于在VMware上新创建的Ubuntu 20.04.1,搭建Openharmony的运行环境,如何正确编译并进入Qemu的仿真。

1. 安装Ubuntu

版本为20.04.1

1.1 更换华为源

这一步本身不是必须,但为了未雨绸缪,还是把ubuntu的源换成huawei源,和他们开发人员保持一致。

sudo gedit /etc/apt/sources.list

替换为以下内容

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://repo.huaweicloud.com/ubuntu/ focal main restricted
# deb-src http://repo.huaweicloud.com/ubuntu/ focal main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://repo.huaweicloud.com/ubuntu/ focal-updates main restricted
# deb-src http://repo.huaweicloud.com/ubuntu/ focal-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://repo.huaweicloud.com/ubuntu/ focal universe
# deb-src http://repo.huaweicloud.com/ubuntu/ focal universe
deb http://repo.huaweicloud.com/ubuntu/ focal-updates universe
# deb-src http://repo.huaweicloud.com/ubuntu/ focal-updates universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://repo.huaweicloud.com/ubuntu/ focal multiverse
# deb-src http://repo.huaweicloud.com/ubuntu/ focal multiverse
deb http://repo.huaweicloud.com/ubuntu/ focal-updates multiverse
# deb-src http://repo.huaweicloud.com/ubuntu/ focal-updates multiverse

## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb http://repo.huaweicloud.com/ubuntu/ focal-backports main restricted universe multiverse
# deb-src http://repo.huaweicloud.com/ubuntu/ focal-backports main restricted universe multiverse

## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu focal partner
# deb-src http://archive.canonical.com/ubuntu focal partner

deb http://repo.huaweicloud.com/ubuntu/ focal-security main restricted
# deb-src http://repo.huaweicloud.com/ubuntu/ focal-security main restricted
deb http://repo.huaweicloud.com/ubuntu/ focal-security universe
# deb-src http://repo.huaweicloud.com/ubuntu/ focal-security universe
deb http://repo.huaweicloud.com/ubuntu/ focal-security multiverse
# deb-src http://repo.huaweicloud.com/ubuntu/ focal-security multiverse
sudo apt update

1.2 安装必要工具

sudo apt install ssh net-tools tree vim

2. 下载代码

Openharmony v3.0.6 下载地址: https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.0.6%2Fcode-v3.0.6-LTS.tar.gz

说明文档:https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/OpenHarmony-v3.0.6-LTS.md

2.1 解压与目录设置

sudo chmod 777 code-v3.0.6-LTS.tar.gz
tar -xvzf code-v3.0.6-LTS.tar.gz -C /home/liteos/

3. 配置环境

3.1 安装库和工具

sudo apt update
sudo apt install binutils binutils-dev gcc g++ git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev
sudo apt install libc6-dev-amd64  x11proto-core-dev libx11-dev  ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip python3.8-distutils qemu-system-arm

sudo apt install ruby genext2fs device-tree-compiler make libffi-dev e2fsprogs pkg-config perl openssl libssl-dev libelf-dev libdwarf-dev u-boot-tools mtd-utils cpio doxygen liblz4-tool openjdk-8-jre texinfo dosfstools mtools default-jre default-jdk libncurses5 apt-utils wget scons  tar rsync git-core libxml2-dev lib32z-dev grsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools pcmciautils quota ppp libtinfo-dev libtinfo5 libncurses5-dev libncursesw5 libstdc++6 gcc-arm-none-eabi vim ssh locales libxinerama-dev libxcursor-dev libxrandr-dev libxi-dev

sudo apt install gcc-arm-linux-gnueabi lib32ncurses5-dev lib32z1-dev

注:与官方文档相比,少安装libc6-dev-i386 (在安装gcc-arm-linux-gnueabi时自动安装)。gcc-multilibg++-multilib放弃安装,原因在问题1中分析。多了qemu-system-arm。

3.2 设置python版本

# 查看Python 3.8的位置, 我这里是/usr/bin/python3.8
# 因此下面也用这个地址
which python3.8

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1

# 验证
python --version

3.3 安装编译工具hb

pip3 install --user build/lite
vim ~/.bashrc 

# .bashrc 中写入 export PATH=~/.local/bin:$PATH

source ~/.bashrc

查看 hb 工具

hb -h

打印以下内容

usage: hb

OHOS build system

positional arguments:
  {build,set,env,clean}
    build               Build source code
    set                 OHOS build settings
    env                 Show OHOS build env
    clean               Clean output

optional arguments:
  -h, --help            show this help message and exit

卸载 hb 工具

pip3 uninstall ohos-build

3.4 切换dash为bash

sudo dpkg-reconfigure dash  # 选择 no

这一步很重要,否则可能在后续编译中会出现

[2158/2644] ACTION //kernel/liteos_a:make(//build/lite/toolchain:linux_x86_64_ohos_clang)
FAILED: obj/kernel/liteos_a/make_build_ext_components.txt 
/usr/bin/python3 ../../../build/lite/build_ext_components.py .........

4. 编译

4.1 hb构建

# (第一次时)输入文件路径
# 并选择 qemu_small_system_demo 对应 LiteOS-A
hb set

基于Ubuntu20.04搭建OpenHarmony v3.0.6的qemu仿真环境

hb build -f

4.2 启动qemu

./qemu-run -f

输出

01-01 00:00:10.446 9 43 I 015C0/dsoftbus_standard: [COMM]LoopTask[Loop-default], stop ==1
01-01 00:00:10.446 9 43 I 015C0/dsoftbus_standard: [COMM]LoopTask[Loop-default], running =0
01-01 00:00:10.447 9 16 I 015C0/dsoftbus_standard: [COMM][Loop-default] get running = 0
01-01 00:00:10.447 9 16 I 015C0/dsoftbus_standard: [COMM][Loop-default] destroy
01-01 00:00:10.447 9 16 E 015C0/dsoftbus_standard: [COMM]softbus framework init failed.   # 此时需要按一下回车进入OHOS

OHOS:/$ 

注意

  1. 输出无更新时,按一下回车,进入OHOS
  2. 退出qemu仿真环境,先按ctrl+a再按x

5. 第二种环境配置方案

5.1 前置步骤

依次执行:

  • 2 下载代码
  • 按照3.1中的软件包列表,或者OpenHarmony/docs/docker/Dockerfile中的软件包列表进行安装

5.2 更改环境变量

sudo vim ~/.bashrc

添加以下内容

export PATH=/home/wh/code/code-v3.0.6-LTS/OpenHarmony/prebuilts/clang/ohos/linux-x86_64/llvm/bin:$PATH
export PATH=~/.local/bin:$PATH
export PATH=/home/wh/code/code-v3.0.6-LTS/OpenHarmony/prebuilts/build-tools/linux-x86/bin:$PATH
export PATH=/home/wh/code/code-v3.0.6-LTS/OpenHarmony/prebuilts/gcc/linux-x86/arm/gcc-linaro-7.5.0-arm-linux-gnueabi/bin:$PATH
export PATH=/home/wh/code/code-v3.0.6-LTS/OpenHarmony/prebuilts/cmake/linux-x86/bin:$PATH
source  ~/.bashrc

没错,这一步的目的主要是使用代码包中已有的各种关键工具。

5.3 后续步骤

从 3.2 设置python版本开始,继续执行

6. 问题

问题1: gcc-multilib和gcc-arm-linux-gnueabi冲突

wh@ubuntu:/home/liteos$ sudo apt install gcc-arm-linux-gnueabi
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libc6-dev:i386 libcrypt-dev:i386 linux-libc-dev:i386
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  binutils-arm-linux-gnueabi cpp-9-arm-linux-gnueabi cpp-arm-linux-gnueabi gcc-10-cross-base gcc-9-arm-linux-gnueabi
  gcc-9-arm-linux-gnueabi-base gcc-9-cross-base libasan5-armel-cross libatomic1-armel-cross libc6-armel-cross libc6-dev-armel-cross
  libgcc-9-dev-armel-cross libgcc-s1-armel-cross libgomp1-armel-cross libstdc++6-armel-cross libubsan1-armel-cross
  linux-libc-dev-armel-cross
Suggested packages:
  binutils-doc gcc-9-locales cpp-doc gcc-9-multilib-arm-linux-gnueabi gcc-9-doc autoconf automake libtool gdb-arm-linux-gnueabi
  gcc-doc
The following packages will be REMOVED:
  gcc-multilib
The following NEW packages will be installed:
  binutils-arm-linux-gnueabi cpp-9-arm-linux-gnueabi cpp-arm-linux-gnueabi gcc-10-cross-base gcc-9-arm-linux-gnueabi
  gcc-9-arm-linux-gnueabi-base gcc-9-cross-base gcc-arm-linux-gnueabi libasan5-armel-cross libatomic1-armel-cross libc6-armel-cross
  libc6-dev-armel-cross libgcc-9-dev-armel-cross libgcc-s1-armel-cross libgomp1-armel-cross libstdc++6-armel-cross
  libubsan1-armel-cross linux-libc-dev-armel-cross
0 upgraded, 18 newly installed, 1 to remove and 0 not upgraded.
Need to get 26.0 MB of archives.
After this operation, 90.9 MB of additional disk space will be used.
Do you want to continue? [Y/n] 

方案:考虑到安装gcc-arm-linux-gnueabi后,可以安装gcc-9-multilib-arm-linux-gnueabi,放弃gcc-multilib

sudo apt install gcc-arm-linux-gnueabi -y
sudo apt install gcc-9-multilib-arm-linux-gnueabi -y

7. 参考文献

  1. https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/Readme-CN.md#/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-pkg-prepare.md

  2. 同时也感谢L同学的大力支持文章来源地址https://www.toymoban.com/news/detail-485700.html

到了这里,关于基于Ubuntu20.04搭建OpenHarmony v3.0.6的qemu仿真环境的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • git lfs搭建 —— ubuntu20.04

      一直使用git lab,临时需要放一些pdf文档但有不需要git来版本管理(个人感觉比较占用资源),百度了一通,决定用git lfs.同时发现git lab有内置lfs使用说明,结合网上查得,总结如下,也是个人操作留档. 本人使用vscode,虽然配置过程全部命令行,之后用vscode推送时,不用区分代码和lfs文

    2024年02月09日
    浏览(40)
  • ubuntu20.04搭建arm交叉编译环境

    源码下载地址:Downloads | GNU-A Downloads – Arm Developer 要根据目标系统选择编译器版本,我的主板: aarch64bit体系结构(arm 64bit),linux内核GNU操作系统=GNU/Linux操作系统(简称linux) 大端模式(Big-endian),是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存

    2023年04月24日
    浏览(50)
  • Ubuntu 20.04 与22.04 内网apt源搭建

    采用官方提供apt-mirror方式进行搭建 由于单个发行版apt包磁盘占用600G左右,建议1T磁盘空间 名称 ip 主机名 配置 操作系统 apt内网源服务器 192.168.0.201 CT1 1C 2G 1T Ubuntu 20.04 LTS 内网客户端 192.168.0.202 CT2 1C 1G 50G Ubuntu 20.04 LTS 阿里云apt同步源 国内apt下载下载较慢,设置阿里云apt同步

    2024年02月04日
    浏览(62)
  • Ubuntu20.04+SGX(一):环境搭建与测试

    Ubuntu 20.04 Intel® Xeon® Gold 5318Y 测试方法参考官方文档 如果输出为空,则表示不支持,可以使用simulation mode,但该模式不能用于发布版环境。 如果输出中包含 SGX_LC: SGX launch config supported = true ,则支持DCAP(数据中心标记基元,即远程认证服务)功能。FLC 即 Flexible Launch Control。

    2024年02月09日
    浏览(45)
  • Ubuntu20.04 搭建W版本OpenStack平台

    目录 一、基础环境配置 1.controller、compute配置网卡地址 2.配置域名解析 3.NTP时间同步 二、添加OpenStack-wallaby软件包及基本环境 1、OpenStack 服务的所有节点上添加软件包 2、Mysql数据库 3、Rabbitmq消息队列 4、Memcached 5、etcd环境部署 三、keystone服务 四、glance镜像服务 五、Placement环

    2024年02月15日
    浏览(37)
  • Ubuntu 20.04 搭建OpenStack Yoga(allinone)

    很多文章都是devstack安装的allinone,我这里使用源码组件手动安装。 Environment 这里需要先配置一些环境。 首先我这里是虚拟机安装的系统,可能设置的密码不是当前用户的root密码,反正就得重置一下 执行下面的命令,然后输入安装系统设置的密码,之后就可以了。 sudo pass

    2024年01月24日
    浏览(43)
  • 【Ubuntu 20.04安装和深度学习环境搭建 4090显卡】

    Ubuntu安装步骤参考文章 知乎:Ubuntu 20.04系统安装及初始配置 先在Ubuntu官网下载系统镜像(或直接bing搜索对应版本)。【Ubuntu官网】 参考这篇文章 https://blog.csdn.net/qq_21386397/article/details/129894803 需要准备一个U盘(使用之前将U盘中内容做好备份,做成启动盘后U盘内文件将被清

    2024年02月09日
    浏览(72)
  • Ubuntu20.04搭建OpenGL环境(glfw+glad)

    本文在VMware安装Ubuntu20.04桌面版的环境下搭建OpenGL, 按照本文搭建完成后可以执行LearnOpenGL网站上的demo 。 关于VMware可自行到VMware Workstation Pro | CN下载 关于Ubuntu20.04桌面版可自行到官网或Index of /ubuntu-releases/20.04.6/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror下载 这里窗口

    2024年02月12日
    浏览(59)
  • ubuntu 20.04 搭建crash dump问题分析环境

    主机环境和内核版本信息: 参考了Ubuntu Kernel crash dump这篇文章 如果通过上面的命令安装ubuntu内核调试符号,则需要通过下面的方法去安装,参考文章:安装ubuntu内核调试符号 1.5.1 GPG 秘钥导入 确保您拥有系统的 GPG 密钥。适用于16.04 及更高版本的 Ubuntu : 对于旧的发布版本

    2024年02月05日
    浏览(45)
  • 从头搭建Android源码编译环境(Ubuntu 18.04 / 20.04 / 22.04)

    在新安装的Ubuntu上(版本20.04LTS),完成搭建Android源码编译环境步骤如下。 顺带说一句,当前用的比较多的Ubuntu是18.04和20.04,在实际项目中一直在用,可用性和稳定性都没问题。 最新的Ubuntu22.04版本,系统默认的二进制库变化比较大,编译Android源码有问题(实测过,没细研

    2024年02月06日
    浏览(161)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包