|
|
# HybridOS Project
|
|
|
|
|
|
## Introduction
|
|
|
|
|
|
The HybridOS is an open source collaboration project.It provides
|
|
|
a unified programming environment that helps embedded developers
|
|
|
create application regardless of the hardware architecture.
|
|
|
|
|
|
|
|
|
## Platform Architecture
|
|
|
|
|
|
The following diagram shows the major components of the HybridOS platform.
|
|
|
|
|
|
|
|
|
```
|
|
|
+----------------------------------------------------------------+
|
|
|
| Application |
|
|
|
+----------------------------------------------------------------+
|
|
|
| HybridOS Application Framework(hiWebKit) |
|
|
|
| |
|
|
|
| minigui hiCairo hiBus hiLogged hiSec ... |
|
|
|
|----------------------------------------------------------------|
|
|
|
| Libaries | HybridOS Abstract Layer |
|
|
|
| libc freetype glib ... | |
|
|
|
+----------------------------------------------------------------+
|
|
|
| Linux kernel |
|
|
|
| |
|
|
|
| BSP |
|
|
|
+----------------------------------------------------------------+
|
|
|
|
|
|
```
|
|
|
|
|
|
### Linux kernel
|
|
|
|
|
|
The foundation of the HybridOS is the Linux kernel.
|
|
|
|
|
|
* BSP: The BSP (board support package) is the layer of software containing
|
|
|
hardware-specific drivers and other routines for hardware vendors to implement.
|
|
|
|
|
|
|
|
|
### Libaries
|
|
|
|
|
|
Native libraries written in C and C++. Libc ...
|
|
|
|
|
|
|
|
|
### HybridOS Abstract Layer
|
|
|
|
|
|
The HybridOS Abstract Layer defines standard interfaces for hardware
|
|
|
vendors to implement, which expose device hardware capabilities to the
|
|
|
higher-level HybridOS Application Framework framework.
|
|
|
|
|
|
|
|
|
### HybridOS Application Framework(hiWebKit)
|
|
|
|
|
|
The HybridOS application framework is used by application developers.
|
|
|
|
|
|
|
|
|
### Application
|
|
|
|
|
|
HybridOS comes with a set of core apps for xx, xx, xx, and more.
|
|
|
|
|
|
|
|
|
## Supported Linux Distributions
|
|
|
|
|
|
Currently, the HybridOS is supported on the following distributions:
|
|
|
|
|
|
> **Notes**
|
|
|
> * HybridOS releases are tested against the stable Linux distributions
|
|
|
> in the following list. The HybridOS should work on other distributions
|
|
|
> but validation is not performed against them.
|
|
|
>
|
|
|
> * ...
|
|
|
|
|
|
|
|
|
* Ubuntu 18.04
|
|
|
|
|
|
|
|
|
## Package
|
|
|
|
|
|
### Package type
|
|
|
|
|
|
* binary: lib, bin
|
|
|
* dev: for developer
|
|
|
* src: sources code
|
|
|
|
|
|
### Package directory structure
|
|
|
|
|
|
#### Root diretory
|
|
|
|
|
|
* /opt/hybridos/{cpuinfo}/{soc}/
|
|
|
- cpuinfo: x86, arm
|
|
|
- soc: i386, amd64, AllwinnerR16, Snapdragon865
|
|
|
|
|
|
```
|
|
|
/opt/hybridos
|
|
|
|-- x86/
|
|
|
| |-- i386/
|
|
|
| |-- amd64/
|
|
|
|
|
|
|
|-- arm/
|
|
|
| |-- AllwinnerR16/
|
|
|
| |-- Snapdragon865/
|
|
|
| |-- ...
|
|
|
```
|
|
|
|
|
|
* /opt/hybridos/{soc}/
|
|
|
|
|
|
```
|
|
|
/opt/hybridos
|
|
|
|-- i386/
|
|
|
|-- amd64/
|
|
|
|-- AllwinnerR16/
|
|
|
|-- Snapdragon865/
|
|
|
|-- ...
|
|
|
```
|
|
|
|
|
|
#### subdirectory
|
|
|
|
|
|
```
|
|
|
/{Root directory}/
|
|
|
|-- bin/
|
|
|
|-- lib/
|
|
|
|-- etc/
|
|
|
|-- include/
|
|
|
|-- sbin/
|
|
|
|-- share/
|
|
|
|-- ...
|
|
|
|
|
|
|
```
|
|
|
|
|
|
* bin:
|
|
|
* lib:
|
|
|
* etc:
|
|
|
* include:
|
|
|
* sbin:
|
|
|
* share:
|
|
|
|
|
|
|
|
|
## Virtual Machines(VM) and Containers(Docker, Lxc/Lxd)
|
|
|
|
|
|
HibridOS provide virtual machine and container images to help developers
|
|
|
quickly configure development and test environments.
|
|
|
|
|
|
* Fast Setup for Developers:
|
|
|
- 1 hour to get logged in, install the VM/Container software , and download the image.
|
|
|
- 1 hour to pull down the source code, run the initial build and walk through the environment configuration steps.
|
|
|
|
|
|
* Environment Consistency: No more choices about where to install software or what versions were being used.
|
|
|
|
|
|
* Fast Recovery: As developers, we like to play with stuff. New tools, versions, configurations, etc. With a virtualized environment, there is no risk anymore. You can try out things and easily revert back to a good state, or start with the latest image again.
|
|
|
|
|
|
|
|
|
### development and test environment
|
|
|
|
|
|
* Host: x86/x86_64
|
|
|
* Container: x84/x86_64 lxc/lxd
|
|
|
- It offers a user experience similar to virtual machines but using Linux containers instead.
|
|
|
|
|
|
### simulation environment: qemu/virtual box
|
|
|
|
|
|
> LXD Containers on Other Architectures (not supported)
|
|
|
> https://discuss.linuxcontainers.org/t/lxd-containers-on-other-architectures/2331
|
|
|
|
|
|
* Host: x86/x86_64
|
|
|
* Simulation: arm/... qemu/virtual box
|
|
|
|
|
|
|
|
|
### Lxc/Lxd image
|
|
|
|
|
|
* Create
|
|
|
* Publish
|
|
|
* Update
|
|
|
|
|
|
### qemu/virtual box image
|
|
|
|
|
|
* Create
|
|
|
* Publish
|
|
|
* Update
|
|
|
|
|
|
### rom image
|
|
|
|
|
|
* Build
|
|
|
* Test
|
|
|
|
|
|
## hpm (HybridOS Package management systems)
|
|
|
|
|
|
hpm is the software at the base of the package management system in
|
|
|
the HybridOS. hpm is used to install, remove, and provide information
|
|
|
about .hpm packages.
|
|
|
|
|
|
### hpm command
|
|
|
|
|
|
* update : Update the Package Index, The HPM package index is essentially
|
|
|
a database of available packages from the repositories defined in
|
|
|
the /{Root directory}/etc/hpm/sources.list file and in
|
|
|
the /{Root directory}/etc/hpm/sources.list.d directory.
|
|
|
|
|
|
```
|
|
|
sudo hpm update
|
|
|
```
|
|
|
|
|
|
* install:Install a Package
|
|
|
|
|
|
```
|
|
|
sudo hpm install hibus
|
|
|
```
|
|
|
|
|
|
* remove: Remove a Package
|
|
|
|
|
|
```
|
|
|
sudo hpm remove hibus
|
|
|
```
|
|
|
|
|
|
* clean: cleans the packages and install script in /{Root directory}/var/cache/hpm/archives/
|
|
|
|
|
|
```
|
|
|
sudo hpm clean
|
|
|
```
|
|
|
|
|
|
|
|
|
## hiWebKit
|
|
|
|
|
|
### These are dependencies necessary for building WebKitGTK.
|
|
|
* autoconf
|
|
|
* automake
|
|
|
* autopoint
|
|
|
* autotools-dev
|
|
|
* bubblewrap
|
|
|
* cmake
|
|
|
* gawk
|
|
|
* geoclue-2.0
|
|
|
* gnome-common
|
|
|
* gperf
|
|
|
* gtk-doc-tools
|
|
|
* intltool
|
|
|
* itstool
|
|
|
* libasound2-dev
|
|
|
* libatk1.0-dev
|
|
|
* libedit-dev
|
|
|
* libenchant-dev
|
|
|
* libevent-dev
|
|
|
* libfaad-dev
|
|
|
* libffi-dev
|
|
|
* libfile-copy-recursive-perl
|
|
|
* libgcrypt20-dev
|
|
|
* libgirepository1.0-dev
|
|
|
* libgl1-mesa-dev
|
|
|
* libgl1-mesa-glx
|
|
|
* libgtk-3-dev
|
|
|
* libgstreamer1.0-dev
|
|
|
* libgstreamer-plugins-bad1.0-dev
|
|
|
* libgstreamer-plugins-base1.0-dev
|
|
|
* libgudev-1.0-dev
|
|
|
* libhyphen-dev
|
|
|
* libjpeg-dev
|
|
|
* libmount-dev
|
|
|
* libmpg123-dev
|
|
|
* libnotify-dev
|
|
|
* libopus-dev
|
|
|
* libpango1.0-dev
|
|
|
* libpng-dev
|
|
|
* libpulse-dev
|
|
|
* librsvg2-dev
|
|
|
* libseccomp-dev
|
|
|
* libsecret-1-dev
|
|
|
* libsoup2.4-dev
|
|
|
* libsqlite3-dev
|
|
|
* libmysqlclient-dev
|
|
|
* libsrtp2-dev
|
|
|
* libtasn1-6-dev
|
|
|
* libtheora-dev
|
|
|
* libtool
|
|
|
* libvorbis-dev
|
|
|
* libvpx-dev
|
|
|
* libupower-glib-dev
|
|
|
* libwebp-dev
|
|
|
* libwoff-dev
|
|
|
* libxcomposite-dev
|
|
|
* libxt-dev
|
|
|
* libxtst-dev
|
|
|
* libxslt1-dev
|
|
|
* libwayland-dev
|
|
|
* ninja-build
|
|
|
* patch
|
|
|
* ruby
|
|
|
* xfonts-utils
|
|
|
|
|
|
### These are dependencies necessary for running tests.
|
|
|
* apache2
|
|
|
* curl
|
|
|
* dbus-x11
|
|
|
* gdb
|
|
|
* libapache2-mod-bw
|
|
|
* libapache2-mod-php
|
|
|
* php-json
|
|
|
* libcgi-pm-perl
|
|
|
* libgpg-error-dev
|
|
|
* psmisc
|
|
|
* pulseaudio-utils
|
|
|
* python-gi
|
|
|
* python-psutil
|
|
|
* python-yaml
|
|
|
* ruby
|
|
|
* ruby-json
|
|
|
* ruby-highline
|
|
|
* weston
|
|
|
* xvfb
|
|
|
|
|
|
### These are dependencies necessary for building the jhbuild.
|
|
|
* bison
|
|
|
* flex
|
|
|
* git
|
|
|
* gobject-introspection
|
|
|
* gsettings-desktop-schemas-dev
|
|
|
* icon-naming-utils
|
|
|
* libcroco3-dev
|
|
|
* libcups2-dev
|
|
|
* libdrm-dev
|
|
|
* libegl1-mesa-dev
|
|
|
* libepoxy-dev
|
|
|
* libevdev-dev
|
|
|
* libexpat1-dev
|
|
|
* libgbm-dev
|
|
|
* libgles2-mesa-dev
|
|
|
* libgnutls28-dev
|
|
|
* libgpg-error-dev
|
|
|
* libjson-glib-dev
|
|
|
* libinput-dev
|
|
|
* libmtdev-dev
|
|
|
* liborc-0.4-dev
|
|
|
* libp11-kit-dev
|
|
|
* libpciaccess-dev
|
|
|
* libproxy-dev
|
|
|
* libpsl-dev
|
|
|
* libssl-dev
|
|
|
* libtiff5-dev
|
|
|
* libunistring-dev
|
|
|
* libv4l-dev
|
|
|
* libxcb-composite0-dev
|
|
|
* libxcb-xfixes0-dev
|
|
|
* libxfont-dev
|
|
|
* libxfont2
|
|
|
* libxkbfile-dev
|
|
|
* libxkbcommon-x11-dev
|
|
|
* libtool-bin
|
|
|
* libudev-dev
|
|
|
* libxml-libxml-perl
|
|
|
* python-dev
|
|
|
* python3-setuptools
|
|
|
* ragel
|
|
|
* x11proto-bigreqs-dev
|
|
|
* x11proto-composite-dev
|
|
|
* x11proto-gl-dev
|
|
|
* x11proto-input-dev
|
|
|
* x11proto-randr-dev
|
|
|
* x11proto-resource-dev
|
|
|
* x11proto-scrnsaver-dev
|
|
|
* x11proto-video-dev
|
|
|
* x11proto-xcmisc-dev
|
|
|
* x11proto-xf86dri-dev
|
|
|
* xfonts-utils
|
|
|
* xtrans-dev
|
|
|
* xutils-dev
|
|
|
* yasm |
|
|
\ No newline at end of file |