For more information, including FAQs and resources, please visit the link below:
RDKM-SSO
Any questions or comments please feel free to contact RDK Support team support@rdkcentral.com . Thank you. ***
On this Page:
Table of Contents | ||
---|---|---|
|
Dobby is a container management tool, to make it easy for other applications to start/stop/monitor containers. It can be thought of as a "Docker for the embedded world".
This page demonstrates building a sample Java application in RDK framework and running in a container using Dobby in a RDK-B reference board ( Rpi ).
Dobby source code: https://github.com/rdkcentral/Dobby
DAC Working Group:
This is the main Dobby process, which is launched at bootup by systemd. When started, DobbyDaemon registers itself on dbus. It then idles and waits for commands over dbus to start, stop or inspect containers.
CLI to interact with Dobby for developers, and issue commands such as start, stop or info
Getting the RDK-B dunfell Code
Code Block | ||||
---|---|---|---|---|
| ||||
mkdir < workspace_dir> cd <workspace_dir> repo init -u https://code.rdkcentral.com/r/manifests -b dunfell -m rdkb-extsrc.xml repo sync -j4 --no-clone-bundle |
Add dobby,readline, and crun packages to the package recipe file to consider it during the build
Code Block | ||||
---|---|---|---|---|
| ||||
Path: ./meta-cmf-raspberrypi/recipes-core/packagegroups/packagegroup-rdk-ccsp-broadband.bbappend |
Code Block | ||||
---|---|---|---|---|
| ||||
dbhat852@dvm-yocto3-docker-dbhat852:~/DAC_RDKB/meta-cmf-raspberrypi$ git diff recipes-core/packagegroups/packagegroup-rdk-ccsp-broadband.bbappend diff --git a/recipes-core/packagegroups/packagegroup-rdk-ccsp-broadband.bbappend b/recipes-core/packagegroups/packagegroup-rdk-ccsp-broadband.bbappend index 87a66a2..43d0f8f 100644 --- a/recipes-core/packagegroups/packagegroup-rdk-ccsp-broadband.bbappend +++ b/recipes-core/packagegroups/packagegroup-rdk-ccsp-broadband.bbappend @@ -6,6 +6,9 @@ RDEPENDS_packagegroup-rdk-ccsp-broadband_append = "\ libseshat \ notify-comp \ start-parodus \ + dobby \ + crun \ + readline \ \ " dbhat852@dvm-yocto3-docker-dbhat852:~/DAC_RDKB/meta-cmf-raspberrypi$ |
Add readline dependencies in the dobby recipe file
Code Block | ||||
---|---|---|---|---|
| ||||
Path: ./meta-rdk/recipes-containers/dobby/dobby-thunderplugin.bb |
Code Block | ||||
---|---|---|---|---|
| ||||
dbhat852@dvm-yocto3-docker-dbhat852:~/DAC_RDKB/meta-rdk$ git diff recipes-containers/dobby/dobby-thunderplugin.bb diff --git a/recipes-containers/dobby/dobby-thunderplugin.bb b/recipes-containers/dobby/dobby-thunderplugin.bb index 877b7fc..592b2db 100644 --- a/recipes-containers/dobby/dobby-thunderplugin.bb +++ b/recipes-containers/dobby/dobby-thunderplugin.bb @@ -5,7 +5,8 @@ LIC_FILES_CHKSUM = "file://${WORKDIR}/git/LICENSE;md5=c466d4ab8a68655eb1edf0bf8c include dobby.inc -DEPENDS = "dobby wpeframework-clientlibraries" +DEPENDS = "dobby" +DEPENDS += "readline" S = "${WORKDIR}/git/rdkPlugins/Thunder" dbhat852@dvm-yocto3-docker-dbhat852:~/DAC_RDKB/meta-rdk$ |
Add the below kernel options to support containerization
Code Block | ||||
---|---|---|---|---|
| ||||
Path: ./meta-raspberrypi/recipes-kernel/linux/linux-raspberrypi.inc |
Code Block | ||||
---|---|---|---|---|
| ||||
dbhat852@dvm-yocto3-docker-dbhat852:~/DAC_RDKB/meta-raspberrypi$ git diff recipes-kernel/linux/linux-raspberrypi.inc diff --git a/recipes-kernel/linux/linux-raspberrypi.inc b/recipes-kernel/linux/linux-raspberrypi.inc index 3219a23..9262374 100644 --- a/recipes-kernel/linux/linux-raspberrypi.inc +++ b/recipes-kernel/linux/linux-raspberrypi.inc @@ -35,6 +35,8 @@ CMDLINE_append = ' ${@oe.utils.conditional("ENABLE_KGDB", "1", "kgdboc=serial0,1 # Disable rpi logo on boot CMDLINE_append += ' ${@oe.utils.conditional("DISABLE_RPI_BOOT_LOGO", "1", "logo.nologo", "", d)}' +CMDLINE_append += "cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1" + # You can define CMDLINE_DEBUG as "debug" in your local.conf or distro.conf # to enable kernel debugging. CMDLINE_DEBUG ?= "" dbhat852@dvm-yocto3-docker-dbhat852:~/DAC_RDKB/meta-raspberrypi$ |
Build Java Application in RDK-B
Code Block | ||||
---|---|---|---|---|
| ||||
cd <workspace_dir>
git clone git://git.yoctoproject.org/meta-java
cd meta-java
git checkout remotes/origin/dunfell |
1. Create a new recipe under meta-rdk-ext/
2. New recipe should have the java application, corresponding .bb and license files
Example: sample application (HelloWorld.java) under meta-rdk-ext/recipes-java/
3. Add the new recipe to the package group to consider it during the build
Example : java-helloworld added in meta-cmf-raspberrypi/recipes-core/packagegroups/packagegroup-rdk-ccsp-broadband.bbappend
Code Block | ||||
---|---|---|---|---|
| ||||
dbhat852@dvm-yocto3-docker-dbhat852:~/DAC_RDKB/meta-cmf-raspberrypi$ git diff recipes-core/packagegroups/packagegroup-rdk-ccsp-broadband.bbappend diff --git a/recipes-core/packagegroups/packagegroup-rdk-ccsp-broadband.bbappend b/recipes-core/packagegroups/packagegroup-rdk-ccsp-broadband.bbappend index 87a66a2..87f70b8 100644 --- a/recipes-core/packagegroups/packagegroup-rdk-ccsp-broadband.bbappend +++ b/recipes-core/packagegroups/packagegroup-rdk-ccsp-broadband.bbappend @@ -6,6 +6,11 @@ RDEPENDS_packagegroup-rdk-ccsp-broadband_append = "\ libseshat \ notify-comp \ start-parodus \ + dobby \ + crun \ + readline \ + openjdk-8 \ + java-helloworld \ \ " dbhat852@dvm-yocto3-docker-dbhat852:~/DAC_RDKB/meta-cmf-raspberrypi$ |
3. Creating
1. Create a configuration file that is config.json for the java application and place it under meta-rdk-ext/recipes-java/<application_folder>
Code Block | ||||
---|---|---|---|---|
| ||||
dbhat852@dvm-yocto3-docker-dbhat852:~/DAC_RDKB$ cd meta-rdk-ext/recipes-java/ dbhat852@dvm-yocto3-docker-dbhat852:~/DAC_RDKB/meta-rdk-ext/recipes-java$ ls java-helloworld dbhat852@dvm-yocto3-docker-dbhat852:~/DAC_RDKB/meta-rdk-ext/recipes-java$ cd java-helloworld/ dbhat852@dvm-yocto3-docker-dbhat852:~/DAC_RDKB/meta-rdk-ext/recipes-java/java-helloworld$ ls java-helloworld-1.0 java-helloworld_1.0.bb dbhat852@dvm-yocto3-docker-dbhat852:~/DAC_RDKB/meta-rdk-ext/recipes-java/java-helloworld$ cd java-helloworld-1.0 dbhat852@dvm-yocto3-docker-dbhat852:~/DAC_RDKB/meta-rdk-ext/recipes-java/java-helloworld/java-helloworld-1.0$ ls config.json HelloWorld.java LICENSE dbhat852@dvm-yocto3-docker-dbhat852:~/DAC_RDKB/meta-rdk-ext/recipes-java/java-helloworld/java-helloworld-1.0$ |
2 2. Install the config.json through the Application recipe file
Running Dobby Container in Rpi
This provides details on running containerized java applications using dobby in RDK-B Platform (Raspberry Pi)
Steps:
Build the source code
Code Block | ||||
---|---|---|---|---|
| ||||
$ MACHINE=raspberrypi-rdk-broadband source meta-cmf-raspberrypi/setup-environment $ bitbake rdk-generic-broadband-image |
Flash the image to RPI and copy the container folder to /tmp
Code Block | ||||
---|---|---|---|---|
| ||||
cp -r /etc/java_container/ /tmp/ chmod +x /tmp/java_container/ chmod -R 744 /tmp/java_container/ |
Start the container using DobbyTool command
Code Block | ||||
---|---|---|---|---|
| ||||
/usr/bin/DobbyTool start java_container /tmp/java_container |
Validation:
Log path: /tmp/container.log
Container access : Run the below command to enter the container console
Code Block | ||||
---|---|---|---|---|
| ||||
crun --root /run/rdk/crun exec --tty java_container /bin/bash |
The HelloWorld java application can also be run manually using java command .