Как майнить криптовалюты в операционной системе Linux

Начинаем майнить в Linux

Илья Гайворонский
Илья Гайворонский Специалист техподдержки
16 августа 2018

Хотим поблагодарить наших читателей за проявленный интерес к теме майнинга. В предыдущей статье Altcoin: просто взять и намайнить мы начали раскрывать потенциал наших услуг в сфере майнинга и рассматривали один из самых простых способов настройки платформы, а именно с использованием операционной системы Windows. В этой статье продолжим раскрывать тайны и тонкости настройки, но уже на […]

Изображение записи

Хотим поблагодарить наших читателей за проявленный интерес к теме майнинга. В предыдущей статье Altcoin: просто взять и намайнить мы начали раскрывать потенциал наших услуг в сфере майнинга и рассматривали один из самых простых способов настройки платформы, а именно с использованием операционной системы Windows. В этой статье продолжим раскрывать тайны и тонкости настройки, но уже на базе Linux.

Сейчас существует большое количество готовых сборок Linux, как правило, на базе Ubuntu, с достаточно простой установкой и управлением. Самостоятельными дистрибутивами назвать их сложно, хоть они и имеют собственный дизайн и команду разработчиков. Собой они представляют обычную Ubuntu 16.04 с установленной графической оболочкой, как правило OpenBox или LXDE, набором драйверов и ассортимента программ-майнеров. Некоторые из них имеют собственные централизованные панели управления «шахтой». Приведем несколько самых известных и распространенных:

  1. ethOS — платный дистрибутив LiveCD, который можно развернуть на USB-флешку или диск. Стоимость одной лицензии $39. Имеется приложение для мониторинга в Google Play.
  2. HiveOS — сборка на базе Ubuntu, которую можно отнести к shareware — условно-бесплатное ПО, потому что предоставляет бесплатный мониторинг и управление только трех ригов. Все последующие по $5 за штуку.
  3. SMOS — также платная сборка. На момент написания статьи проводилась акция по $2 за rig. Имеет несколько версий, в зависимости от серии и поколения используемых видеокарт.
  4. nvOC — Ubuntu с установленными драйверами Nvidia, необходимыми настройками и набором майнеров. Достаточно отредактировать единый конфигурационный файл, указав номер кошелька и пул, и готово.
  5. rxOC — аналогичный образ, но уже для карт AMD.

Каждая из указанных сборок имеет как свои плюсы, так и минусы. Как друг относительно друга, так и общие. С точки зрения безопасности они все имеют один, как кажется, большой минус. Они все разработаны кем-то и пользователь, по сути, не имеет полного управления системой из коробки. В принципе, после разворачивания того или иного образа системы можно пройтись по ней с целью поиска заданий в планировщике, открытых портов в фаерволе, подозрительных скриптов и многого другого, но на это может уйти куда больше времени, чем настроить все самостоятельно, чем мы и займемся.

Что имеем и что потребуется добавить

Каждый использует удобную для него версию дистрибутива, мы же все-таки воспользуемся самой распространенной Ubuntu 16.04, которую можно установить автоматикой. Система устанавливается с минимально необходимым для работы сервера набором программного обеспечения.

Для удобства в работе и настройке:

добавляем дополнительного пользователя и выдаем ему права sudo:

adduser miner

включаем его в группу sudo:

usermod -a -G sudo miner

Установка графической среды (если необходимо)

Для удобства использования можно установить любую среду рабочего стола.

Стандартная среда устанавливается командой:

sudo apt-get install ubuntu-desktop 

Установка альтернативной среды:

sudo apt-get install lxde

После установки окружения необходимо перезагрузить сервер.

Установка драйверов

Нам потребуются проприетарные драйверы, т.к. только они смогут обеспечить необходимую производительность, функционал и стабильность. В свободных драйверах на данный момент отсутствует полноценная поддержка OpenCL и CUDA, в связи с чем потребуются именно они. Также управление частотами памяти и графического ядра, и скоростью оборотов системы охлаждения доступны только в проприетарных драйверах. Имеются два способа установки — рассмотрим детально оба из них.

Вариант №1. С сайта NVidia

1. Скачиваем драйверы с официального сайта. При выборе операционной системы указываем Linux x64. В перечне также присутствуют версии пакетов в формате .deb, но нас интересует универсальный в формате run:

wget http://ru.download.nvidia.com/XFree86/Linux-x86_64/390.48/NVIDIA-Linux-x86_64-390.48.run

2. Делаем его исполняемым:

chmod +x NVIDIA-Linux-x86_64-390.48.run

3. В ходе установки система потребует отключить дисплейный менеджер, что мы сделаем заранее. Сделать это можно так:

service lightdm stop

Для остановки службы lightdm.service система попросит авторизоваться и ввести пароль текущего пользователя.

Установка проприетарных драйверов, скачанных с сайта производителя, выглядит как сборка их из исходников, для чего необходимо наличие в системе пакетов make и gcc, которые отсутствуют в стандартном наборе пакетов автоматической установки операционной системы.

4. Устанавливаем недостающие пакеты:

sudo apt-get install make gcc

5. Запускаем установку драйверов:

sudo ./NVIDIA-Linux-x86_64-390.48.run

Вариант №2. Из репозитория xorg-edgers

Репозиторий xorg-edgers содержит последние стабильные версии драйверов NVidia. Его и будем использовать для установки.

1. Добавляем xorg-edgers в систему:

sudo add-apt-repository ppa:graphics-drivers/ppa 

2. Выполняем обновление репозиториев:

sudo apt-get update 

На момент написания статьи последней версией драйверов является 390.48.

3. Устанавливаем драйверы:

sudo apt install nvidia-driver-390 nvidia-settings 

4. Создаем xorg.conf:

sudo nvidia-xconfig 

5. Перезагружаем сервер:

sudo shutdown -r now 

Альтернативный способ перезагрузки:

reboot 

Настройка разгона карт

В Linux нет программ подобных MSI Afterburner, в которых достаточно просто и удобно проводить разгон видеокарт путем перемещения ползунка по шкале. Сейчас многие, вероятно, скажут, что Linux это сложно и для майнинга не подходит, и с одной стороны, будут правы.

Если вас бросает в дрожь от рисованных пингвинов и слов «терминал» или «консоль», страшитесь SSH и apt-get, если вы не любите проводить много времени за клавиатурой, то для ускорения настройки рига лучше использовать Windows, но и присмотреться к данной статье. Не такие и пугающие эти нелетающие компьютерные птицы — достаточно милые и дружелюбные. Далее мы рассмотрим, как же выполнить тонкую настройку видеокарты для достижения хорошей скорости добычи.

Разгон будет осуществляться через драйверы путем изменения необходимых значений рабочих частот и скорости оборотов вентиляторов системы охлаждения. Изначально, изменение всех этих параметров заблокировано. Для разблокировки необходимо выполнить команды, которые откроют нам доступ к управлению картами (кулеры, частоты).

1. Очищаем текущую конфигурацию и включаем видеоядра:

sudo nvidia-xconfig -a --cool-bits=31 --allow-empty-initial-configuration --enable-all-gpus

2. Перезагружаемся:

sudo shutdown -r now

Далее необходимо внести изменения в конфигурационный файл X-сервера.

3. Открываем на редактирование /etc/X11/xorg.conf:

sudo nano /etc/X11/xorg.conf

4. Добавляем строку в блок Section «Screen» (после Option «Coolbits» «31»):

Option "RegistryDwords" "PerfLevelSrc=0x2222"

Секция примет следующий вид:

Section "Screen"  Identifier     "Screen0"  Device         "Device0"  Monitor        "Monitor0"  DefaultDepth    24  Option         "AllowEmptyInitialConfiguration" "True"  Option         "Coolbits" "31"  Option         "RegistryDwords" "PerfLevelSrc=0x2222"  SubSection     "Display"    Depth       24  EndSubSection EndSection

Это позволит переключить видеокарты в режим максимальной производительности.

5. Cоздаем файл скрипта, который будет выполнять изменение частот памяти и графического ядра, устанавливать ручной режим управления системой охлаждения и указывать скорость оборотов вентиляторов видеокарт:

sudo nano имя_файла.sh

6. Вносим содержание скрипта:

#!/bin/sh # Устанавливает значение смещения частоты памяти. # В Linux необходимо указывать значение в 2 раза большее # нежели в Windows MSI Afterburner. nvidia-settings -a '[gpu:0]/GPUMemoryTransferRateOffset[3]=x'; nvidia-settings -a '[gpu:1]/GPUMemoryTransferRateOffset[3]=x'; nvidia-settings -a '[gpu:2]/GPUMemoryTransferRateOffset[3]=x'; nvidia-settings -a '[gpu:3]/GPUMemoryTransferRateOffset[3]=x'; # Устанавливает значение смещения частоты ядра nvidia-settings -a '[gpu:0]/GPUGraphicsClockOffset[3]=x' nvidia-settings -a '[gpu:1]/GPUGraphicsClockOffset[3]=x' nvidia-settings -a '[gpu:2]/GPUGraphicsClockOffset[3]=x' nvidia-settings -a '[gpu:3]/GPUGraphicsClockOffset[3]=x' # Включение ручного управления скоростью оборотов вентиляторов nvidia-settings -a '[gpu:0]/GPUFanControlState=1'; nvidia-settings -a '[gpu:1]/GPUFanControlState=1'; nvidia-settings -a '[gpu:2]/GPUFanControlState=1'; nvidia-settings -a '[gpu:3]/GPUFanControlState=1'; # Ручная установка скорости оборотов вентиляторов в % nvidia-settings -a '[fan:0]/GPUTargetFanSpeed=x'; nvidia-settings -a '[fan:1]/GPUTargetFanSpeed=x'; nvidia-settings -a '[fan:2]/GPUTargetFanSpeed=x'; nvidia-settings -a '[fan:3]/GPUTargetFanSpeed=x';

Вместо «x» следует указать необходимые значения разгона и скорости оборотов вентиляторов.

7. Делаем скрипт исполняемым:

chmod +x имя_файла

Скрипт создавался для фермы из 4 карт. Для большего количества карт необходимо добавить соответствующее количество строк в коде. Также стоит отметить, что корректно скрипт отработает только при выполнении его из локальной ОС, т.е. при подключении по SSH — нет.

Установка майнера

Для добычи воспользуемся одной из немногочисленных утилит для добычи монет на алгоритме Ethash под названием ethminer. Скачать ее проще всего будет с GitHub:

1. Скачиваем архив:

wget https://github.com/ethereum-mining/ethminer/releases/download/v0.15.0rc2/ethminer-0.15.0rc2-Linux.tar.gz

2. Распаковываем:

tar xvpzf ethminer-0.15.0rc2-Linux.tar.gz

3. Копируем полученный файл в /usr/bin для дальнейшей простоты в использовании, т.к. он будет считаться установленной программой:

cp bin/ethminer /usr/bin

4. Создаем скрипт с именем eth.sh, который будет выполнять запуск майнера в утилите screen:

sudo nano eth.sh

5. Вносим строки:

#!/bin/sh screen -A -m -d -S Miner ethminer -G stratum+tcp://номер_кошелька.имя_машины@адрес_пула:порт_подключения

6. Coхраняем файл сочетанием клавиш CTRL + W и отвечаем «Y». При необходимости можно использовать различные варианты подключения, примеры конфигураций которых можно найти в хэлпе ethminer при помощи флага -h.

Кто-то, вероятно, обратил внимание, что в предыдущей статье указывалось, что карты GTX 1080 не сильно подходят для работы с алгоритмом DaggerHashimoto (Ethash) и их производительность составляла всего 25,5 — 26 Mh/s, в то время как можно достичь 35,65 Mh/s с помощью утилиты OhGodAnETHlargementPill. Чтобы ее установить, необходимо проделать следующие шаги:

1. Скачиваем утилиту с GitHub:

wget https://github.com/OhGodACompany/OhGodAnETHlargementPill/raw/master/OhGodAnETHlargementPill-r2

2. Делаем скачанный файл исполняемым:

chmod +x OhGodAnETHlargementPill-r2

3. Настраиваем автозапуск:

Данную утилиту можно размещать на запуск через rc.local:

sudo nano /etc/rc.local

4. Добавляем следующую строку перед exit 0:

/usr/bin/screen -A -m -d -S Tabletka  /путь_к_файлу

Успешный запуск можно проконтролировать через screen:

screen -x Tabletka.

Итого

Необходимое программное обеспечение и его настройка произведены. Можно добавить все созданные нами скрипты разгона и запуска майнера в автозагрузку, что существенно облегчит эксплуатацию рига. Также можно установить Teamviewer и осуществлять мониторинг и управление удаленно. Как вариант, можно настроить запуск скриптов в screen и осуществлять контроль по SSH. В данном вопросе каждый волен использовать привычный инструмент.

P.S. А = автоматизация

Мы рекомендуем самый простой способ — это воспользоваться стандартным приложением автозагрузки. В LXDE это «Сеансы и запуск».

  1. В окне приложения проходим на вкладку «Автозапуск».
  2. Нажимаем «Добавить».
  3. В появившемся окне указываем имя приложения, описание (при необходимости) и указываем расположение файла скрипта.
  4. Сохраняем новую запись.

Через консоль утилита вызывается командой xfce4-session-settings. Данный вариант гарантировано запускает скрипты после полной загрузки операционной системы.