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 test