Part 2: Importing the OS Image into BCM#

The steps in this part are the same for all distributions. The only difference is the --distro flag passed to cm-image create. Supported values are determined by the XML selection files provided by cluster-tools and present on your head node. To see which distributions your BCM installation supports, check:

# Command must be executed at the OS/shell level on the BCM head node, not within cmsh.

ls /cm/local/apps/cluster-tools/config/

Each XML file in that directory corresponds to a supported distro. The filename prefix is the value to pass to --distro. If a distro XML is not present, it is not supported by your current cluster-tools version.

  1. Verify the tarball integrity.

    Run an integrity check before transferring to confirm the archive is not corrupted:

    # Run command at the OS/shell level on the DGX host used for Phase 1-4
    
    tar -tzf /srv/rhel9-dgx-image.tar.gz | tail -20
    
    # Expected: the last 20 entries in the archive show familiar Linux paths.
    # If the command completes without errors, the tarball is good.
    
  2. Transfer the tarball to the head node.

    For B200 deployment context, refer to the NVIDIA DGX SuperPOD and BasePOD with DGX B200 Deployment Guide. From the DGX bare-metal node:

    # Run command at the OS/shell level on the DGX host used for Phase 1-4
    
    scp /srv/rhel9-dgx-image.tar.gz root@<head-node-ip>:/root/
    
  3. Run cm-image create on the head node.

    Using the tarball transferred in Step 2 as the source, run the following on the head node:

    Important

    Ensure /cm/shared is not being used by any services to allow BCM successfully migrate it to the new per-OS path (/cm/shared-rhel9-x86_64).

    Note

    When adding a RHEL image to a BCM cluster that was originally Ubuntu-only, cm-image create all first rebuilds the Ubuntu ramdisk and all existing image ramdisks before creating the RHEL ramdisk. This is expected because BCM is migrating the cluster from a single shared directory (/cm/shared) to a per-OS model (/cm/shared-ubuntu2404-x86_64, /cm/shared-rhel9-x86_64). All existing image paths are updated automatically. Do not interrupt this process.

    # Command must be executed at the OS/shell level on the BCM head node, not within cmsh
    
    cm-image --verbose \
       --logfile cm-image-rhel9u6-$(date +%Y%m%d-%H%M%S).log \
       create all \
       --arch x86_64 \
       --distro rhel9u6 \
       --dgx \
       --dgx-type dgx_b200 \
       --source /root/rhel9-dgx-image.tar.gz
    
    # cm-image create will proceed through all phases automatically:
    

    Note

    For the NAS mount phase, indicate a mount path that has enough available space if the default path does not have adequate space.

    1. Creating software image dgx-rhel9u6-x86_64........................[  OK  ]
    2. Locking software image dgx-rhel9u6-x86_64...
    3. Creating node installer image.....................................[  OK  ]
    4. NAS mount from 10.96.2.34 detected
    5. Please create/export a directory on the NAS to store /cm/shared-rhel9-x86_64 contents
    
       Enter NAS directory mount path (default: 10.96.2.34:/cm/shared-rhel9-x86_64, press Enter to use it): 10.96.2.34:/cm_shared/shared-rhel9-x86_64
    
    6. Enter mount options, press Enter for defaults:
    7. Enter filesystem type: (default: nfs):
    8. Running mount -t nfs -o defaults 10.96.2.34:/cm/shared-rhel9-x86_64 /cm/shared-rhel9-x86_64
    9. Creating cm-shared image at /cm/shared-rhel9-x86_64...
    10. Unmounting /cm/shared-rhel9-x86_64
    11. Adding fsmount for /cm/shared-rhel9-x86_64 from 10.96.2.34:/cm/shared-rhel9-x86_64
    12. Adding cmshared entry /cm/shared-rhel9-x86_64
    13. Adding cm-shared image entities...................................[  OK  ]
    14. Updating cmd entities
    15. Updating head node fsmounts
    16. Changing fspart /cm/shared to /cm/shared-ubuntu2404-x86_64
    17. Unmounting network mount at /cm/shared
    18. Successfully unmounted /cm/shared
    19. Changing fspart /cm/node-installer to /cm/node-installer-ubuntu2404-x86_64
    20. First run NAS setup on secondary
    
    Running while [ ! -d /cm/shared-ubuntu2404-x86_64 ]; do sleep 1; done;
    
    Running while [ -d /cm/shared ]; do mountpoint -q /cm/shared && umount -l /cm/shared || rm -rf /cm/shared; sleep 1; done
    
    Running ln -sf /cm/shared-ubuntu2404-x86_64 /cm/shared
    
    Running while [ ! -d /cm/node-installer-ubuntu2404-x86_64 ]; do sleep 1; done; rm -rf /cm/node-installer && ln -sf /cm/node-installer-ubuntu2404-x86_64 /cm/node-installer
    
    21. Creating ramdisk for ubuntu2404/x86_64 (this may take a few minutes)...
    22. Creating ramdisk for ubuntu2404/x86_64............................[  OK  ]
    23. Recreating other ramdisks (this may take a few minutes)...
    
    Creating ramdisk for dgx-image...
    Creating ramdisk for dgx-b200-slurm-image...
    Creating ramdisk for slogin-image...
    
    24. Recreating other ramdisks.........................................[  OK  ]
    25. Adding fsmount for /cm/shared from 10.96.2.34:/cm_shared/shared-rhel9-x86_64
    26. Added new category: dgx-rhel9-x86_64
        Use this category for adding nodes
    
    27. Unlocking software image dgx-rhel9u6-x86_64...
    28. Creating ramdisk for rhel9u6/x86_64 (this may take a few minutes)...
    Creating ramdisk for rhel9u6/x86_64...............................[  OK  ]
    
    The final line “Creating ramdisk for rhel9u6/x86_64……[ OK ]” confirms cm-image create all completed successfully.
  4. Remove entitlement certificates from the BCM-managed image.

    Now that cm-create image has completed, the Red Hat entitlement certificates are no longer needed inside the image. Remove them from the BCM-managed image path to ensure they are not distributed to provisioned nodes.

    # Command must be executed at the OS/shell level on the BCM head node, not within cmsh
    
    rm -f /cm/images/dgx-rhel9u6-x86_64/etc/pki/entitlement/<ID>.pem
    rm -f /cm/images/dgx-rhel9u6-x86_64/etc/pki/entitlement/<ID>-key.pem
    rm -f /cm/images/dgx-rhel9u6-x86_64/etc/rhsm/ca/redhat-uep.pem
    

Note

Each node should be registered with Red Hat independently using its own credentials after provisioning.