Upgrade to Pro — share decks privately, control downloads, hide ads and more …

COSCUP_2021_SONiC_HOW_TO_PORTING

Avatar for Lanhsin Lanhsin
August 02, 2021

 COSCUP_2021_SONiC_HOW_TO_PORTING

Avatar for Lanhsin

Lanhsin

August 02, 2021

Other Decks in Technology

Transcript

  1. SONiC Platform Monitor 1. How to create PMON image ?

    2. How to create PMON container ? 3. How to execute daemons ?
  2. Platform Monitor ▪ Dockerfile.j2 ▪ dockers/docker-platform-monitor/Dockerfile.j2 ▪ lm-senors.sh ▪ COPY

    ["lm-sensors.sh", "/usr/bin/"] ▪ docker_init.j2 ▪ COPY ["docker_init.j2", "/usr/share/sonic/templates/"] ▪ /usr/bin/docker_init.sh ▪ docker-pmon_supervisord.conf.j2 ▪ COPY ["docker-pmon.supervisord.conf.j2", "/usr/share/sonic/templates/"] ▪ /etc/supervisor/conf.d/supervisord.conf ▪ Entry Point ▪ docker_init.sh
  3. Platform Monitor - HOST ▪ Generate pmon.service ▪ files/build_templates/pmon.service.j2 ▪

    Jinja2 file ▪ slave.mk ▪ j2 files/build_templates/$($(docker:-dbg.gz=.gz)_CONTAINER_NAME).service.j2 > $($(docker:- dbg.gz=.gz)_CONTAINER_NAME).service ▪ rules/docker-platform-monitor.mk ▪ $(DOCKER_PLATFORM_MONITOR)_CONTAINER_NAME= pmon ▪ /usr/lib/systemd/system/pmon.service ▪ ExecStartPre=/usr/bin/pmon.sh start ▪ ExecStart=/usr/bin/pmon.sh wait
  4. Platform Monitor - HOST ▪ Generate pmon.sh used to create

    pmon container ▪ slave.mk ▪ j2 files/build_templates/docker_image_ctl.j2 > $($(docker:-dbg.gz=.gz)_CONTAINER_NAME).sh ▪ files/build_templates/docker_image_ctl.j2 ▪ docker create {{docker_image_run_opt}} \ ▪ --name={{docker_container_name}}$DEV {{docker_image_name}}:latest|| { ▪ -v /usr/share/sonic/device/$PLATFORM:/usr/share/sonic/platform:ro ▪ rules/docker-platform-monitor.mk ▪ docker_image_run_opt ▪ --privileged -t ▪ -v /var/run/platform_cache:/var/run/platform_cache:ro ▪ -v /usr/share/sonic/scripts:/usr/share/sonic/scripts:ro ▪ -v /usr/share/sonic/device/pddf:/usr/share/sonic/device/pddf:ro
  5. Platform Monitor - HOST ▪ /usr/bin/pmon.sh ▪ Start a container

    ▪ docker start pmon$DEV ▪ Stop a container ▪ docker stop pmon$DEV ▪ Block until one or more containers stop, then print their exit codes ▪ docker wait pmon$DEV ▪ docker create --privileged -t -v /etc/sonic:/etc/sonic:ro \ ▪ --net=$NET \ ▪ --uts=host \ ▪ --log-opt max-size=2M –log-opt-max-file=5 \ ▪ …... ▪ -v /usr/share/sonic/device/$PLATFORM:/usr/share/sonic/platform:ro\ ▪ -v /usr/share/sonic/device/$PLATFORM/$HWSKU/$DEV:/usr/share/sonic/hwsku:ro \ ▪ ….. ▪ -name=pmon$DEVdocker-platform-monitor:lastest
  6. Platform Monitor - Container ▪ /usr/bin/docker_init.sh ▪ mkdir -p /etc/sensors.d

    ▪ /bin/cp -f /usr/share/sonic/platform/sensors.conf /etc/sensors.d/ ▪ /bin/cp -f /usr/share/sonic/platform/fancontrol /etc/ ▪ exec /usr/bin/supervisord ▪ /etc/supervisor/conf.d/supervisord.conf ▪ Execute lm-sensors.sh ▪ Execute fancontrol ▪ Execute xcvrd ▪ Execute psud ▪ Execute syseepromd ▪ Execute thermalctld ...
  7. Platform Monitor - Container ▪ /usr/bin/lm-smensors.sh ▪ dockers/docker-platform-monitor/lm-sensors.sh ▪ service

    sensord start ▪ /usr/sbin/fancontrol ▪ Update fan speed ▪ /usr/local/bin/xcvrd ▪ src/sonic-platform-daemons/sonic-xcvrd/xcvrd/xcvrd.py ▪ Transceiver information update daemon for SONiC ▪ /usr/local/bin/psud ▪ src/sonic-platform-daemons/sonic-psud/scripts/psud ▪ PSU information update daemon for SONiC ▪ /usr/local/bin/syseepromd ▪ src/sonic-platform-daemons/sonic-syseepromd/scripts/syseepromd ▪ Syseeprom information gathering daemon for SONiC ▪ /usr/local/bin/thermalctld ▪ src/sonic-platform-daemons/sonic-thermalctld/scripts/thermalctld ▪ Thermal control daemon for SONiC
  8. SONiC Platform Base API ▪ Package ▪ target/python-wheels/sonic_platform_common-1.0-py3-none-any.whl ▪ Source

    Code ▪ src/sonic-platform-common/sonic_platform_base ▪ Install ▪ Host location ▪ /usr/local/lib/python3.7/dist-packages/sonic_platform_base/ ▪ Time ▪ Build SONiC image
  9. SONiC Platform API ▪ Package ▪ target/python-wheels/mlnx_platform_api-1.0-py3-none-any.whl ▪ Source Code

    ▪ platform/mellanox/mlnx-platform-api ▪ Install ▪ Host location ▪ /usr/local/lib/python3.7/dist-packages/sonic_platform/ ▪ Time ▪ Build SONiC image
  10. Device-Specific Fils ▪ Package ▪ target/debs/buster/sonic-device-data_1.0-1_all.deb ▪ Source Code ▪

    device/ ▪ src/sonic-device-data ▪ Makefile ▪ cp -r -L ../../../device/*/* ./device/ ▪ Install ▪ Host location ▪ /usr/share/sonic/device ▪ Time ▪ Build SONiC image
  11. Device-Specific Fils : default_sku ▪ Configuration file to setup default

    <HARDWARE_SKU> and topology. ▪ Example : ▪ device/mellanox/x86_64-mlnx_msn2010-r0/default_sku ▪ ACS-MSN2010 t1 ▪ Default hardware SKU : ACS-MSN2010 ▪ Default topology : t1
  12. Device-Specific Fils : installer.conf ▪ Configuration file for configuration of

    console device, port and speed as well as appending to the kernel command line ▪ Requirements: ▪ Must configure console port appropriately ▪ Example : ▪ device/ingrasys/x86_64-ingrasys_s9280_64x-r0/installer.conf ▪ CONSOLE_PORT=0x3f8 CONSOLE_DEV=1 CONSOLE_SPEED=115200
  13. Device-Specific Fils : pmon_daemon_control.json ▪ JSON file providing a platform-specific

    list of daemons inside the PMon container that should be skipped during bootup ▪ Example : ▪ { "skip_ledd": true, "skip_fancontrol": true, "skip_xcrvd": true }