Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Send email to Ken Brobeck requesting:
    1. Which facility the CPU will boot (e.g. facet, lcls, lcls2, testfac). This indicates the path to the startup.cmd  script and the DHCP server.
    2.  MAC Address of the CPU
    3. The CPU EPICS target architecture  (e.g. linuxRT-x86,linuxRT-x86_64,etc)
    1. create controls infrastructure for a new linuxRT CPU and / or IOC to a specific facility production server.
      1. includes $EPICS_IOCS/<cpu,ioc>  directories
      2. includes $IOC_DATA/<ioc>/<autosave,autosave-req,restore,iocInfo,archive>  directories
    2. add CPU boot information to the DHCP configuration file, and reboot the DHCP server. Ken will need the following details:
  2. Proceed to Development Step #3

Development:    dev

...

  1. .  Create the $IOC_DATA directory for your cpu and iocs as follows:
    1. cd $IOC_DATA
    2. mkdir  iocInfo archive restore autosave autosave-req yaml
  2.  Create the $EPICS_IOCS cpu and ioc boot directories
      1. cd $EPICS_IOCS
      2. mkdir cpu-<area>-<subsystem-prefix><2-digit#>  
      3. mkdir  sioc-<area>-<subsystem-prefix><2-digit#>
      4. Modify your application to add the cpu boot scripts.  If your IOC runs on a Shared Platform cpu then modify the SharedPlatform IOC Application  :

      ...

            1. add  cpuBoot/

      ...

            1. <faciilty>/<cpu node>/st.cmd
            2. add any dhcp.config or ethercat xml scripts
            3. tag and push shared the SharedPlatform  tag to production  using cram.
      1. Setup DHCP Server
        1. Add cpu to the DHCP configuration file under the group for linuxRT CPU diskless boot

      Development; 

      host cpu-b024-pm01 {                        
                                hardware ethernet 74:FE:48:16:3D:D5;
                                fixed-address   134.79.217.162;
                                option host-name "cpu-b024-pm01";
                                option path-mtu-aging-timeout 3600;
                                if ( substring( option vendor-class-identifier, 0, 5 ) = "udhcp" ) {
                                 filename         "/afs/slac.stanford.edu/g/lcls/epics/iocCommon/cpu-b024-pm01/startup.cmd";
                                 option root-path "afsnfs:/afs/slac.stanford.edu:/afs/slac.stanford.edu";
                                }
                      }

      ...

                host cpu-li10-pm01 {
                             hardware ethernet 74:FE:48:55:1D:A9;
                             fixed-address 172.27.72.103;
                             option host-name "cpu-li10-pm01";
                             if ( substring( option vendor-class-identifier, 0, 5 ) = "udhcp" ) {
                              filename "/usr/local/facet/epics/iocCommon/cpu-li10-pm01/startup.cmd";
                              option root-path "mccfs2:/export/mccfs/usr/local:/usr/local";
                              }
                }

      b. Add ipxe in $TFTPBOOT/LinuxRT/boot/ipxe/<cpu>.ipxe

          1. for 64-bit cpu:  

            #!ipxe

            # ===============================================================
            # Latest Stable version:
            # Supports linux kernel = 4.14.139-rt66
            # Used with EPICS BASE Version = R7.0.3.1-1.0
            # Embedded linuxRT for 64-bit Arch = buildroot-2019.08-x86_64
            # ===============================================================
            set vers buildroot-2019.08-x86_64


            # ======================================================================
            # Most kernel startup options are specified in the DHCP Server Config
            # ======================================================================
            set extra-args brd.rd_size=524288 pcie_aspm.policy=performance pci=noaer

          2. for 32-bit cpu:

            #!ipxe

            # ===============================================================
            # Latest Stable version:
            # Supports linux kernel = 4.14.139-rt66
            # Used with EPICS BASE Version = R7.0.3.1-1.0
            # Embedded linuxRT for 64-bit Arch = buildroot-2019.08-i686
            # ===============================================================
            set vers buildroot-2019.08-i686


            # ======================================================================
            # Most kernel startup options are specified in the DHCP Server Config
            # ======================================================================
            set extra-args brd.rd_size=524288 pcie_aspm.policy=performance pci=noaer

      Note: the buildroot version must correspond to the IOC Application buildroot version defined in the file configure/CONFIG_SITE

      4.  Setup

      ...

      CPU  Boot directory files:

      Original Method: (steps 3b and 3c)

        1. cd $EPICS_IOCS/cpu-<area>-<subsystem-prefix><2-digit#>
        2. Setup relative symbolic links to the common startup script and EPICS version:.
          • ln -s ../common/st.cmd.linuxRT.cpu  startup.cmd
          • ln -s ../common/bin/<epics base version>  epicsSpecificRelease
        3. Generate the file kernel-module.cmd. This file load kernels modules and drivers: kernel-modules.cmd
          for examples click  here.
          New Method: (steps 3d and 3e) - must be base release R7.0.3.1-1.0 or greater
        4. Automatic:

      ...

        1.      
          • createLinuxRTCpu --help
        1. Manual:
          1. cd $EPICS_IOCS/cpu-<area>-<subsystem-prefix><2-digit#> 
          2. Setup relative symbolic like to the TOP of the IOC Application  first time only, thereafter use cram to upgrade link.
            • ln -s ../../iocTop/<app> iocSpecificRelease
          3.  cp ../template/startup.cmd.linuxRT.cpu startup.cmd
            • replace <cpu> with your cpu name
            • replace <full path> with the full path to the directory with the cpu boot st.cmd file.

               5.  Setup ioc directory files

        1. for linuxRT running iocsh:    cp ../template/startup.cmd.linuxRT          startup.cmd
        2. for  linuxRT running cexp:     cp ../template/startup.cmd.linuxRT.cexp  startup.cm
        3. cd sioc-<area>-<subsystem-prefix><2-digit# 
        4. copy the ioc startup.cmd script from  $EPICS_IOCS/templat
        5. edit startup.cmd
          1. replace <ioc>  with your ioc name and for cexp replace <facility>
          2. change path of the EPICS_IOC_APP if your st.cmd file is in a non-standard location.
        6. cp ../template/screenrc   screenrc
        7. edit screenrc and replace <ioc> with your ioc name
        8. Setup a relative symbolic link to the TOP of the IOC Application release.
          1. ln -s ../../iocTop/<app>/<version> iocSpecificRelease

            6. Modify $EPICS_IOCS/screeniocs    Please note that this is a symbolic link to a CVS

      ...

      :

        1. cd
        2. cd <work>
          cvs co epics/iocCommon/All/<facility>   , where facility is
      1. Dev
        1. dev,
      2. Prod
        1. prod,facet,acctest
          1. add line for cpu
            format:  cpu-<area>-<subsystem-prefix><2-digit #>      <ts>   <ts port #t>   <screen  host>   [ # comment]
          2. add line for each ioc
            format:  sioc-<area>-<subsystem prefix><2-digit #>  cpu-<area>-<subsystem-prefix><2-digit #>    <account>   [ # comment]
          3. The "comment" field in  screeeniocs  is optional and must be precede but  "#".
          4. cd epics/iocCommon/All/<facility>/screeniocs
          5. edit screeniocs
        2. verify that the file in use has not been modified without being committed.
          1. cd $EPICS_IOCS/All/<facility>   , where facility is Dev,Prod,facet,acctest
          2. cvs diff -r HEAD screeniocs
          3. if there are issues, then send email to whoever made the change or to controls-software that you are about to update this file and uncommitted edits will be lost, so please commit your changes to CVS.  If you don't get a response,  you can either add the changes to CVS in addition to yours or just add yours.
        3. check out screeniocs from CVS into your work area
        4. commit your changes of screeniocs to CVS  as follows:
          1.  cvs commit  -m "added cpu and ioc blah" screeniocs
        5. update the screeniocs file in use
          1. cd $EPICS_IOCS/All/<facility>
          2.  rm -f screeniocs
          3. cvs update screeniocs
             

       

       IOC Applications Specific  RT constraints:

      ...