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

Хотим поблагодарить наших читателей за проявленный интерес к теме майнинга. В предыдущей статье 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. Данный вариант гарантировано запускает скрипты после полной загрузки операционной системы.

Что еще почитать по теме

T-Rex 30 марта 2021

Что такое SMTP-протокол и как он устроен?

SMTP (Simple Mail Transfer Protocol) — протокол передачи почты. Он был представлен еще в 1982 году, но не теряет актуальности до сих пор. В статье разбираемся, какие задачи решает протокол и как он ра…
T-Rex 30 марта 2021
Владимир Туров 1 сентября 2020

Дело совершенно секретного iPod

Это был обычный серый день в конце 2005 года. Я сидел на рабочем месте и писал код для следующей версии iPod. Вдруг без стука ворвался директор ПО для iPod, начальник моего начальника, и закрыл дверь.
Владимир Туров 1 сентября 2020
T-Rex 21 августа 2020

TrendForce: цены на SSD упадут

Эксперты DRAMeXchange предсказывают значительное падение цен на оперативную память и твердотельные накопители в ближайшее время. Причина — сокращение спроса на чипы для NAND и DRAM.
T-Rex 21 августа 2020

Новое в блоге

Михаил Фомин 24 июня 2022

Docker Swarm VS Kubernetes — как бизнес выбирает оркестраторы

Рассказываем, для каких задач бизнесу больше подойдет Docker Swarm, а когда следует выбрать Kubernetes.
Михаил Фомин 24 июня 2022
Ульяна Малышева 30 сентября 2022

«Нулевой» локальный диск. Как мы запустили облако только с сетевыми дисками и приручили Ceph

Чем хороши сетевые диски и почему именно Ceph, рассказал директор по развитию ядра облачной платформы Иван Романько.
Ульяна Малышева 30 сентября 2022
Валентин Тимофеев 30 сентября 2022

Как проходит онбординг сотрудников ИТО? Что нужно, чтобы выйти на смену в дата-центр

Рассказываем, как обучаем новых сотрудников, какие задачи и испытания проходят инженеры прежде, чем выйти на свою первую смену.
Валентин Тимофеев 30 сентября 2022
T-Rex 28 сентября 2022

Книги по SQL: что почитать новичкам и специалистам

Собрали 6 книг, которые помогут на старте изучения SQL и при углублении в тему.
T-Rex 28 сентября 2022