Bitcoin-майнинг на Debian
В этой статье я решил записать свои заметки на тему особенностей настройки системы для генерации биткоинов.
Прежде всего - почему появилась эта статья? В процессе настройки собственного майнера по имеющимся мануалам столкнулся с рядом проблем, но так или иначе они были все решены. Итак, по порядку.
В качестве руководства я использовал эту статью, но в качестве основы хотел использовать 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 # Распаковываем его в /opt sudo tar xvfz AMD-APP-SDK-v2.7-lnx64.tgz -C /opt # Почему-то в AMD SDK 2.4 оно было в комплекте, а вот в 2.7 уже выкинули 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" -->>-- второй и т.п.
Ссылки
- https://bitcointalk.org/index.php?topic=82627.0 - решение проблемы с AMD SDK
- https://github.com/secmff/Diskless-miner/wiki/Overclocking - команды для видеокарты для управления ее параметрами
- http://habrahabr.ru/post/122341/ - просто интересная статья на тему биткоинов и прочих валют