Bitcoin-майнинг на Debian

Материал из Linux Wiki
Перейти к навигацииПерейти к поиску

В этой статье я решил записать свои заметки на тему особенностей настройки системы для генерации биткоинов.

ToDo: Привести последовательность команд к человеческому виду - вспомнить, что на самом деле я там делал, чтобы оно все работало :) и убрать лишнее, настройку программы-майнера расписать подробнее

Прежде всего - почему появилась эта статья? В процессе настройки собственного майнера по имеющимся мануалам столкнулся с рядом проблем, но так или иначе они были все решены. Итак, по порядку.

В качестве руководства я использовал эту статью, но в качестве основы хотел использовать Debian Linux. Первый пункт был исключен, архитектура использовалась x86_64, а версия SDK - 2.4.

Не буду подробно описывать все метания между различными конфигурациями дистрибутивов и версий драйверов, опишу лишь ключевые моменты:

  • Перепробованы были Debian Squeeze, Ubuntu 12.04, Debian Wheezy (на момент написания - тестинг)
  • В Ubuntu пытался использовать штатный драйвер, доступный через менеджер драйверов, но он так и не захотел нормально работать.
  • В Debian Squeeze был старый драйвер, который не поддерживал мои карты. Попытка поставить новый драйвер с сайта успеха не имела.
  • В Debian Wheezy был актуальный, но бажный драйвер, с которым иксы сегфолтились.
  • По описанному руководству в любом из опробованных дистрибутивов (где удавалось все же запустить нормально fglrx) попытка майнинга на видеокарте заканчивалась вылетом майнера с segmentation fault; при этом на CPU майнинг работал.

По последнему пункту после недолгого поиска в гугле выяснилось, что такое происходит на выбранной версии SDK и как вариант решения предлагалось использовать самую последнюю версию - 2.7.

В качестве дистрибутива остановился на Debian Squeeze; актуальный драйвер был в Experimental и Backports. Из первого драйвер отказался ставиться по зависимостям, а вот из бэкпортов он был успешно установлен, после чего в систему были добавлены все необходимые компоненты. В качестве сухого остатка в упомянутой выше статье остаются такие команды:

# Ставим видеодрайвер из бэкпортов (не забыв предварительно добавить строчку с нужным репозиторием в sources.list)
sudo apt-get install -t squeeze-backports fglrx-driver
# Ставим нужные зависимости для сборки компонентов
sudo apt-get install vim openssh-server g++ libboost-all-dev python-numpy screen
# 
wget http://download2-developer.amd.com/amd/Stream20GA/icd-registration.tgz
# Может тут можно было использовать и дистрибутивный, но мне на тот момент уже надоело перебирать все варианты, поэтому просто сделал по мануалу  (TODO: надо ли для cgminer'a?)
wget http://pypi.python.org/packages/source/p/pyopencl/pyopencl-0.92.tar.gz
# Тот самый SDK, из-за которого было потрачено столько часов...
wget http://developer.amd.com/Downloads/AMD-APP-SDK-v2.7-lnx64.tgz
# Распаковываем SDK, после чего ставим его идущими в комплекте скриптами (команду не помню :) ) в /opt/AMDAPP/
sudo tar xvfz AMD-APP-SDK-v2.7-RC-lnx64.tgz
# 
sudo tar xvfz icd-registration.tgz -C /
# Ставим pyopencl (TODO: надо ли для cgminer'a?)
sudo tar zxfv pyopencl-0.92.tar.gz -C /opt
# Качаем и ставим python-jsonrpc  (TODO: надо ли для cgminer'a?)
wget https://eclipsemc.com/files/python-jsonrpc.tar.gz
sudo tar xvfz python-jsonrpc.tar.gz -C /opt

# Добавляем указание дисплея, чтобы запускаемый потом из консоли майнер знал, где ему искать карты.
echo export DISPLAY=:0 >> ~/.bashrc

# Собираем pyopencl (TODO: надо ли для cgminer'a?)
cd /opt/pyopencl-0.92
sudo sh -c 'echo "/opt/AMDAPP/lib/x86_64/" >> /etc/ld.so.conf.d/local.conf'
./configure.py --cl-inc-dir=/opt/AMDAPP/include/ --cl-lib-dir=/opt/AMDAPP/lib/x86_64/
sudo ldconfig
source ~/.bashrc
make -j3
sudo make install
# Собираем python-jsonrpc
cd ../python-jsonrpc
sudo python setup.py install

# Конфигурим иксы, чтобы использовали все видеокарты.
sudo aticonfig --initial -f --adapter=all

git-core, subversion и майнеры, предложенные в статье, не ставим - есть более универсальный cgminer от анестезиолога :), который позволяет из одного интерфейса мониторить и управлять всеми картами, делать их разгон и т.п. Собрать бинарник лучше на сторонней системе, чтобы не тащить лишние зависимости. При запуске будет ругаться на пару-тройку библиотек - их доставить руками.

Для ручного управления частотами и вентилятором на видеокарте, а также для мониторинга ее параметров есть несколько полезных команд:

  • aticonfig --od-enable включает возможности оверклокинга
  • aticonfig --odgt --adapter=all показывает температуру
  • aticonfig --odgc --adapter=all показывает тактовые частоты.
  • aticonfig --pplib-cmd "set fanspeed 0 100" задает скорость вращения кулера первой видеокарты
    • DISPLAY=:0.1 aticonfig --pplib-cmd "set fanspeed 0 100" -->>-- второй и т.п.

Ссылки