This guide will help you setup multiple NVIDIA GPUs (proprietary drivers) on Ubuntu 16.04.03 headless* server, enabling overclock and fan control.
*Headless means without a monitor connected to the rig
Prerequisites:
- Clean Ubuntu 16.04.03 headless server installation
- SSH enabled
Steps1. Since it's a freshly installed OS, SSH into the system and update:
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y
2. Install a lightweight X server
sudo apt-get install --no-install-recommends xorg lightdm
3. Disable the X server from auto starting on boot. Otherwise it would cause conflicts when you try to overclock the cards later on.
sudo systemctl disable lightdm.service
4. Install GCC and MAKE in order to be able to install the NVIDIA proprietary drivers
sudo apt-get install gcc make -y
5. Install GTK in order to be able to use nvidia-settings
sudo apt-get install libgtk-3-dev -y
6. Download the latest NVIDIA proprietary drivers. Right now they are 384.98, so check for updates from NVIDIA's website
7. Reboot
sudo reboot
8. Make the file executable and start the installation:
chmod +x NVIDIA-Linux-x86_64-384.98.run
sudo ./NVIDIA-Linux-x86_64-384.98.run
8.1 At a certain point you will be greeted by the following error.
WARNING: Unable to find a suitable destination to install 32-bit compatibility libraries. Your system may not be set up for 32-bit
compatibility. 32-bit compatibility files will not be installed; if you wish to install them, re-run the installation and
set a valid directory with the --compat32-libdir option.
Error ScreenshotIgnore it, it's all ok.
8.2 At the end of the installation you will be asked:
Would you like to run the nvidia-xconfig utility to automatically update your X configuration file so that the NVIDIA X driver will be used when you restart X? Any pre-existing X configuration file will be backed up.
Click
NO.
8.3 Generate xorg.conf
sudo nvidia-xconfig -a --allow-empty-initial-configuration --cool-bits=31 --use-display-device="DFP-0" --connected-monitor="DFP-0"
cool-bits enables overclocking; the rest tricks the rig that there is a monitor connected to it.
You will get this message:
Package xorg-server was not found in the pkg-config search path.
Perhaps you should add the directory containing `xorg-server.pc'
to the PKG_CONFIG_PATH environment variable
No package 'xorg-server' found
Don't worry, ignore it.
8.4 Reboot
sudo reboot
9. Boot up and check if all the GPUs are shown
nvidia-smi
You should get something like this:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 384.98 Driver Version: 384.98 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 1070 Off | 00000000:01:00.0 Off | N/A |
| 0% 24C P0 30W / 151W | 0MiB / 8114MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 1 GeForce GTX 1070 Off | 00000000:02:00.0 Off | N/A |
| 0% 23C P0 34W / 180W | 0MiB / 8114MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+-----------------------------------------------------------------------------+
10. We are nearly done. Let's add some additional stuff and setup overclocking. We are going to make them boot together with Ubuntu, so we don't have to do them manually every single time.
sudo nano /etc/rc.local
Sample file:
# Add some error logging, you can disable it after when you are certain everything is working:
exec 2> /tmp/rc.local.log
exec 1>&2
set -x
# Enabling persistence mode makes sure that the driver doesn't get unloaded.
sudo nvidia-smi -pm ENABLED
# Adjust the power limit. In Afterburner you set a % but here you must specify value. You can get base power limit through nvidia-dmi
# In my case, the value for GPU0 is 151W, so 70% power limit is 151*0.70~106
# You specify the card through the parameter -i, so GPU is -i 0
sudo nvidia-dmi -i 0 -pl 110
# You must start the X Server for overclocking and fan control to work
sudo X :0 &
sleep 10
export DISPLAY=:0
sleep 2
# Set GPU0 fan speed to 50%, Clock Offset to +100 and Memory Offset to +300
# For more cards, just copy paste the line and change [gpu:x] and [fan:x]
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" -a "[fan:0]/GPUTargetFanSpeed=50" -a "[gpu:0]/GPUGraphicsClockOffset[3]=100" -a "[gpu:0]/GPUMemoryTransferRateOffset[3]=300"
exit 0
Reboot:
sudo reboot
Check for error
cat /tmp/rc.local.log
If the file ends with
+exit 0 then you have successfully managed to overclock and set the fan speed.
11. Let's try some mining:
11.1 Download EWBF from the official bitcointalk thread on your main computer
https://bitcointalk.org/index.php?topic=1707546.011.2 Upload miner, unarchive and create a run script
From your computerscp /Users/xxxx/Downloads/Zec\ Miner\ 0.3.4b\ Linux\ Bin.tar.gz your_user_name@ip_of_rig:/home/your_user_name
From the rigtar xvf Zec\ Miner\ 0.3.4b\ Linux\ Bin.tar.gz
cd 0.3.4b
echo "./miner --server eu.zenmine.pro --user znWvyc22usByJRRjijeFeD2D7yNF9P11MAG.rig1 --pass x --port 9009 --log 2 --api 0.0.0.0:3333" > run.sh
chmod +x run.sh
11.3 Run the script
./run.sh &
Don't forget the prefix
&. It makes sure that the miner keeps running after you exit the session.
12. CTRL+D out of the SSH session and enjoy.
NoteIf you get an error message regarding the drivers at any point in time, redo
STEP 8 and all of its subsets.
If you want I will add additional watchdog scripts.
If you find this guide helpful, you could buy me a beer
.
[ BTC ] 18n4eKg8PB1USs5f95MK34JA4KmaV1YhT2
[ ETH ] 0xf5a6431ac4acd8b1e5c8b56b9b45e04cdea20e6e
[ LTC ] LZT8o523jwa8ZmgMjPLNMJeVeBnLuAvRvc