To rapidly support a wide range of devices, our architecture reuses some of the drivers and hardware enablement available for Android.
As a consequence, at the current images you'll find some of the Android services running at the device next to the webOS services.
For quick reference, these are the current components used from Android:
- Linux Kernel (stock Android kernel provided by the vendor, with a few changes to support some extra features needed by Ubuntu)
- OpenGL ES2.0 HAL and drivers
- Audio/Media HAL and services, to re-use the hardware video decoders
- RILD for modem support
Other than the very basic services (needed to re-use the binary blobs already available), the rest is just pure webOS goodness .
Porting webOS ports to another target device consists of several steps:
- Building the Android pieces
- Kernel modifications
- Creating an OpenEmbedded machine layer
- Integration with several webOS components
All in all you should try to make each part of your work available for other people and easily to reproduce so other people can start helping with the port.
Building the Android pieces
Please refer to the Ubuntu Touch porting guide and the chapter Building the Android pieces for details.
The used kernel is directly based on an Android device kernel without any extra modifications. We will create a recipe in the OpenEmbedded machine layer later.
As a requirement from the webOS userspace, we need to add a few extra kernel configs that are usually not enabled by default for Android.
Creating an OpenEmbedded machine layer
Integration with several webOS components