Build your own Ethereum Mining Rig, part 2: Linux Setup

In this second installment of our DIY Ethereum mining guide, we’ll look at how to install and configure Linux to setup your rig as an automated, remotely-manageable appliance. Don’t be dissuaded if you’ve never used Linux before—our step-by-step guide makes it simple!

Why Linux over Windows? First, it’s free—and saving ~$100 on the operating system is a big plus when you’re trying to maximize profitability. Other reasons include lesser hardware requirements (Linux is perfectly happy running from a USB stick plugged into ancient hardware!), simpler remote administration capabilities, and oftentimes better stability. The downside of running Linux is that video driver support isn’t on the same level as Windows, and things like GPU undervolting are trickier (but still possible via BIOS mods).

If you missed the hardware portion of our guide, make sure to check it out first. Otherwise, read on.

Build an Ethereum Mining Rig, part 2:  Linux Setup

The following is heavily adapted from my original 2013 Litecoin mining guide, updated for the latest Xubuntu LTS version, the new AMDGPU-PRO drivers, and necessary ethereum mining software. If you’re a bit nervous because you’ve a complete Linux newbie, don’t be. Simply follow the step-by-step instructions exactly as they’re written, and you’ll be fine. Even if you’ve never done anything like this before, you should be up and running in roughly an hour.

Step 1: Configure BIOS settings

Before we even get to Linux, let’s take a minute to make sure that your mining computer’s BIOS settings are in order. Power on your computer, and press the “delete” key a few times immediately after power on. You should end up in the BIOS configuration area. Do the following, then save & exit:

  • Change power options so that the computer automatically turns itself on whenever power is restored. The reason for this is two-fold: first, it’ll make sure that your miner automatically starts up after a power outage. Second, it makes powering the computer on much easier if you don’t happen to have a power switch connected to the motherboard.
  • Make sure that your USB stick is first in the boot-up order (you may need to have a USB stick attached).
  • Disable all components that you don’t plan to use. This may save a little bit of power, and since your miner will likely be running 24/7, it’ll add up. For me, that meant disabling onboard audio, one of the SATA controllers, the USB 3.0 ports (I only had a 2.0 USB stick), the Firewire port, and the serial port.
  • If you’re running a lot of GPUs (4+), additional tweaks might be necessary to ensure that they’re all recognized by the OS. Exact tweaks vary by motherboard, but setting the PCIe speed to Gen1 is usually a good place to start. No need to change anything now, but make a mental note that you may need to come back and play around a bit if all of your GPUs don’t show up in the OS later.

Step 2: Install Xubuntu Desktop on your miner

Xubuntu is a lightweight version of Ubuntu, a popular Linux distribution. Most other distros should work just fine, but be aware that the GPU drivers require the presence of Xorg, which means server distros that don’t have a GUI will not work properly.

  • Xubuntu 16.04.2 is the latest LTS release at the time of this guide, so that is what I recommend you use. You can download it here.
  • You’ll need to either write the installation ISO image to a USB stick (highly recommended), or burn it to a DVD. If you use a DVD, you’ll need to temporarily hook up a DVD drive to your mining rig for the installation (make sure you temporarily enable your SATA controller if you disabled it in step 1!).
  • Once you have the installation media prepared, you’re ready to install Xubuntu to your miner’s boot device (whether it’s an SSD, mechanical harddrive, or another blank USB stick). Boot using your new installation media (make sure it’s first in your miner’s BIOS boot order list). The Xubuntu installer should appear.
  • Follow the prompts, and make sure to click the “auto-login” box on the last step of the installer (otherwise, all of the default options are fine).
  • When the installation is complete, you should automatically boot into the Xubuntu desktop. Make sure to remove your installation media.

Step 3: Install SSH and package updates

At the Xubuntu desktop, press CTRL+ALT+T to open a terminal window.

  • Install SSH by typing:
    sudo apt-get install openssh-server

With SSH installed, you can unplug the keyboard/mouse/monitor from your miner, and complete the rest of the installation from your desktop computer. Simply download Putty onto your desktop, run it, and enter the IP address of your mining rig (type ifconfig at the Xubuntu terminal to find your miner’s address if you don’t know it—it will probably look like 192.168.0.x). That should bring up a remote terminal session to your miner, which is more or less just like sitting at the keyboard in front of it.

If you plan to manage your mining rig remotely over the internet, you’ll need to forward port 22 on your router to your miner. Make sure that you use a strong Xubuntu password!

Setup should be pretty quick from this point, as now you can simply copy text from this webpage (highlight it and press CTRL+C) and then paste it into your Putty session by simply right-clicking anywhere inside the Putty window. I highly recommend that you complete the remainder of the guide in this manner, as it eliminates the risk of typos!

  • Install package updates by typing (or copying & pasting via right-click into Putty) the following commands:
    sudo apt-get dist-upgrade

Step 4: Install AMDGPU-PRO drivers

Next up, we’ll install AMD’s video drivers. I tested several versions and found that the latest release (17.10 as of 6/9/2017) gives the best performance. So that’s what we’ll use.

  • Type the following commands (press “enter” and wait for the operation to complete at the end of each line):
    cd ~/Downloads
    wget --referer=http://support.amd.com https://www2.ati.com/drivers/linux/ubuntu/amdgpu-pro-17.10-414273.tar.xz
    tar -Jxvf amdgpu-pro-17.10-414273.tar.xz
    cd amdgpu-pro-17.10-414273
    ./amdgpu-pro-install -y
  • Some of these steps may take a minute or two to complete. When the installation is complete, type the following:
    sudo usermod -a -G video $LOGNAME
    sudo reboot

The second command will reboot your rig, which will cause you to immediately lose your SSH (Putty) connection. Wait a few seconds to give the computer a chance to boot, and then re-establish a new connection via Putty, and re-login.

Step 5: Install Ethereum software

Next up, we’ll install the Ethereum software that will let us create a new wallet address. We’ll need this to store the coins we receive from mining.

  • Type the following to install the necessary ethereum packages:
    sudo add-apt-repository ppa:ethereum/ethereum
    sudo apt-get update
    sudo apt-get install ethereum geth
    
  • Now it’s time to create your Ethereum wallet address:
    geth account new

You’ll be prompted to enter a password, and then to confirm it (use a strong password!). The output will be a long string between two curly braces { }. That’s your new wallet address—make a note of it (highlight it within Putty to copy it to your clipboard).

Important: The combination of the password you just used to create this address *and* the associated encrypted key file is what gives you control over your new wallet address. If you lose either of these, you’ve also lost control of your wallet and all of the coins associated with it—and there is literally nothing that anyone will be able to do to help you. Remember your password, and keep multiple backups of your key file(s)!

Your key file(s) are stored in the ~/.ethereum/keystore directory. Copy the entire /keystore folder someplace safe to backup your wallet (I’ll cover backups in detail in a later section of this guide).

If you ever forget your wallet address, you can type geth account list to see your addresses and the location of their key files.

Step 6: Install Claymore’s Ethereum miner

There are several options as far as mining software, and I’ve experimented with all of the popular ones. I think Claymore’s miner is the best option, even if it does have two fairly significant downsides: it’s closed-source, and it’s not free (~1% of your mining time benefits the creator of the miner).

Two alternatives are the stock ethereum miner (ethminer) and Genoil’s fork of the stock miner. They’re both open-source and free, but they have pretty crippling downsides.

The stock ethminer is much slower than Claymore’s miner (by a margin of over 5% on my test rig). In addition, ethminer creates the Ethereum DAG file on disk instead of in GPU memory, which is slow and uses a lot of space (and if you’re running off a USB stick, all those writes may eventually wear it out).

Genoil’s fork seems to be nearly as fast as Claymore’s, and it doesn’t use physical disk space for the DAG, but it’s not stable (at least not for me). It often crashes, especially on startup (whereas I have yet to see a single crash on Claymore’s miner after nearly a week of full-time mining). The author abandoned development months ago, so improvements are unlikely.

So, explanation aside, here is how to setup Claymore’s miner:

  • First return to your downloads directory and grab the latest version (9.5 as of 6/9/2017):
    cd ~/Downloads
    wget https://github.com/nanopool/Claymore-Dual-Miner/releases/download/v9.5/Claymore.s.Dual.Ethereum.Decred_Siacoin_Lbry_Pascal.AMD.NVIDIA.GPU.Miner.v9.5.-.LINUX.tar.gz
    
  • Then create a new directory for it, and unpack it there:
    sudo mkdir /usr/local/claymore95
    sudo tar -xvf Claymore.s.Dual.Ethereum.Decred_Siacoin_Lbry_Pascal.AMD.NVIDIA.GPU.Miner.v9.5.-.LINUX.tar.gz -C /usr/local/claymore95
    
  • Then let’s head over to the installation directory and create a startup script:
    cd /usr/local/claymore95
    sudo chmod u+s ethdcrminer64
    sudo nano mine.sh
    
  • Nano will open a new blank text file; enter the following into it:
    #!/bin/sh
    export GPU_MAX_ALLOC_PERCENT=100
    ./ethdcrminer64 -epool us1.ethermine.org:4444 -ewal YOUR_WALLET_ADDRESS.Miner01 -epsw x -mode 1 -tt 68 -allpools 1
    

    Where it says YOUR_WALLET_ADDRESS, use the address you created in step 5 (you’ll need to put “0x” in front of it). The “Miner01” following your address can be changed to any friendly label that you want to give your miner (only important if you plan to run multiple rigs). It’s easiest to copy the last line from my guide into something like notepad, then replace YOUR_WALLET_ADDRESS with your actual address there, and then copy the finished line into putty via right-click to get everything into nano without typos.

  • Save the file and quit nano by pressing CTRL+X and then answering (Y)es to save the changes, then enter the following to give your new script execute permission:
    sudo chmod +x mine.sh

Note that I’m using ethermine.org as the mining pool here. It’s a fairly typical ETH pool that seems to have good reliability, but feel free to pick your own pool. Most don’t require registration, and simply payout to whatever wallet address you supply whenever a certain threshold is met (usually whenever you accumulate 1+ ETH). Assuming you stick with ethermine.org, you’ll be able to check on your miner’s status by going to this URL after you start mining: https://ethermine.org/miners/[YOUR WALLET ADDRESS]

  • Now is a good time to test things. You can fire up your miner by typing:
    ./mine.sh

You should see the Claymore miner start up. It’ll take a minute or two before it actually starts mining, but it should get there eventually. When you see a scrolling log of outputs that includes non-zero hashrates (expect hashrates in the low to mid 20s for unoptimized GPUs), you’re good to go. If the script fails to start, or you see errors, make sure that you’ve created the script exactly as outlined in the guide.

Press CTRL+C to exit the miner when you’re satisfied that it’s working.

Step 7: Create auto-start scripts

We’re almost done! We want to set up our rigs automatically start mining whenever the rig is powered on. That way, we keep mining losses to a minimum whenever a power outage occurs, and we don’t have to worry about manually starting it back up in other situations.

  • First, install screen:
    sudo apt install screen
  • Then type the following to create a new script in your home directory and open it in nano:
    cd ~
    sudo nano miner_launcher.sh
  • Enter the following text into the editor (substitute your actual Xubuntu username for YOUR_XUBUNTU_USERNAME where necessary!):
    #!/bin/bash
    DEFAULT_DELAY=0
    if [ "x$1" = "x" -o "x$1" = "xnone" ]; then
       DELAY=$DEFAULT_DELAY
    else
       DELAY=$1
    fi
    sleep $DELAY
    cd /usr/local/claymore95
    su YOUR_XUBUNTU_USERNAME -c "screen -dmS ethm ./mine.sh"
  • Save and quit nano (CTRL+X), and then type:
    sudo chmod +x miner_launcher.sh
  • Now we need to call our new script during startup; we do that by adding it to /etc/rc.local. Type the following to open /etc/rc.local in nano:
    sudo nano /etc/rc.local
  • Add the following text, right above the line that reads “exit 0” (substitute your own username!):
    /home/YOUR_XUBUNTU_USERNAME/miner_launcher.sh 15 &

Then save and quit out of nano (CTRL+X).

Step 8: Create an alias to easily check on the Claymore miner process

We’re essentially done at this point, but you’ll probably want to manually SSH into your miner from time to time to manually check on your hashrates & GPU temperatures, etc. Creating an alias will make that easy.

  • Type:

    sudo nano .bashrc
  • Scroll to the end of the file, and then add this text above the line that reads “# enable programmable completion…”
    alias miner='screen -x ethm'
  • Save and quit out of nano.

That’s it—you’re done! You’ll probably want to run a full test now. The easiest way to do that is to close your Putty session and power down your miner. Turn it back on and the following should happen:

  1. Your miner should boot into Xubuntu. This may take up to a minute, depending on the speed of your boot device (it’ll be much faster on an SSD).
  2. 15 seconds after Xubuntu has loaded, the Claymore miner will automatically start and begin mining. You might notice the fans on your GPUs spin up a bit when this happens.
  3. You should be able to SSH into your miner at any time and type miner to monitor the miner’s process. To close the screen (but keep the miner running), press CTRL+A, then CTRL+D.
  4. If you ever need to start the Claymore miner manually (because you quit out of it, or kill it, etc), simply type ~/miner_launcher.sh

Output from a single budget RX 470 at stock settings running Claymore’s ETH miner. You should see something like this when connecting to your rig via SSH and running your “miner” alias.

Congratulations—you have your own headless linux ethereum miner!

The next section of this guide covers setup under Windows, and then we’ll take a look at optimizing miner settings for better performance.

302 Responses to Build your own Ethereum Mining Rig, part 2: Linux Setup

  1. notADuck says:

    Do you happen to know why I keep getting the line :

    Failed to set new fan speed, check if miner has root access!

    printed continuously while the miner is running? The Fans seem to remain at around 50%.

    • Anonymous says:

      are you root? try throwing a sudo in there

      • JD says:

        I have the same problem. I have added sudo before the command ./mine.sh but same results. Also, I went back and made sure the file permissions are set to Group: sudo Access: create and delete files. So, as far as I can tell, I’ve set the permissions to allow root access, but I still get the error. “Failed to set new fan speed, check if miner has root access!”
        Any help you can offer would be much appreciated! Thank you!

  2. Anonymous says:

    Hello guys,
    I have this problem.
    Whe I start ./mine.sh file, happens this thing:
    ./ethdcrminer64: 1: ./ethdcrminer64: Syntax error: Unterminated quoted string

    This is the mine.sh file:
    #!/bin/sh
    export GPU_MAX_ALLOC_PERCENT=100
    ./ethdcrminer64 -epool us1.ethermine.org:4444 -ewal MyADDRES.Miner01 -epsw x -mode 1 – tt 68 -allpools 1

    Can anyone help me please?
    Ciao.
    Nico

    • deadman.walking says:

      in the part that says “MyADDRES.Miner01” shouls say something like “0x54015154054015604504.computer01” where “0x54015154054015604504” is the adress that you got in step 5, “computer01” is the name of the PC you’re mining from

      • Anonymous says:

        Yes you are right…
        I write exactely what you written, but it is not working…

        • deadman.walking says:

          You must write YOUR information, the one I posted is an example of how it should look, as I don’t know your wallet address nor your mining rig name

  3. Anonymous says:

    Yes i do what are you written…

    • deadman.walking says:

      And remember to add the “0x” at the beggining of your wallet address, as the output in step 5 doesn’t included it automatically

      • Nico says:

        Ok guys..
        Many thanks for the feed-back.
        To be clear this is what i written:
        #!/bin/sh
        export GPU_MAX_ALLOC_PERCENT=100
        ./ethdcrminer64 -epool us1.ethermine.org:4444 -ewal MyADDRES.Miner01 -epsw x -mode 1 – tt 68 -allpools 1

        Where: MyADDRES is 0x….bla bla bla from “geth account new” command line.
        Miner01: i leave this infro as is. If it is not whre I can find the info I have to put in?

        Many thanks again to all the forum!!
        Nico

        • deadman.walking says:

          In every new terminal window says something like: “nico@miner01:~$”, where “miner01” is the name of your computer, the one you must input in the mentioned command.

        • sometimesIrunsometimesImine says:

          It looks like there is a space in ” – tt” between the dash and the first t; change that to “-tt” and it should work

  4. Michael Gombocz says:

    hey, got a problem with my rig! installed sam xubuntu as you – but it seems like my RIG goes in some kind of “idle” state. reported hashrate keeps up, but i dont generate shares after leaving the rig about 30 minutes online – anything i can do?

  5. J A says:

    Hi. Great write-up. So far, this is the guide I’m following. For now, I reached an issue. I bought RX 580, RX 570 and GTX 1070s. Following your guide, I was able to install AMD drivers. Before actually start mining, I installed Nvidia drivers as well, for GTX 1070. Nvidia requires installation of driver in TTY, so that’s what I did. After installation, of Nvidia, with both AMD and Nvidia connected, Ubuntu 16.04 LTS won’t boot into gui anymore.

    Removing AMD card allows me to go into gui once again.

    Any ideas?

    • Anonymous says:

      hi, sadly you are not suppost to mix AMD-Cards with Nvidia ones. There are also problems mixing different types of AMDs aswell!
      I would recommend a fresh-install with either only AMD cards or NVIDIA ones!

      • Anonymous says:

        That’s not good news 🙁

        Follow-up question, you mean it’s also not recommended using GTX 1070, and 1080 on same rig?

        Will mixing AMD and Nvidia be solved if using Windows 10?

        • deadman.walking says:

          I solved the issue of mixing nvidia and ati cards using 1 monitor in the ati GPU and 1 monitor in the nvidia GPU, in my case pc boots in ati monitor, but once xubuntu starts the desktop goes to the nvidia monitor and claymore ran without problems. I don’t know if it is related to the order the drives where installed or the slot used by each GPU, anyway I tested only with 2 GPUs without risers, so I don’t know if you have more gpus you need more monitors or even if will it work… I opted for use only one kind of GPU in each rig, no problem in mixing rx470, rx560 and rx570 from diferent manufacturers in my case, I guess it depends on the motherboard you use.

          • Anonymous says:

            I, on the other hand, use Gigabyte, with 6 pcie slots. It has onboard VGA port, using Celeron G3930. I have monitor plugged to the motherboard. Only connected Nvidia and AMD cards to HDMI, and HDMI input of monitor (accepts both VGA and HDMI). It’s where I see no output when in HDMI when AMD present.

  6. Anonymous says:

    Hi,
    Is there any merit to the preloaded mining OS SSD’s etc? I’ve been looking at buying the ethOS Mining OS, just because I have to buy a SSD or boot device anyway. Thoughts?

  7. Orlando Sanchez says:

    Hello, i have a few months with a few rigs all wuth xubuntu because i get more hasrate than windows. But i have a problem with graphic interface, them i install the amd drivers and reboot, never get up the x interface again. Thats not a bit problem i just use a console, but untill now i dont kniw why that is happening. I have the same problem with all the rig, no matter if it have 1 or 6 gpus ot the model of the cards, just the interface never work. Sorry i am liying in 1 pc work, an old one. If you can give me any idea what to check i will apprecuate. Thanks.

  8. Ed says:

    Is geth not working for others?

  9. Scott says:

    hey guys new here but I was able to follow along and I’ve got everything running so far. Except checking the status of the miner. the line: alias miner=’screen -x ethm’ doesn’t appear to do anything for me. When I type miner i get “Three is no screen to be attached matching ethm”

    Any clues on how to fix that?

    • steve vaginabreath says:

      does your miner_launcher.sh run without failure when executed manually? it shouldn’t.

      ps aux | grep screen

      if you don’t see an entry for screen there,
      sudo apt-get update
      sudo apt-get install screen

      then retry miner_launcher.sh

  10. Denis says:

    hi, thanks for your article, all works, Exept:
    I get a password prompt everytime I run miner_launcher.sh on my Ubuntu 16.04
    What should I do to get rid of it?

    • slicxx says:

      if you have not rebootet yet, just du it – if it does not work then, most likely its a typo in one fo your script-names, or you have not downloaded a tool correctly via apt-get install!
      you can just re-type every apt-get command, and see if it starts to update/download one of them. could fix your problem!
      if not, there is a problem with one of your “handmade” scripts!

      • Denis says:

        I think the reason is the following string:
        su YOUR_XUBUNTU_USERNAME -c “screen -dmS ethm ./mine.sh”

        I’ve changed su->sudo and YOUR_XUBUNTU_USERNAME to my username

        • slicxx says:

          my line sounds like the following:
          “su eth0 -c “screen -dmS ethm ./mine.sh”
          since eth0 is the username of my rig.
          dont change su to sudo because the string interprets “su” as super-user and can run it without typing the passwort there

        • Denis says:

          my sting is
          su denis -c “screen -dmS ethm ./mine.sh”

  11. ACE says:

    Hi Guys
    Sometimes the program ends with this message:

    AMD Cards available: 1
    GPU #0: Hawaii, 1167 MB available, 44 compute units
    POOL/SOLO version
    GPU #0: algorithm ASM
    No NVIDIA CUDA GPUs detected.
    Total cards: 1
    AMD ADL library not found.
    ETH: Stratum – connecting to ‘us1.ethermine.org’ port 4444
    ETHEREUM-ONLY MINING MODE ENABLED (-mode 1)
    ETH: eth-proxy stratum mode
    “-allpools” option is set, default pools can be used for devfee, check “Readme” file for details.
    Watchdog enabled
    Remote management (READ-ONLY MODE) is enabled on port 3333
    ETH: Stratum – Connected (us1.ethermine.org:4444)
    ETH: Authorized
    Setting DAG epoch #134…
    Setting DAG epoch #134 for GPU0
    Create GPU buffer for GPU0
    GPU0 – OpenCL error -61 – cannot allocate big buffer for DAG. Check readme.txt for possible solutions.
    GPU 0 failed
    Setting DAG epoch #134 for GPU0
    GPU0, OpenCL error -38 – cannot write buffer for DAG
    GPU 0 failed

    Usually the GPU will detect with 8GB RAM:
    AMD Cards available: 1
    GPU #0: Hawaii, 8149 MB available, 44 compute units

    After restart the miner_launcher.sh it works fine until this “Error 61”.

    Any Ideas?
    Thanks!!

  12. ACE says:

    i dont overclocked the card by myselfe, but maybe the previous owner 🙂 sounds like i must check this…
    thanks

  13. Richard Moon says:

    Great guide nice work and well done.

    One additional step you might mention is that at the end of step 4. I had to download a custom driver for Nvidia, using the ubuntu panel) and then run it to switch to using the nvidia driver instead of the default driver. Without this Eth did not recognize my cards.

    Also a quick guide to re-using your Eth miner address from a different rig would be helpful. Again Eth would not run with a key file and a tutorial on how to copy that from another system would be helpful

    thanks and Mine-on!

    richard

    • alvan says:

      im kinda having this problem too. complete noob here not sure on how to install nvidia drivers for the gpu. so far this is what i gathered. anyone can verify?

      Since most of these answers are outdated… Here is modern way to install the nvidia drivers for Ubuntu (for 14.04 and newer):

      All you need to do is:

      Add the graphics-drivers ppa
      Install the recommended Nvidia driver
      Restart your system

      so, from a terminal, run:

      sudo add-apt-repository ppa:graphics-drivers/ppa
      sudo apt-get update
      sudo ubuntu-drivers autoinstall
      sudo reboot

      that’s all there is to it!

      note: if you want to install a specific version of the graphics driver, you can see which drivers are available for your hardware by running: sudo ubuntu-drivers devices, and inspecting the output to see which drivers are supported. Then just install normally with, for example, sudo apt-get install nvidia-381

  14. slicxx says:

    Does anybody know how to reattach “screen” with miner_launcher.sh?
    there is no screen attached to it after a restart!

    • deadman.walking says:

      That hapen to me when autostart doesn’t work, if in terminal you go to /usr/local/claymore95 directory and run ./miner.sh it work fine, so I think is something about failed autostart

  15. J A says:

    I used linux guide above to create my Ethereum wallet account, with geth account new, kept the address safe, and remembered the password. Unfortunately, due to difficulty in settling up mix mining, I moved to Windows. I wasn’t able to save my key. I’m only a few days in. Is it still possible to retrieve key using password, address alone (in windows 10 this time). Or is it easier to just start over now. I’ve only mined .116 ether for now, since not yet full blown yet. Still in experimental stage. your immediate advice will be helpful.

    Thanks

Leave a Reply

Your email address will not be published.