You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 11 Next »

Work in progress

Markdown Notes

WIP Notes:

OCI Bundle Generator Requirements.md


OCI Bundle Gen Use Cases (1)

Rewrite these as User Stories

  1. As an Operator I want to be able 

used in STB

expected to be on Cloud

Extendable architecture

Requirements (2)

  • Read in OCI_Image
  • Read in template for a target STB (format TBC)
  • Output a minimal OCI bundle* suitable for execution on target STB
    • FS system
    • runtime Config.json
  • Apply operator restrictions based 




Summary

An overview of Bundle gen in context

STB Specific Template (3)

  • Where does this come from?
    • today its : /sys, /proc, /tmp, /lib, /bin, /sbin, /usr, /dev
    • PLUS an manually generated optional file list - a list of additional files/devices/groups... i.e. psudeo FS nodes that are available
    • PLUS an manually generated optional MAPPING file that maps any actual node from any of the above lists into the RDK-M namespace. i.e tells you what non standard nodes name are in RDK-M std terms. (e.g. XXx)
  • What format is it in?
    • tar of above directories
    • the lists is JSON list
    • the MAPPING is JSON tuple { expected path, actual path}
  • Define REference ones for :
    • RasbPi 
    • PC dev


Operator Rules (3)

  • What does it have:
    • Meory, cpu, networking, resolutions, RDK services upported, ....
  • What format:
    • JSON
  • Where:
    • ?
  • Who :
    • Operator

OCI Image Spec (3)

Standard OCI image 

plus RDK  extensions to define application requirements 

Overview processing steps  (4)



A summary of the processing steps (re-order if it helps)

  1. Get OCI_Image
  2. Parse the subset of OCI_Image_config to get the DAC subsection
  3. Filter by architecture (remove all libs and bins that aren't for our arch.
  4. Lib matching: lib is in template then remove lib and put in bind mount
  5. Config App storage. Write the plugin for storage to oci_bundle_config. (AppID is unique across RDK-M.)
  6. Write the plugin ram FS to bundle config if needed
  7. Add the devices and bindmount to that required to output config (inc. networking)
  8. Copy across the layer for architecture independent assets (images, configs, certificates)
  9. Copy across the executable compiles to the correct architecture
  10. Translate the the remaining parts of OCI_Image_Config to OCI_Bundle_Config

Parse STB config file and operator config for syntax errorsRead arch of target deviceImage contains suitable manifest for platform arch?YesNoDetermine image type(imageLayout/image/imageZip)Unpack OCI image based on manifest for required platform/archRead application requirements and STB platform configTarget STB can support app?YesNoBegin lib matching algorithmHow would we manually loaded libswithdlopen- ldd won't show these?Runlddon application to find dependenciesPlatform already contains same (major) version of library?YesNoAdd bind mount for library toconfig.jsonDelete library fromrootfsdirectory in bundleDo nothing - use version in rootfsMore dependencies?YesAdd bind mounts for platform specific GPU librariesPrefer platform specified GPU libs over libs in imageAdd additional bind mounts specified in platform configAdd bind mounts for any devices in platform configAdd devices todevicesarray in configAdd environment variables specified in platform/operator configProcess application capabilitesAddrdkPluginssection to the config accordinglyAddDobbyInitto args arrayWrite any remaining config sectionsValidateconfig.jsonwith OCI toolingCreate tarball ofrootfsdirectory andconfig.jsonfileReturn ErrorPlatform cannot support applicationApp requires something platform cannot provideReturn ErrorApp does not support target architecture

Library matching

Options:

  • https://en.wikipedia.org/wiki/Soname
  • Full Name matching
  • Base name matching, exclude version numbering
  • Hash of the lib
    • how to handle to handle compiler option diffs e.g. strip?
  • Are LD commands to get version number?

/Dev Matching














  • No labels