Skip to main content
Version: FCP 25.11

Minimal Dependency Installation for Nodes

The FCP platform supports registration of both Linux and Windows nodes. Click the link to view the operating system versions supported by clusters in Cluster OS Support, and click the link to view the operating system versions supported by desktops in Desktop OS Support.

Local nodes must have the minimal dependencies installed before they can be added to the platform. Install the required dependencies based on the operating system.

Minimal Dependencies for Linux Nodes

Prerequisites

  • Local Linux nodes must have the following dependencies installed before they can be added to the platform.
  • If Linux nodes have network requirements, refer to FCP Product Network Planning.

Common Dependencies

# Ubuntu 18.04. In most cases the system includes python2.6/2.7 by default. Install it manually if it is missing.
sudo DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y nfs-common autofs ntp nscd libpam-modules python-setuptools

# Ubuntu 20.04 / Ubuntu 22.04. In most cases the system includes some version of python3 by default. Install it manually if it is missing.
sudo DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y nfs-common autofs ntp nscd libpam-modules python-setuptools python3-pip

# CentOS 7.x / RedHat 7.x. In most cases the system includes python2.6/2.7 by default. Install it manually if it is missing.
sudo yum install -y nfs-utils autofs ntp nscd redhat-lsb python-setuptools authconfig pam

# CentOS 6.x / RedHat 6.x. In most cases the system includes python2.6/2.7 by default. Install it manually if it is missing.
sudo yum install -y rng-tools nfs-utils autofs ntp nscd redhat-lsb python-setuptools authconfig pam

# Rocky Linux 8.x / RedHat 8.x. In most cases the system includes some version of python3 by default. Install it manually if it is missing.
sudo yum install -y nfs-utils autofs nscd redhat-lsb python3-setuptools authconfig pam chrony

Additional Dependencies

When built-in LDAP, external LDAP/AD, or OIDC is used for authentication, install the following dependencies:

# Ubuntu 18.04 / Ubuntu 20.04 / Ubuntu 22.04
sudo DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y libnss-ldapd

# CentOS 7.x / RedHat 7.x / CentOS 6.x / RedHat 6.x / Rocky Linux 8.x / RedHat 8.x
sudo yum install -y nss-pam-ldapd.x86_64 nss-pam-ldapd.i686 openldap-clients

When external NIS is used for authentication, install the following dependencies:

# Ubuntu 18.04 / Ubuntu 20.04
sudo DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y nis

# Ubuntu 22.04
sudo DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y nis libnss-nis

# CentOS 7.x / RedHat 7.x / CentOS 6.x / RedHat 6.x / Rocky Linux 8.x / RedHat 8.x
sudo yum install -y ypbind rpcbind ypserv yp-tools

For GPU nodes, install the GPU driver and dcgm-exporter to ensure GPU monitoring works properly:

tip

CentOS 6.x and RedHat 6.x do not support GPU monitoring.

  • Ubuntu 18.04 / Ubuntu 20.04 / Ubuntu 22.04: install Docker 20.04 or later manually, then run the following script to install the GPU driver and start the dcgm-exporter container.
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
if [ ! -f /etc/apt/sources.list.d/nvidia-docker.list ]; then
sudo curl -o /etc/apt/sources.list.d/nvidia-docker.list -s -L https://nvidia.github.io/libnvidia-container/stable/$distribution/libnvidia-container.list
fi
sudo apt-get update
if ! dpkg -l | grep nvidia-container-toolkit > /dev/null; then
sudo apt-get install -y nvidia-container-toolkit
fi
if ! dpkg -l | grep nvidia-driver > /dev/null; then
# found latest version of driver
sudo DEBIAN_FRONTEND=noninteractive apt install -y $(apt-cache pkgnames nvidia-driver | grep server | grep -v open | sort -n | tail -n 1)
fi

sudo docker run --name dcgm-exporter --gpus all -p 9400:9400 -d --restart always nvidia/dcgm-exporter:latest
  • CentOS 7.x / RedHat 7.x: install Docker 20.04 or later manually, then run the following script to install the GPU driver and start the dcgm-exporter container.
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
if [ ! -f /etc/yum.repos.d/nvidia-docker.repo ]; then
sudo curl -o /etc/yum.repos.d/nvidia-docker.repo -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.repo
sudo yum makecache -y
fi
if ! rpm -qa | grep nvidia-container-toolkit > /dev/null; then
sudo yum install -y nvidia-container-toolkit
fi

if grep -E "release 8\\." /etc/redhat-release; then
if ! rpm -qa | grep xorg-x11-drv-nouveau.x86_64 > /dev/null; then
# found latest version of driver
sudo yum install -y xorg-x11-drv-nouveau.x86_64
fi
else
if ! rpm -qa | grep nvidia-x11-drv > /dev/null; then
# found latest version of driver
sudo yum install -y nvidia-x11-drv
fi
fi

sudo docker run --name dcgm-exporter --gpus all -p 9400:9400 -d --restart always nvidia/dcgm-exporter:latest
  • Rocky Linux 8.x: install Docker 20.04 or later manually, then run the following script to install the GPU driver and start the dcgm-exporter container.
if [ ! -f /etc/yum.repos.d/nvidia-docker.repo ]; then
sudo curl -o /etc/yum.repos.d/nvidia-docker.repo -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo
sudo yum makecache -y
fi
if ! rpm -qa | grep nvidia-container-toolkit > /dev/null; then
sudo yum install -y nvidia-container-toolkit
fi

if grep -E "release 8\\." /etc/redhat-release; then
if ! rpm -qa | grep xorg-x11-drv-nouveau.x86_64 > /dev/null; then
# found latest version of driver
sudo yum install -y xorg-x11-drv-nouveau.x86_64
fi
else
if ! rpm -qa | grep nvidia-x11-drv > /dev/null; then
# found latest version of driver
sudo yum install -y nvidia-x11-drv
fi
fi

sudo docker run --name dcgm-exporter --gpus all -p 9400:9400 -d --restart always nvidia/dcgm-exporter:latest

VNC

tip

This dependency needs to be installed only for FCP-SE and FCP-Suite.

Install a Desktop Environment

VNC depends on an underlying desktop environment. Make sure the system has a desktop environment installed, for example:

  • KDE Plasma Desktop
  • Xfce Desktop
  • Gnome Desktop
warning

We recommend having exactly one desktop environment installed. If multiple desktop environments exist at the same time, you must configure the target desktop environment correctly to ensure it can start properly. Otherwise, competing desktop environments may prevent the desktop system from starting normally.
If you need to uninstall extra desktop environments, refer to the uninstall steps provided in the documentation for each desktop environment.

If no desktop environment is installed, run the Xfce installation script to install Xfce4.

Install the VNC Server Component

tip

This script first checks whether the system has no desktop environment or multiple desktop environments. If either condition is detected, a warning is shown to remind you to handle the target desktop environment correctly.
It then installs the VNC Server component and applies customizations to it, such as high-resolution support and session isolation for one user across multiple nodes using shared storage.
Finally, it attempts to start the VNC Server component to verify that it works properly. If startup fails, the cause is usually an incorrectly configured desktop environment.
By default, the script also applies Chinese localization to the system by installing Chinese language packs and fonts and configuring the Chinese locale so that Chinese text can be displayed correctly in the VNC desktop.

Run this script to install the VNC Server component and apply Chinese localization:

# Grant execute permission to the script
chmod +x install-tigervnc.sh

# Install VNC and apply Chinese localization (default behavior)
sudo ./install-tigervnc.sh

# To install only VNC and skip Chinese localization, use the following option
sudo ./install-tigervnc.sh --skip-chinese
tip

After the script completes, restart the system so that all localization settings take effect.

Roll Back the Chinese Locale

If you need to restore the system locale to English, run the dedicated Chinese locale rollback script. It automatically reverts the system locale configuration to English and cleans up the related Chinese locale files.

Note

This script must be run with root privileges. It automatically tries to elevate with sudo.

Run the Chinese Locale Rollback Script to restore the system to an English locale:

# Grant execute permission to the script
chmod +x rollback-chinese.sh

# Run the Chinese locale rollback script (use sudo to ensure root privileges)
sudo ./rollback-chinese.sh
tip

After rollback completes, restart the system so that all English locale settings take effect.

Frequently Asked Questions

warning

The node service fails to start with the error: failed to find loop device: could not attach image file to loop device: no loop devices available.

This error has been encountered on bare-metal nodes built from custom images when the fastone-remote-access service starts. The solution is to edit /boot/efi/EFI/ubuntu/grub.cfg and set the max_loop parameter. If you encounter this error, consider adding the max_loop parameter. The exact setting and how it takes effect vary by distribution, so the following is for reference only.

Minimal Dependencies for Windows Nodes

tip

If you do not need the PBS scheduler, see the Common Dependencies section.
If you need the PBS scheduler, see the PBS Dependencies section.

Prerequisites

  • Local Windows nodes must have the following dependencies installed before they can be added to the platform.
  • If Windows nodes have network requirements, refer to FCP Product Network Planning.

Common Dependencies

Download the Installation Packages

  • Remote login tool package: openssh-win64-8.1.zip
  • Monitoring tool package: wmi_exporter-0.11.0-386.msi
  • PsExec tool package: PSTools.zip
  • NVIDIA GPU exporter package: nvidia_gpu_tools.zip
  • GPU monitoring depends on nvidia-smi to collect monitoring information. Install the NVIDIA driver separately according to the node configuration.

Installation Steps

  1. Log in to the Windows node with the administrator account and copy the downloaded packages to the desktop.

  2. Create the fastone user. Use the default password and do not modify it unless necessary. Run the following in powershell:

    • Add the user
    • Add it to the Administrators group. Refer to the Password Retrieval Guide. If you cannot access it, contact the corresponding customer service manager, delivery manager, or technical support personnel.
    net user fastone <FASTONE_PASSWORD> /add
    net localgroup administrators fastone /add

    Run the following in cmd:

    • Set the password to never expire
    wmic.exe UserAccount Where Name='fastone' set PasswordExpires='false'
  3. Install openssh. Run the following in powershell:

    • Extract the package
    • Rename the installation directory
    • Install sshd
    • Open the firewall port
    • Set the service to start automatically
    Expand-Archive -Path C:\Users\Administrator\Desktop\OpenSSH-Win64-8.1.zip -DestinationPath "C:\Program Files\"
    Rename-Item "C:\Program Files\OpenSSH-Win64" "C:\Program Files\OpenSSH"

    powershell.exe -ExecutionPolicy Bypass -File "C:\Program Files\OpenSSH\install-sshd.ps1"

    New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

    Set-Service sshd -StartupType Automatic

    Configure the SSH config: Open the C:\ProgramData\ssh directory. This is a hidden directory. If it does not exist, reboot the machine. Open the ssh_config or ssh_default_config file and comment out the following lines:

    #Match Group administrators
    # AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

    Save and exit.

  4. Install wmi_exporter. Double-click the installer directly.

  5. Disable the firewall if there are no network restrictions. If network restrictions apply, refer to FCP Product Network Planning. Run the following in powershell:

    Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
  6. Install the PsExec tool. Run the following in powershell:

    Expand-Archive -Path C:\Users\Administrator\Desktop\PSTools.zip "C:\Users\Administrator\Desktop\pstools"
    Move-Item -Path C:\Users\Administrator\Desktop\pstools\PsExec64.exe "C:\Windows\System32\"
    Move-Item -Path C:\Users\Administrator\Desktop\pstools\PsExec.exe "C:\Windows\System32\"
  7. Install nvidia-gpu-exporter. Run the following in powershell:

    Expand-Archive -Path C:\Users\Administrator\Desktop\nvidia_gpu_tools.zip "C:\Users\Administrator\Desktop\"
    Move-Item -Path C:\Users\Administrator\Desktop\nvidia_gpu_tools\nvidia_gpu_exporter.exe "C:\Windows\System32\"
    Move-Item -Path C:\Users\Administrator\Desktop\nvidia_gpu_tools\nssm.exe "C:\Windows\System32\"
    nssm.exe install nvidia_gpu_exporter "C:\Windows\System32\nvidia_gpu_exporter.exe"
    Start-Service nvidia_gpu_exporter
  8. Configure SSH for fastone. Log in to the Windows node as the fastone user so that the fastone user directory is created. Run the following in powershell:

    • Generate the SSH key and config file. For ssh-keygen, just press Enter all the way to accept the defaults.
    • Configure the SSH config file.
    cd C:\"Program Files"\OpenSSH

    ssh-keygen

    Add-Content -Path $HOME\.ssh\config -Value 'Host *
    StrictHostKeyChecking no
    UserKnownHostsFile=/dev/null'
  9. Restart the Windows node.

  10. At this point, installation of the basic dependencies for a Windows node is complete. This setup is suitable for a single Windows node used only as a graphical desktop, without a scheduler.

  11. Add the Windows node on the Host Management page of the Fastone platform. When specifying the node user, use a user from the administrators group.

PBS Dependencies

Prerequisites

  • Any machine that needs to run jobs through the PBS scheduler must have the PBS dependencies installed.
  • Cluster head node: Ubuntu 18.04
  • Cluster compute node: Windows Server 2019
  • If Windows nodes have network requirements, refer to FCP Product Network Planning.
  • The setup depends on the samba service. See how to start the samba service. It is used to share files and job output.

Install Dependencies on the Cluster Head Node

  1. Download the installation package.

Please contact Fastone technical support to obtain:

  • PBS installation package: pbspro-19.0.0-2.tar.gz
  1. Install dependencies. Run the following script:
#!/bin/bash

set -ex

if [ ! -e /etc/apt/sources.list ]; then
echo "No only works under ubuntu. Exiting."
exit 0
fi

sudo dpkg --configure -a
sudo apt-get clean
sudo apt-get --fix-broken install -y
sudo apt-get autoremove -y -qq
sudo apt-get update -y -qq
sudo DEBIAN_FRONTEND=noninteractive apt-get upgrade -yq

sudo apt-get install -y aptitude

sudo aptitude install -y gcc make libtool libhwloc-dev libx11-dev \
libxt-dev libedit-dev libical-dev ncurses-dev perl \
postgresql-server-dev-all postgresql-contrib python3-dev tcl-dev tk-dev swig \
libexpat-dev libssl-dev libxext-dev libxft-dev autoconf \
automake expect
  1. Install PBS. Extract the downloaded package to /opt/tmp and run the following script:
#!/bin/bash

set -ex

if [ ! -e /etc/apt/sources.list ]; then
echo "No only works under ubuntu. Exiting."
exit 0
fi

# add private ip and hostname to hosts file, solve `qmgr: cannot connect to server`
# get hostname
HOSTNAME=$(hostname)

# get private ip
PRIVATE_IP=$(hostname -I | awk '{print $1}')

# check if private ip exists
if [[ -z "$PRIVATE_IP" ]]; then
echo "cannot get private ip. Exiting."
exit 1
fi

file='/etc/hosts'

if grep -q "^$PRIVATE_IP\s*$HOSTNAME" $file; then
echo "$PRIVATE_IP $HOSTNAME already exists in $file"
else
# write private ip and hostname to hosts file
echo "$PRIVATE_IP $HOSTNAME" >> $file
echo "added $PRIVATE_IP $HOSTNAME to $file"
fi


# change postgres ports
sudo sed -i -e 's/port = .*/port = 25432/' -- /etc/postgresql/*/main/postgresql.conf
sudo systemctl stop postgresql # we are not using the default one

# install pbspro
sudo tar -zxvf /opt/tmp/pbspro-19.0.0-2.tar.gz --keep-old-files -C /

# run installer
# sudo /usr/bin/pbs.install
sudo chmod 4755 /usr/sbin/pbs_iff /usr/sbin/pbs_rcp
sudo rm -vf /etc/pbs.conf
sudo /usr/libexec/pbs_postinstall
sudo sh -c 'echo PBS_DATA_SERVICE_PORT=15432 >> /etc/pbs.conf'
START=$SECONDS
while ! sudo systemctl restart pbs; do
systemctl status pbs || true
systemctl status postgresql || true
sudo netstat -antp
ELAPSED=$(expr $SECONDS - $START)
if [ $ELAPSED -gt 300 ]; then
exit 1;
fi
sleep 5
done

START=$SECONDS
while ! sudo /usr/bin/qmgr -c "set server single_signon_password_enable=true"; do
echo "=================== syslog ====================="
sudo tail -n 100 /var/log/syslog
echo "=================== netstat ====================="
sudo netstat -antp
echo "=================== status ====================="
sudo systemctl start postgresql || true
sudo systemctl start pbs || true
ELAPSED=$(expr $SECONDS - $START)
if [ $ELAPSED -gt 300 ]; then
exit 1;
fi
done

# disable pbspro
sudo systemctl disable pbs
sudo systemctl disable postgresql
sudo systemctl stop postgresql

Install Dependencies on Windows Nodes

  1. Download the installation packages.
  • Remote login tool package: openssh-win64-8.1.zip
  • Monitoring tool package: wmi_exporter-0.11.0-386.msi
  • PsExec tool package: PSTools.zip
  • PBSPro installation package: pbspro-19.0.0-2.msi
  • fsagent installation package: fsagent.windows.exe
  1. Installation steps.

  2. Log in to the Windows node with the administrator account and copy the downloaded packages to the desktop.

  3. Create the fastone and pbsadmin users. Use the default passwords and do not modify them unless necessary. Run the following in powershell:

    • Add the users
    • Add them to the Administrators group. Refer to the Password Retrieval Guide. If you cannot access it, contact the corresponding customer service manager, delivery manager, or technical support personnel.
    net user fastone <FASTONE_PASSWORD> /add
    net user pbsadmin <PBSADMIN_PASSWORD> /add
    net localgroup administrators fastone /add
    net localgroup administrators pbsadmin /add

    Run the following in cmd:

    • Set the passwords to never expire
    wmic.exe UserAccount Where Name='fastone' set PasswordExpires='false'
    wmic.exe UserAccount Where Name='pbsadmin' set PasswordExpires='false'
  4. Install openssh. Run the following in powershell:

    • Extract the package
    • Rename the installation directory
    • Install sshd
    • Open the firewall port
    • Set the service to start automatically
    Expand-Archive -Path C:\Users\Administrator\Desktop\OpenSSH-Win64-8.1.zip -DestinationPath "C:\Program Files\"
    Rename-Item "C:\Program Files\OpenSSH-Win64" "C:\Program Files\OpenSSH"

    powershell.exe -ExecutionPolicy Bypass -File "C:\Program Files\OpenSSH\install-sshd.ps1"

    New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

    Set-Service sshd -StartupType Automatic

    Configure the SSH config: Open the C:\ProgramData\ssh directory. This is a hidden directory. If it does not exist, reboot the machine. Open the ssh_config or ssh_default_config file and comment out the following lines:

    #Match Group administrators
    # AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

    Save and exit.

  5. Install wmi_exporter. Double-click the installer directly.

  6. Disable the firewall if there are no network restrictions. If network restrictions apply, refer to FCP Product Network Planning. Run the following in powershell:

    Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
  7. Install the PsExec tool. Run the following in powershell:

    Expand-Archive -Path C:\Users\Administrator\Desktop\PSTools.zip "C:\Users\Administrator\Desktop\pstools"
    Move-Item -Path C:\Users\Administrator\Desktop\pstools\PsExec64.exe "C:\Windows\System32\"
    Move-Item -Path C:\Users\Administrator\Desktop\pstools\PsExec.exe "C:\Windows\System32\"
  8. Install PBSPro. Double-click the installer directly.

  9. Move fsagent to C:\Windows\System32\:

    Move-Item -Path C:\Users\Administrator\Desktop\fsagent.windows.exe -Destination C:\Windows\System32\fsagent.exe
  10. Configure SSH for fastone.

    • Log in to the Windows node as the fastone user, then run the following in powershell.
    • Generate the SSH key and config file. For ssh-keygen, just press Enter all the way to accept the defaults.
    • Configure the SSH config file.
    cd C:\"Program Files"\OpenSSH

    ssh-keygen

    Add-Content -Path $HOME\.ssh\config -Value 'Host *
    StrictHostKeyChecking no
    UserKnownHostsFile=/dev/null'
  11. Restart the Windows node.

  12. Add the Windows node on the Host Management page of the Fastone platform. When specifying the node user, use a user from the administrators group.

Start the Samba Service

On the host that provides the shared directory, run the following command to start the samba container service:

Parameters

OptionUsageExample
SHARE_NAMEname of the sharefastone
SHARE_PATHpath to export/fastone
USER_NAMEusername used to access the share
USER_IDuser ID of the specified username
GROUP_NAMEgroup mapped to the share
GROUP_IDgroup ID of the specified group
SMB_PASSWORDpassword used to access the shareFor <SMB_PASSWORD>, refer to the Password Retrieval Guide. If you cannot access it, contact the corresponding customer service manager, delivery manager, or technical support personnel.

Usage

The following example is for the fastone user only. Adjust the parameters according to your actual environment.

docker run -it --restart always --name smb-server --network=host -e SHARE_NAME=fastone -e SHARE_PATH=/fastone  -e USER_NAME=fastone -e USER_ID=$(id -u fastone)   -e GROUP_NAME=fastone   -e GROUP_ID=$(id -g fastone) -e SMB_PASSWORD='<SMB_PASSWORD>' --mount type=bind,source=/fastone,target=/fastone,bind-propagation=rslave hub.fastonetech.com/cce/fs-smb-server:24.05

Run docker ps -a. If the service status is Up, startup succeeded. Otherwise, use docker logs smb-server to view the logs.

Note:

  1. Host networking must be used.
  2. SHARE_PATH must be mounted into the container by using --mount together with bind-propagation=rslave to ensure file permissions are correct.
--mount type=bind,source=/fastone,target=/fastone,bind-propagation=rslave

Verify the Configuration

To ensure the configuration is correct, perform the following checks after the Windows node configuration is complete so that the Fastone platform can manage the node correctly:

  • You can connect to the node through an RDP client such as mstsc.
  • When mounting, use the SHARE_PATH directory, for example fastone, as shown below. The mount should succeed.
net use z: \\host_name\fastone "<SMB_PASSWORD>" /user:"fastone"

Integrate with AD

tip

Active Directory (AD) is not required for platform-managed Windows nodes, but integrating with AD provides the following advantages:

  • Centralized identity authentication: unify authentication across different systems.
  • Unified identity management: once AD is integrated, identities for members in the organization can be managed centrally.

Decide whether AD integration is needed according to your actual requirements.
If AD integration is required, refer to the following documents:

  1. Configure AD for the FCP Platform
  2. Join a Windows Node to the AD Domain

Automatic Samba Home Directory Mounting

If you need the samba home directory to be mounted automatically on Windows nodes, refer to the following steps:

  1. Edit the samba-mount.bat file with the following content:

    @echo off
    :: Automatically mount the Samba share using the current logged-in user's domain credentials
    net use Z: \\samba_server\share_name /user:domainname\%USERNAME% /persistent:yes

    :: Check mount status
    if %errorlevel% equ 0 (
    echo [INFO] Samba share Z: mounted successfully.
    ) else (
    echo [ERROR] Mount failed. Error code: %errorlevel%
    )
  2. Run samba-mount.bat automatically:

    • At logon: copy the file to the Windows node, run Win + R -> shell:startup, and paste it into the shell:startup directory.
    • Other methods: scheduled tasks or group policy.