Using IGX OS with BMC (Remote Media)#

IGX BMC has the support of USB remote media based on openbmc virtual media - docs/designs/virtual-media.md at master · openbmc/docs · GitHub

The IGX Developer Kit BMC enumerates USB virtual media devices to the Orin USB host, which helps to install IGX OS using the UEFI menu. IGX BMC can work as virtual media over CIFS transfer protocol.

_images/image8.png
  1. CIFS samba server configuration in Ubuntu Desktop.

    1. Install SAMBA and configure it on the Ubuntu Desktop. Place IGX OS into the SAMBA server path to initiate the BMC virtual media for the IGX OS image:

      sudo apt update
      
      sudo apt install samba
      
    2. Now that Samba is installed, we need to create a directory for it to share.

      mkdir /home/<username>/sambashare/
      
    3. Add samba configuration for sambashare directory

      sudo vim /etc/samba/smb.conf
      
    4. Add block to samba configuration to end of the smb.conf

      1[sambashare]
      2  comment = Samba on Ubuntu
      3  path = /home/username/sambashare
      4  read only = no
      5  browsable = yes
      
    5. Update firewall settings and restart the samba service

      sudo ufw allow samba
      
      sudo service smbd restart
      
    6. Set up user and password

      sudo smbpasswd -a username
      
  2. Enumerate BMC USB Virtual Media

    1. Get the IGX OS release and copy the IGX OS image to the sambashare folder.

      cp <IGX OS image> /home/username/sambashare/
      
    2. Provide the BMC username and password to get the token.

      export bmc=<BMC IP>
      
      export token=`curl -k -H "Content-Type: application/json" -X POST https://${bmc}/login -d '{"username" : "<BMC Username>", "password" : "<BMC Passowrd>"}' | grep token | awk '{print $2;}' | tr -d '"'`
      
    3. Fill the Samba username, password, and IGX OS file to enumerate the USB virtual media using the Redfish.

      curl -k -H Content-Type:application/json -H "X-Auth-Token:$token" -X POST https://${bmc}/redfish/v1/Managers/IGX_BMC_0/VirtualMedia/USB1/Actions/VirtualMedia.InsertMedia -d '{"Image":"smb://<Ubuntu Desktop IP>/sambashare/<IGX OS filename>","WriteProtected":true,"UserName":"<SAMBA Username>","Password":"<SAMBA Password>","Inserted":true,"TransferMethod":"Stream","TransferProtocolType":"CIFS"}'
      
      Ex: curl -k -H Content-Type:application/json -H "X-Auth-Token:$token" -X POST https://${bmc}/redfish/v1/Managers/IGX_BMC_0/VirtualMedia/USB1/Actions/VirtualMedia.InsertMedia -d '{"Image":"smb://192.168.1.1/sambashare/IGX-r36v0.1-2023-10-04-12-32-47.iso","WriteProtected":true,"UserName":"nvidia","Password":"nvidia","Inserted":true,"TransferMethod":"Stream","TransferProtocolType":"CIFS"}'
      
    4. Confirm the USB Virtual Media entry in the Orin host lsusb.

      _images/image12.png
  3. Install IGX OS from UEFI

    1. Reboot the Orin, wait until UEFI starts, then press ESC to enter the UEFI menu

      _images/image2.png
    2. Select the Boot Manager with the down arrow(↓) key. USB Virtual media will be seen on the menu.

      _images/image8.png
    3. Select the UEFI 0penBMC Virtual Media, and install the IGX OS, or edit options using the ‘e’ key before installation.

      _images/image13.png
    4. Eject current media using the below command if want to mount a new ISO

      curl -k -H Content-Type:application/json -H "X-Auth-Token:$token" -X POST https://${bmc}/redfish/v1/Managers/IGX_BMC_0/VirtualMedia/USB1/Actions/VirtualMedia.EjectMedia -v