#!/bin/bash DO_JSON=0 MY_PATH=$(dirname $0) PRODUCT_NAME="unknown" PLAT_DISCOVERY_FUNCTIONS="do_dgx1 do_dgx2 do_dgx_a800 do_dgx_a100 do_dgx_h100 do_dgx_h200 do_dgx_h800 do_dgx_b200 do_dgx_b300 do_dgx_gb200 do_dgx_gb300 do_dgx_gb300ws do_dcs do_c2_ovx do_c2_io do_dgxstation do_dgxstation_a100 do_dgxstation_a800" PLAT_DISCOVERY_FUNCTIONS="${PLAT_DISCOVERY_FUNCTIONS} do_kvm_vm do_xen_vm do_virtualbox do_l4t_ut2_1 do_l4t_cg4 do_l4t_c2 do_l4t_cg1 do_l4t_keystone do_l4t_oberon do_l4t_smcmgx do_other" TYPE="unknown" NAME="unknown" PRETTY_NAME="unknown" PLATFORM_STRING="unknown" SERIAL_NUMBER="unknown" do_dgx1() { name=${1} if is_dgx1 "${name}"; then TYPE="DGX-1" NAME="DGX Server" PRETTY_NAME="NVIDIA DGX Server" PLATFORM_STRING="DGX Server for ${TYPE}" SERIAL_NUMBER=$(get_serial_number "system") return fi false } do_dgx2() { name=${1} if is_dgx2 "${name}"; then TYPE=$(echo ${name} | cut -d' ' -f2) NAME="DGX Server" PRETTY_NAME="NVIDIA DGX Server" PLATFORM_STRING="DGX Server for ${TYPE}" SERIAL_NUMBER=$(get_serial_number "chassis") return fi false } do_dgx_a800() { name=${1} if is_dgx_a800 "${name}"; then TYPE="DGX A800" NAME="DGX Server" PRETTY_NAME="NVIDIA DGX Server" PLATFORM_STRING="DGX Server for ${TYPE}" SERIAL_NUMBER=$(get_serial_number "chassis") return fi false } do_dgx_a100() { name=${1} if is_dgx_a100 "${name}"; then TYPE="DGX A100" NAME="DGX Server" PRETTY_NAME="NVIDIA DGX Server" PLATFORM_STRING="DGX Server for ${TYPE}" SERIAL_NUMBER=$(get_serial_number "chassis") return fi false } do_dgx_h100() { name=${1} if is_dgx_h100 "${name}"; then TYPE="DGX H100" NAME="DGX Server" PRETTY_NAME="NVIDIA DGX Server" PLATFORM_STRING="DGX Server for ${TYPE}" SERIAL_NUMBER=$(get_serial_number "chassis") return fi false } do_dgx_h200() { name=${1} if is_dgx_h200 "${name}"; then TYPE="DGX H200" NAME="DGX Server" PRETTY_NAME="NVIDIA DGX Server" PLATFORM_STRING="DGX Server for ${TYPE}" SERIAL_NUMBER=$(get_serial_number "chassis") return fi false } do_dgx_h800() { name=${1} if is_dgx_h800 "${name}"; then TYPE="DGX H800" NAME="DGX Server" PRETTY_NAME="NVIDIA DGX Server" PLATFORM_STRING="DGX Server for ${TYPE}" SERIAL_NUMBER=$(get_serial_number "chassis") return fi false } do_dgx_b200() { name=${1} if is_dgx_b200 "${name}"; then TYPE="DGX B200" NAME="DGX Server" PRETTY_NAME="NVIDIA DGX Server" PLATFORM_STRING="DGX Server for ${TYPE}" SERIAL_NUMBER=$(get_serial_number "chassis") return fi false } do_dgx_b300() { name=${1} if is_dgx_b300 "${name}"; then TYPE="DGX B300" NAME="DGX Server" PRETTY_NAME="NVIDIA DGX Server" PLATFORM_STRING="DGX Server for ${TYPE}" SERIAL_NUMBER=$(get_serial_number "chassis") return fi false } do_dgx_gb200() { name=${1} if is_dgx_gb200 "${name}"; then TYPE="DGX GB200" NAME="DGX Server" PRETTY_NAME="NVIDIA DGX Server" PLATFORM_STRING="DGX Server for ${TYPE}" SERIAL_NUMBER=$(get_serial_number "chassis") return fi false } do_dgx_gb300() { name=${1} if is_dgx_gb300 "${name}"; then TYPE="DGX GB300" NAME="DGX Server" PRETTY_NAME="NVIDIA DGX Server" PLATFORM_STRING="DGX Server for ${TYPE}" SERIAL_NUMBER=$(get_serial_number "chassis") return fi false } do_dgx_gb300ws() { name=${1} if is_dgx_gb300ws "${name}"; then TYPE="GALAXY-GB300" NAME="DGX Server" PRETTY_NAME="NVIDIA DGX Server" PLATFORM_STRING="DGX Server for ${TYPE}" SERIAL_NUMBER=$(get_serial_number "chassis") return fi false } do_dcs() { name=${1} if is_dcs "${name}"; then TYPE=$(echo ${name} | cut -d' ' -f2) NAME="DCS Server" PRETTY_NAME="NVIDIA DCS Server" PLATFORM_STRING="DCS Server for ${TYPE}" SERIAL_NUMBER=$(get_serial_number "chassis") return fi false } do_c2_ovx() { name=${1} if is_c2_ovx "${name}"; then TYPE="OVX" NAME="C2 OVX Server" PRETTY_NAME="NVIDIA C2 OVX Server" PLATFORM_STRING="C2 Server for ${TYPE}" SERIAL_NUMBER=$(get_serial_number "system") return fi false } do_c2_io() { name=${1} if is_c2_io "${name}"; then TYPE="IOS" NAME="C2 IO Server" PRETTY_NAME="NVIDIA C2 IO Server" PLATFORM_STRING="C2 Server for ${TYPE}" SERIAL_NUMBER=$(get_serial_number "system") return fi false } do_dgxstation() { name=${1} if is_dgxstation "${name}"; then TYPE="DGX Station" NAME="DGX Station" PRETTY_NAME="NVIDIA ${NAME}" PLATFORM_STRING="${NAME}" SERIAL_NUMBER=$(get_serial_number "system") return fi false } do_dgxstation_a100() { name=${1} if is_dgxstation_a100 "${name}"; then TYPE="DGX Station A100" NAME="DGX Station A100" PRETTY_NAME="NVIDIA ${NAME}" PLATFORM_STRING="${NAME}" SERIAL_NUMBER=$(get_serial_number "chassis") return fi false } do_dgxstation_a800() { name=${1} if is_dgxstation_a800 "${name}"; then TYPE="DGX Station A800" NAME="DGX Station A800" PRETTY_NAME="NVIDIA ${NAME}" PLATFORM_STRING="${NAME}" SERIAL_NUMBER=$(get_serial_number "chassis") return fi false } do_kvm_vm() { dmitable="/sys/firmware/dmi/tables/DMI" if cat ${dmitable} | grep -qi "$(get_plat_grepstr kvm)"; then TYPE="KVM" NAME="DGX Server" PRETTY_NAME="NVIDIA DGX KVM Server" PLATFORM_STRING="DGX Server for ${TYPE}" SERIAL_NUMBER=$(get_serial_number "system") return fi false } do_xen_vm() { if [ -e /dev/xvda ]; then TYPE="Xen" NAME="DGX Server (Xen VM)" PRETTY_NAME="NVIDIA DGX Server on Xen VM" PLATFORM_STRING="DGX Server for ${TYPE}" SERIAL_NUMBER=$(get_serial_number "system") return fi false } do_virtualbox() { dmitable="/sys/firmware/dmi/tables/DMI" if cat ${dmitable} | grep -qi "${VIRTUALBOX_GREPSTR}"; then cmdline_args="/proc/cmdline" if grep -qs virtualbox_for_dgx1 ${cmdline_args}; then TYPE="DGX-1" else if grep -qs virtualbox_for_dgx2h ${cmdline_args}; then TYPE="DGX-2H" else TYPE="DGX-2" fi fi NAME="DGX Server" PRETTY_NAME="NVIDIA DGX Server" PLATFORM_STRING="DGX Server for ${TYPE}" SERIAL_NUMBER=$(get_serial_number "system") return fi false } do_l4t_cg4() { name="${1}" if is_l4t_cg4 "${name}"; then do_other "${name}" return fi false } do_l4t_c2() { name="${1}" if is_l4t_c2 "${name}"; then do_other "${name}" return fi false } do_l4t_cg1() { name="${1}" if is_l4t_cg1 "${name}"; then do_other "${name}" return fi false } do_l4t_ut2_1() { name="${1}" if is_l4t_ut2_1 "${name}"; then do_other "${name}" return fi false } do_l4t_keystone() { name="${1}" if is_l4t_keystone "${name}"; then do_other "${name}" return fi false } do_l4t_oberon() { name="${1}" if is_l4t_oberon "${name}"; then do_other "${name}" return fi false } do_l4t_smcmgx() { name="${1}" if is_l4t_smcmgx "${name}"; then do_other "${name}" return fi false } do_other() { name=${1} forced_platform=$(get_force_platform) if [ $? -eq 0 ]; then platform_name=$(get_system_config_with_default "${forced_platform}" "PlatformType" "Unknown Platform") TYPE="User Defined ${forced_platform}" NAME="NVIDIA BASE OS" PRETTY_NAME="${platform_name}" PLATFORM_STRING="User Defined Platform Type ${forced_platform}" SERIAL_NUMBER=$(dmidecode --string system-serial-number) return fi TYPE="${name}" NAME="${name}" PRETTY_NAME="${name}" PLATFORM_STRING="${name}" SERIAL_NUMBER=$(dmidecode --string system-serial-number) return } output_results_json() { echo "{" echo " \"platform\": \"${TYPE}\"," echo " \"name\": \"${NAME}\"," echo " \"pretty_name\": \"${PRETTY_NAME}\"," echo " \"platform_string\": \"${PLATFORM_STRING}\"," echo " \"serial_number\": \"${SERIAL_NUMBER}\"" echo "}" } output_results() { do_json=${1} if [ ${do_json} -eq 1 ]; then output_results_json else echo "platform:${TYPE}" echo "name:${NAME}" echo "pretty_name:${PRETTY_NAME}" echo "platform_string:${PLATFORM_STRING}" echo "serial_number:${SERIAL_NUMBER}" fi } ##### MAIN ##### source ${MY_PATH}/general_funcs.bash source ${MY_PATH}/plat_funcs.bash must_run_as_root PRODUCT_NAME=$(get_system_product_name) for method in ${PLAT_DISCOVERY_FUNCTIONS}; do if ${method} "${PRODUCT_NAME}"; then break fi done arg_has_json "$@" if [ $? -eq 0 ]; then DO_JSON=1 fi output_results ${DO_JSON} exit 0