Майнинг на Linux Mint (Ubuntu) + Nvidia + AMD + майнеры + разгон. Этакий How-To для новичков.

Тема в разделе "Инфа по майнингу", создана пользователем Транклюкатор, 10 дек 2017.

  1. Транклюкатор

    Транклюкатор Господин ПЖ

    Ниже приведу практический опыт с подробным описанием решения проблем, с которыми столкнулся лично я.

    + буду добавлять общую информацию по разгону и прошивке карт AMD. На этом форуме почему то укоренилось мнение, что "красные" в линуксе не гонятся и не шьются, но это не так.
    + небольшие мануалы по сборке различных майнеров из исходников.


    Сразу оговорюсь:
    1) У меня несколько ригов, в которых использовано совершенно разное оборудование (разные материнки, процессоры, оперативки и т.д.), за исключением того, что все карты - Nvidia с видеовыходами (модели и производители карт тоже разные);
    2) Копаю исключительно EWBF майнером;
    3) Использую графику и не вижу в этом ничего плохого;
    4) Во всех случаях установлен Linux Mint 18 - MATE (64-bit), т.е. всё ниже описанное подойдет и для Ubuntu 16.04 за некоторыми незначительными исключениями.
    5) С убунтами я дружу давно, но считаю себя новичком, поскольку повысить уровень красноглазия меня заставил именно майнинг, до этого я обходился редким поиском на форуме и хелпе ubuntu.ru. Какие-то важные или не очень моменты могу упустить, поправьте.
    6) Про "красные" расписать подробно не могу, так как у меня их нет.

    РАЗГОН NVIDIA БЕЗ ВИДЕОВЫХОДОВ: http://miningclub.info/threads/majn...ow-to-dlja-novichkov.19005/page-9#post-424885
    ПРО РАЗГОН И ПРОШИВКУ AMD: http://miningclub.info/threads/majn...ow-to-dlja-novichkov.19005/page-6#post-409666
    ПРО 12+ AMD+NVIDIA - МАНУАЛ ОТ x001tk: http://miningclub.info/threads/12-k...n-monitoring-kratkij-gajd-lichnyj-opyt.22677/

    Она, чаще всего, не вызывает никаких вопросов, если только вы не решили сделать dual boot с виндой. В этом случае, могут потребоваться пляски с бубном по восстановлению grub. У меня есть несколько машин, на которых стоит Ubuntu/Mint+вынь7/10, если возникнут вопросы, пишите в комментариях, добавлю решения сюда, поскольку заморочки уже позабылись.
    Второй неприятный момент после установки, с которым я сталкивался, но не на этих машинах - отсутствие сети после установки, решается в индивидуальном порядке установкой драйвера под конкретный сетевой адаптер.
    Втыкаем монитор в Nvidia-карту и устанавливаем драйвер:

    СПОСОБ 1. Из репозиториев
    Код:
    sudo apt-get install nvidia-375 nvidia-settings

    СПОСОБ 2. Из PPA (более свежий драйвер)
    Код:
    sudo add-apt-repository ppa:graphics-drivers/ppa
    sudo apt-get install nvidia-384 nvidia-settings

    СПОСОБ 3. С официального сайта Nvidia (самый свежий драйвер там)

    Качаем драйвер http://www.nvidia.ru/Download/Find.aspx?lang=ru
    Код:
    # устанавливаем необходимые пакеты
    sudo apt-get install linux-headers-`uname -r` binutils pkg-config build-essential xserver-xorg-dev
    # прибиваем иксы
    sudo service mdm stop
    # заходим в консоль Ctrl+Alt+F1, логинимся, переходим в папку, куда скачали драйвер
    cd ~/Download
    # запускаем инсталлер
    ./NVIDIA-Linux-x86_64-384.90.run

    Код:
    # перезапускаем иксы
    sudo service mdm restart
    # конфигурируем
    sudo nvidia-xconfig -a --cool-bits=28 --allow-empty-initial-configuration
    # перезапускаем иксы
    sudo service mdm restart

    Запустить nvidia-xconfig можно непосредственно из папки, где находится программа:
    Код:
    $ dpkg -S nvidia-xconfig
    nvidia-384: /usr/lib/nvidia-384/bin/nvidia-xconfig
    $ cd /usr/lib/nvidia-384/bin/
    $ sudo ./nvidia-xconfig -a --cool-bits=28 --allow-empty-initial-configuration

    Всё, теперь запускаем GUI настроек Nvidia и проверяем все ли карты определились, управляются ли кулера, редактируются ли настройки разгона.
    Код:
    nvidia-settings

    Качаем майнер по ссылкам из топика https://bitcointalk.org/index.php?topic=1707546
    Достаем из архива бинарник miner.
    Код:
    # переходим в папку, куда распаковали майнер
    cd ~/0.3.4b
    # даём права на запуск
    sudo chmod u+x miner
    # запускаем с нужными настройками куда майнить (адрес_пула.имя_рига, порт, кошелёк) и самого
    # майнера, где log 1 - записывать ошибки в miner.log; --fee 0 - комиссия разработчику;
    # --eexit 2 - остановить программу при проблемах с сетью; --cuda_devices - номера
    # используемых GPU
    ./miner --log 1 --fee 0 --eexit 2 --server eu1-zcash.flypool.org --user t1fs3fVj3j8TBra45YsE5291vbWpXtbgUm9.rig1 --pass x --port 3333 --cuda_devices 0 1 2 3 4 5

    Рулим разгоном. Я, чтобы не заморачиваться, применяю настройки сразу на [2] и [3] уровне производительности, потому что разные карты майнят на разных левелах.
    Код:
    # процессор, режим 2
    nvidia-settings -a "[gpu:0]/GPUGraphicsClockOffset[2]=50"
    # процессор, режим 3
    nvidia-settings -a "[gpu:0]/GPUGraphicsClockOffset[3]=50"
    # память, режим 2
    nvidia-settings -a "[gpu:0]/GPUMemoryTransferRateOffset[2]=500"
    # память, режим 2
    nvidia-settings -a "[gpu:0]/GPUMemoryTransferRateOffset[3]=500"

    Рулим кулерами.
    Код:
    nvidia-settings -a "[gpu:0]/GPUFanControlState=1" && nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=100"

    Используем power limit.
    Увидеть текущее значение для каждой карты:
    Код:
    nvidia-smi

    Значение задаётся в ваттах:
    Код:
    sudo nvidia-smi -pl 200

    Если нужно применить power limit к конкретной карте, то её BusID вписываем после аргумета -i
    Код:
    sudo nvidia-smi -i 0000:08:00.0 -pl 220

    Я просто добавляю скрипты через GUI "Запускаемые приложения".

    Прежде чем добавлять скрипты в автозагрузку нужно:
    1) Включить автоматический вход пользователя в систему.
    2) Добавить в файл /etc/sudoers все команды, которые вы используете в скриптах через sudo.
    Код:
    sudo sudoers

    Примерно, зависит от потребностей, nvidia-settings должно работать и без sudo, но у меня так, вместо username - ваше имя пользователя:
    Код:
    # Cmnd alias specification
    Cmnd_Alias SHUTDOWN_CMDS = /sbin/reboot, /usr/bin/wvdial, /usr/sbin/service teamviewerd restart, /usr/bin/nvidia-settings, /usr/bin/nvidia-smi
    #includedir /etc/sudoers.d
    username ALL=(ALL) NOPASSWD: SHUTDOWN_CMDS

    Полный путь к команде ищется так:
    Код:
    which имя_команды

    Код:
    #!/bin/bash

    sudo nvidia-smi -pl 200

    sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" && sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=100"
    sudo nvidia-settings -a "[gpu:1]/GPUFanControlState=1" && sudo nvidia-settings -a "[fan:1]/GPUTargetFanSpeed=100"
    sudo nvidia-settings -a "[gpu:2]/GPUFanControlState=1" && sudo nvidia-settings -a "[fan:2]/GPUTargetFanSpeed=100"
    sudo nvidia-settings -a "[gpu:3]/GPUFanControlState=1" && sudo nvidia-settings -a "[fan:3]/GPUTargetFanSpeed=100"
    sudo nvidia-settings -a "[gpu:4]/GPUFanControlState=1" && sudo nvidia-settings -a "[fan:4]/GPUTargetFanSpeed=100"
    sudo nvidia-settings -a "[gpu:5]/GPUFanControlState=1" && sudo nvidia-settings -a "[fan:5]/GPUTargetFanSpeed=100"

    sudo nvidia-settings -a "[gpu:0]/GPUGraphicsClockOffset[2]=50"
    sudo nvidia-settings -a "[gpu:0]/GPUGraphicsClockOffset[3]=50"
    sudo nvidia-settings -a "[gpu:0]/GPUMemoryTransferRateOffset[2]=500"
    sudo nvidia-settings -a "[gpu:0]/GPUMemoryTransferRateOffset[3]=500"

    sudo nvidia-settings -a "[gpu:1]/GPUGraphicsClockOffset[2]=0"
    sudo nvidia-settings -a "[gpu:1]/GPUGraphicsClockOffset[3]=0"
    sudo nvidia-settings -a "[gpu:1]/GPUMemoryTransferRateOffset[2]=0"
    sudo nvidia-settings -a "[gpu:1]/GPUMemoryTransferRateOffset[3]=0"

    sudo nvidia-settings -a "[gpu:2]/GPUGraphicsClockOffset[2]=50"
    sudo nvidia-settings -a "[gpu:2]/GPUGraphicsClockOffset[3]=50"
    sudo nvidia-settings -a "[gpu:2]/GPUMemoryTransferRateOffset[2]=500"
    sudo nvidia-settings -a "[gpu:2]/GPUMemoryTransferRateOffset[3]=500"

    sudo nvidia-settings -a "[gpu:3]/GPUGraphicsClockOffset[2]=50"
    sudo nvidia-settings -a "[gpu:3]/GPUGraphicsClockOffset[3]=50"
    sudo nvidia-settings -a "[gpu:3]/GPUMemoryTransferRateOffset[2]=500"
    sudo nvidia-settings -a "[gpu:3]/GPUMemoryTransferRateOffset[3]=500"

    sudo nvidia-settings -a "[gpu:4]/GPUGraphicsClockOffset[2]=0"
    sudo nvidia-settings -a "[gpu:4]/GPUGraphicsClockOffset[3]=0"
    sudo nvidia-settings -a "[gpu:4]/GPUMemoryTransferRateOffset[2]=0"
    sudo nvidia-settings -a "[gpu:4]/GPUMemoryTransferRateOffset[3]=0"

    sudo nvidia-settings -a "[gpu:5]/GPUGraphicsClockOffset[2]=50"
    sudo nvidia-settings -a "[gpu:5]/GPUGraphicsClockOffset[3]=50"
    sudo nvidia-settings -a "[gpu:5]/GPUMemoryTransferRateOffset[2]=500"
    sudo nvidia-settings -a "[gpu:5]/GPUMemoryTransferRateOffset[3]=500"

    Я столкнулся с двумя проблемами. В одном случае, из-за полудохлого блока питания останавливалась одна карта и начинала работать только при перезапуске EWBF.
    Код:
    #!/bin/bash
    # выводим название скрипта
    echo autoewbf
    # переходим в папку, куда распаковали майнер
    cd ~/0.3.4b
    # бесконечный цикл
    while true; do
    # проверяем наличие процесса miner, и если его нет, то запускаем в новом эмуляторе терминала, в данном случае
    # опция --eexit 3 закрывает майнер в случае невозможности перезапустить карту и в случае потери связи с пулом
    pidof miner > /dev/null || mate-terminal -e "./miner --log 1 --fee 0 --eexit 3 --server eu1-zcash.flypool.org --user t1fs3fVj3j8TBra45YsE5291vbWpXtbgUm9.rig1 --pass x --port 3333 --cuda_devices 0 1 2 3 4 5"
    # спим 2 секунды и проверяем снова в бесконечном цикле
    sleep 2
    done

    Во втором случае, из-за полудохлого райзера останавливалась карта и, если при этом попытаться закрыть майнер, то система уходила в глубокий фриз, сбросить можно было только хард резетом. Поэтому скрипт перезапуска майнера был идентичен примеру выше, с одним лишь отличием в опции --eexit 2, т.е. закрывать программу только при потере связи с пулом. Скрипт ребута системы при остановке карты выглядит вот так:
    Код:
    #!/bin/bash
    # выводим название скрипта
    echo autoreboot
    # удаляем предыдущий лог майнера
    rm ~/0.3.4b/miner.log
    # создаём новый лог
    touch ~/0.3.4b/miner.log
    # бесконечный цикл
    while true; do
    # ищем слово "stopped" в логе и, если находим, то перезагружаем систему
    grep stopped ~/0.3.4b/miner.log > /dev/null && sudo reboot
    # спим 2 секунды и повторяем проверку
    sleep 2
    done

    У меня всё висит на 3G модемах, подключение к сети я произвожу с помощью wvdial, настройка его проста, если будет необходимость распишу, но, к сожалению, без костылей не обойтись, так как велика вероятность зависания модема. AT-команды для каждого модема свои, в моем случае команду перезапуска нужно посылать дважды, чтобы модем ребутнулся.
    Код:
    #!/bin/bash
    # выводим название скрипта
    echo autowvdial
    # бесконечный цикл
    while true; do
    # пингуем 2 секунды днс гугла
    if ping -w 2 8.8.8.8
    then
    :
    # если пинга нет
    else
    # убиваем процесс wvdial
    sudo kill -9 $(pidof wvdial)
    # убиваем процесс pppd
    sudo kill -9 $(pidof pppd)
    # удаляем lock-файл модема
    sudo rm -f /var/lock/LCK..ttyUSB0
    # спячка 5 секунд
    sleep 5
    # посылаем модему команду перезапуска 2 раза
    echo -e "at+cfun=1,1\r\n" > /dev/ttyUSB0
    echo -e "at+cfun=1,1\r\n" > /dev/ttyUSB0
    # спячка 20 секунд
    sleep 20
    # запускаем wvdial в новом эмуляторе терминала
    mate-terminal -e "sudo wvdial"
    fi
    # спим 2 минуты и повторяем проверку
    sleep 120
    done

    Ещё один костыль, связанный с плохой связью, teamviewer иногда отказывается коннектиться, пока его не перезапустишь.
    Я перезапускаю скриптом:
    Код:
    #!/bin/bash
    # выводим название скрипта
    echo autoteamviewer
    # бесконечный цикл
    while :; do
    # перезапускаем демона
    sudo service teamviewerd restart
    # спячка полчаса
    sleep 1800
    done

    Тоже самое можно сделать и с помощью cron по расписанию, но я почему то не смог с ним подружиться, помогает GUI gnome-schedule, который можно установить так:
    Код:
    wget https://bugs.launchpad.net/ubuntu/+...s/gnome-schedule_2.3.0-0ubuntu16.04_amd64.deb
    sudo gdebi gnome-schedule_2.3.0-0ubuntu16.04_amd64.deb

    И в том и в другом случае нужен бубен или совет от знающего.
    Устанавливаем ssmtp
    Код:
    sudo apt-get install ssmtp

    Настраиваем /etc/ssmtp/ssmtp.conf
    Код:
    FromLineOverride=YES
    # hushmail выбран не случайно, в отличие от гугла и яндекса не блэклистит IP и не считает тебя спамером,
    # можете нагуглить любой другой сервис или попытаться использовать два вышеуказанных, но гарантий
    # никаких, что всё будет так же просто
    AuthUser=ВАШ_ИМЕЙЛ@hushmail.com
    AuthPass=ВАШ_ПАРОЛЬ_ОТ_ПОЧТЫ
    # адрес и порт гуглите "smtp НАЗВАНИЕ_ПОЧТОВИКА", на официальных сайтах всегда есть эта инфа
    mailhub=smtp.hushmail.com:465
    # если порт smtp вашего почтовика 587, то настройка ниже будет выглядеть так: UseSTARTTLS=Yes
    UseTLS=YES

    Настраиваем /etc/ssmtp/revaliases
    Код:
    root:ВАШ_ИМЕЙЛ@hushmail.com:smtp.hushmail.com:465
    ВАШ_ЮЗЕРНЕЙМ:ВАШ_ИМЕЙЛ@hushmail.com:smtp.hushmail.com:465

    Всё, теперь можно протестировать в консоли отправку письма самому себе:
    Код:
    echo "Привет из консоли" | ssmtp -v ВАШ_ИМЕЙЛ@hushmail.com


    МАЙНЕРЫ:

    Несколько алгоритмов
    Сайт майнера: http://ccminer.org/
    Пример для CUDA 7.5, узнать версию CUDA можно так:
    Код:
    nvcc --version

    Код:
    sudo apt-get install nvidia-cuda-toolkit libcurl4-openssl-dev libssl-dev libjansson-dev automake autotools-dev build-essential gcc-5 g++-5
    git clone https://github.com/tpruvot/ccminer.git
    cd ccminer

    Перед сборкой необходимо в файле Makefile.am раскомментировать нужные строки с указанием архитектуры CUDA и закомментировать ненужные. Какие строчки вам нужны, можно понять из таблицы на вики ccminer https://github.com/tpruvot/ccminer/wiki/Compatibility . Если ваши карты одной архитектуры, то у вас будет раскомментирована одна строка и начинаться она должна с "nvcc_ARCH =", если архитектур несколько, то следующие строки начинаются с "nvcc_ARCH +=". Если у вас CUDA версии ниже 8.0, то не используйте 61-ю архитектуру, вместо неё используйте 50-ю. Например так:
    Код:
    #nvcc_ARCH = -gencode=arch=compute_50,code=\"sm_50,compute_50\"
    nvcc_ARCH = -gencode=arch=compute_52,code=\"sm_52,compute_52\"
    #nvcc_ARCH += -gencode=arch=compute_61,code=\"sm_61,compute_61\"
    #nvcc_ARCH += -gencode=arch=compute_35,code=\"sm_35,compute_35\"
    #nvcc_ARCH += -gencode=arch=compute_30,code=\"sm_30,compute_30\"
    nvcc_ARCH += -gencode=arch=compute_20,code=\"sm_21,compute_20\"

    Собираем.
    Код:
    ./build.sh

    Простейшая строчка запуска майнинга зека на флайпуле, адрес кошелька поменяйте на свой.
    Код:
    cd ~/ccminer
    ./ccminer -a equihash -o stratum+tcp://eu1-zcash.flypool.org:3333 -u t1fs3fVj3j8TBra45YsE5291vbWpXtbgUm9.rig1 -p x
    GitHub: https://github.com/krnlx/ccminer-xevan
    Сборка аналогична ccminer от tpruvot.
    Сайт майнера: http://ccminer.org/
    Код:
    sudo apt-get install automake autoconf pkg-config libcurl4-openssl-dev libjansson-dev libssl-dev libgmp-dev make g++
    git clone https://github.com/tpruvot/cpuminer-multi
    cd cpuminer-multi
    ./build.sh

    Простейшая строчка запуска майнинга монеро на minemonero.pro, адрес кошелька поменяйте на свой.
    Код:
    cd ~/cpuminer-multi
    ./cpuminer -a cryptonight -o stratum+tcp://pool.minemonero.pro:3333 -u 42VGLHBgzhPj2y8HeFKA84T9PV6F7vZHKMgn9gQq9LUKYn6d8Mcasw8AiXwMM32QNSCxUHLLN5oC2hZe3TnfmZ9HGmbcLNm.rig1 -p x

    Cryptonight XMR (Monero)
    GitHub: https://github.com/fireice-uk/xmr-stak-cpu
    Код:
    sudo apt-get install libmicrohttpd-dev libssl-dev cmake build-essential libhwloc-dev
    git clone https://github.com/fireice-uk/xmr-stak-cpu.git
    cd xmr-stak-cpu

    Перед сборкой можно изменить размер комиссии разработчику, по умолчанию 2%
    Код:
    nano donate-level.h

    Собираем.
    Код:
    cmake .
    make install

    Изменяем файл конфигурации.
    Код:
    cd bin
    nano config.txt

    Пример для майнинга на minemonero.pro, кошелёк меняете на свой, "pool_password" в данном случае - это просто имя воркера:
    Код:
    "pool_address" : "pool.minemonero.pro:3333",
    "wallet_address" : "42VGLHBgzhPj2y8HeFKA84T9PV6F7vZHKMgn9gQq9LUKYn6d8Mcasw8AiXwMM32QNSCxUHLLN5oC2hZe3TnfmZ9HGmbcLNm",
    "pool_password" : "rig1",

    Запускаем.
    Код:
    ./xmr-stak-cpu

    Программа сама подскажет какие строчки нужно скопипастить в config.txt вместо:
    Код:
    "cpu_threads_conf" :
    null,

    Добавляем нужные строки и запускаем майнинг.
    Код:
    ./xmr-stak-cpu

    GitHub: https://github.com/fireice-uk/xmr-stak-nvidia
    Пример для CUDA 7.5, узнать версию CUDA можно так:
    Код:
    nvcc --version

    Код:
    sudo apt-get install nvidia-cuda-dev nvidia-cuda-toolkit libmicrohttpd-dev libssl-dev cmake cmake-curses-gui build-essential
    git clone https://github.com/fireice-uk/xmr-stak-nvidia.git
    cd xmr-stak-nvidia

    Перед сборкой можно изменить размер комиссии разработчику, по умолчанию 1%
    Код:
    nano donate-level.h

    Собираем. Значение параметра -DCUDA_ARCH можно взять из таблицы https://github.com/tpruvot/ccminer/wiki/Compatibility . Если у вас CUDA версии ниже 8.0, то не используйте 61-ю архитектуру, вместо неё используйте 50-ю.
    Код:
    cmake . -DCUDA_ARCH=50
    make install

    Изменяем файл конфигурации.
    Код:
    cd bin
    nano config.txt

    Пример для майнинга на minemonero.pro, кошелёк меняете на свой, "pool_password" в данном случае - это просто имя воркера:
    Код:
    "pool_address" : "pool.minemonero.pro:7777",
    "wallet_address" : "42VGLHBgzhPj2y8HeFKA84T9PV6F7vZHKMgn9gQq9LUKYn6d8Mcasw8AiXwMM32QNSCxUHLLN5oC2hZe3TnfmZ9HGmbcLNm",
    "pool_password" : "rig1",

    Запускаем.
    Код:
    ./xmr-stak-nvidia

    Программа сама подскажет какие строчки нужно скопипастить в config.txt вместо:
    Код:
    "gpu_threads_conf" :
    null,

    Добавляем нужные строки и запускаем майнинг.
    Код:
    ./xmr-stak-nvidia

    Для AMD https://github.com/fireice-uk/xmr-stak-amd, судя по всему, собирается по аналогии, проверить не на чем.
    GitHub: https://github.com/xmrMiner/xmrMiner
    Пример для CUDA 7.5, узнать версию CUDA можно так:
    Код:
    nvcc --version

    Код:
    sudo apt-get install nvidia-cuda-dev nvidia-cuda-toolkit libssl-dev cmake cmake-curses-gui libcurl4-gnutls-dev git libjansson-dev
    mkdir -p xmrMinerProject
    cd xmrMinerProject
    git clone https://github.com/xmrMiner/xmrMiner.git
    cd xmrMiner

    Перед сборкой необходимо добавить следующую строку в начало файла CMakeLists.txt
    Код:
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FORCE_INLINES")

    Собираем. Значение параметра -DCUDA_ARCH можно взять из таблицы https://github.com/tpruvot/ccminer/wiki/Compatibility . Если у вас CUDA версии ниже 8.0, то не используйте 61-ю архитектуру, вместо неё используйте 50-ю.
    Код:
    cd ..
    mkdir -p build
    cd build
    cmake -DCUDA_ARCH=50 -DCMAKE_INSTALL_PREFIX=$HOME/xmrMiner ../xmrMiner
    make -j install

    Простейшая строчка запуска майнинга на minemonero.pro, адрес кошелька поменяйте на свой.
    Код:
    ./xmrMiner -o stratum+tcp://pool.minemonero.pro:7777 -u 42VGLHBgzhPj2y8HeFKA84T9PV6F7vZHKMgn9gQq9LUKYn6d8Mcasw8AiXwMM32QNSCxUHLLN5oC2hZe3TnfmZ9HGmbcLNm.rig1 -p x


    1) Решение проблем с Wi-Fi, многие пишут, что не работает, у меня вроде всё из коробки пахало.
    2) Туториал по ssh.
    3) Туториал по обходу провайдерского NATа.
    4) Всё остальное, что имеет отношение к майнингу, с подробным объяснением, что к чему.
     
    Izilda и captain063 нравится это.