123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288 |
- Este guia presume que estamos usando o Raspian com um Raspberry Pi 3.
- [[!toc levels=6]]
- ---
- # O que é isto?
- ## Raspberry Pi
- [Raspberry Pi](https://www.raspberrypi.org>) é um computador de baixo custo e baixo consumo de energia, simples e eficiente.
- ## cgminer
- [cgminer](http://ck.kolivas.org/apps/cgminer/) é um software de mineração de criptomoedas.
- ## criptomoeda
- [[!wikipedia pt:Criptomoeda desc="Página na Wikipedia"]]
- ## mineração
- [FAQ Bitcoin](https://bitcoin.org/pt_BR/faq#mineracao)
- ---
- # Tutorial
- Considerando que o sistema operacional é o [Raspian](https://www.raspberrypi.org/downloads/raspbian/).
- Não é uma boa prática, mas considerando que o usuário para este guia é **root**.
- Seguem os passos para usar **cgminer** ou **bfgminer**.
- ## Otimizar Raspberry Pi
- ### Instalar screeen, tmux e byobu
- apt-get install byobu
- Uso:
- Selecionar '1' (modo screen):
- byobu-ctrl-a
- Para conectar na sessão 'miner':
- byobu-screen -RD miner
- CTRL+A+D para desconectar (a sessão continua rodando).
- ## Compilar c/bfgminer
- ### Instalar dependências
- apt-get install build-essential autoconf automake libtool pkg-config libcurl4-openssl-dev libudev-dev libncurses5-dev
- Caso se utilize **bfgminer**, também é necessário instalar os seguintes pacotes:
- apt-get install uthash-dev libjansson-dev
- ### Obter código fonte do cgminer
- git clone https://github.com/ckolivas/cgminer.git
- cd cgminer
- No caso do **bfgminer**:
- git clone https://github.com/luke-jr/bfgminer.git
- cd cgminer
- ### Compilar
- Isto é necessário quando se clona do github
- ./autogen.sh
- Esta configuração leva em consideração o processador do Raspberry Pi 3.
- CFLAGS="-O2 -Wall -mcpu=cortex-a53 -mfpu=neon-fp-armv8" ./configure
- make
- ### Arquivo de configuração
- vim ~/.cgminer/cgminer.conf
- #### Exemplo de configuração
- {
- "disable-rejecting" : true,
- "failover-only" : true,
- "lowmem" : true,
- "net-delay" : true,
- "no-submit-stale" : true,
- "per-device-stats" : true,
- "verbose" : true,
- "widescreen" : true,
- "worktime" : true,
- "scrypt" : true,
- "pools" : [
- {
- "url" : "stratum+tcp://us.litecoinpool.org:3333",
- "user" : "desci.iikb",
- "pass" : "x"
- },
- {
- "url" : "stratum+tcp://us2.litecoinpool.org:3333",
- "user" : "desci.iikb",
- "pass" : "x"
- }
- ]
- }
- ## Instalar no sistema
- make install
- ### Systemd
- #### Criar arquivo de serviço de sistema
- vim /lib/systemd/system/cgminer.service
- ##### Conteúdo do arquivo
- [Unit]
- Description=cgminer
- After=network.target nss-lookup.target
-
- [Service]
- Type=forking
- ExecStart=/usr/bin/screen -dmS miner /usr/local/bin/cgminer -c /root/.cgminer/cgminer.conf
-
- [Install]
- WantedBy=multi-user.target
- #### Adicionar na inicialização
- systemctl enable cgminer.service
- #### Iniciando
- systemctl start cgminer.service
- ### Crontab
- crontab -e
- #### Adicionar linha
- @hourly /bin/bash /bin/systemctl is-active cgminer.service || /bin/systemctl start cgminer.service
- ---
- # Experiências e casos reais
- ## Script de verificação dos arquivos
- Normalmente [[eu|desci]] mudo o arquivo de configuração do cgminer frequentemente, ou porque tenho que alterar configuração de mineradoras, ou mais frequentemente, porque tenho que mudar a configuração de *pools*.
- Nestas circunstâncias, [[eu|desci]] costumo ter vários arquivos de configuração, sendo que para não alterar os arquivos do sistema, faço um link simbólico para o arquivo de configuração e reinicio o serviço, por exemplo:
- rm /root/.cgminer/cgminer.conf; ln -s /root/.cgminer/litecoin.conf /root/.cgminer/cgminer.conf
- systemctl -l restart cgminer.service
- Isto possibilita alterar a configuração do cgminer sem mexer em todo o sistema. No entanto, o tutorial acima não prevê este uso, e então é necessário alterar pelo menos uma vez o script do systemd para usar um script em bash (ou qualquer outra lingugagem) para alterar algumas coisas.
- ### Exemplo de script em bash
- mkdir /root/bin
- vim /root/bin/cgminer-start.bash
- #### Conteúdo do arquivo
- Disponível em <https://notabug.org/desci/scripts/src/master/raspian-miner.bash>
- #!/bin/bash
- ## Verifica arquivos de configuração antes de iniciar cgminer no raspberry pi
-
- ##
- ## Variáveis que podem ser alteradas
- ##
- MINER_BIN="cgminer"
- MINER_PATH="/usr/local/bin/${MINER_BIN}"
- CONFIG_DIR="/root/.${MINER_BIN}"
- CONFIG_FILE="${CONFIG_DIR}/${MINER_BIN}.conf"
- CONFIG_DEFAULT="${CONFIG_DIR}/default.conf"
-
- ##
- ## Provavelmente não tem nada pra mudar daqui pra frente
- ##
- CONFIG_FIND="$(find ${CONFIG_FILE} -type l -print0)"
- CONFIG_SUCH="$(/bin/echo -n ${CONFIG_FIND} | /bin/grep -e 'No such file or directory')"
- CONFIG_BROKEN="$(/bin/echo -n ${CONFIG_FIND} | xargs -r0 file | /bin/grep -e 'broken symbolic link')"
-
- ## Este teste é verdadeiro se o arquivo EXISTE
- if [ "${CONFIG_SUCH}" == "" ]
- then
- ## Este teste é verdadeiro se o link simbólico está quebrado
- if [ "${CONFIG_BROKEN}" != "" ]
- then
- /bin/rm ${CONFIG_FILE}
- /bin/ln -s "${CONFIG_DEFAULT}" "${CONFIG}"
- fi
- /usr/bin/screen -dmS "${MINER_BIN}" "${MINER_PATH}" -c "${CONFIG_FILE}"
- else
- if [ -f "${CONFIG_DEFAULT}" ]
- then
- /bin/ln -s "${CONFIG_DEFAULT}" "${CONFIG}"
- else
- /bin/echo "Nenhum arquivo de configuração encontrado. Verifique a existência dos mesmos."
- /bin/echo "O diretório ${CONFIG_DIR} deveria existir, com pelo menos o arquivo ${CONFIG_DEFAULT}."
- fi
- fi
- ### Corrigir permissões do arquivo
- chmod ug+x /root/bin/cgminer-start.bash
- ### Alterar ExecStart do serviço do systemd
- ExecStart=/root/bin/cgminer-start.bash
- ### Recarregar o systemd
- systemctl daemon-reload
- ### Recarregar o serviço
- systemctl -l restart cgminer.service
- ---
- ## Gridseeds
- Como [[eu|desci]] minero com ASICs Scrypt, então tenho as seguintes diferenças na hora de compilar o cgminer e na hora de configurar o mesmo:
- ### Compilar cgminer com suporte a gridseed e scrypt
- #### Repositório alternativo
- cgminer não tem mais suporte a scrypt, então eu uso o seguinte repositório: <https://githutb.com/dmaxl/cgminer>
- #### Configuração do make
- Antes de compilar o cgminer:
- CFLAGS="-O2 -Wall -mcpu=cortex-a53 -mfpu=neon-fp-armv8" ./configure --enable-gridseed --enable-scrypt
- O bfgminer:
- CFLAGS="-O2 -Wall -mcpu=cortex-a53 -mfpu=neon-fp-armv8" ./configure --enable-gridseed --enable-scrypt --disable-all-drivers --disable-sha256d
- #### Arquivo de configuração do c/bfgminer
- Adicionar nas configurações em json:
- "scrypt" : true,
- "gridseed-options" : "freq=850,led_off=1",
- ### Minerar sem a conta root
- #### Criar usuário com acesso a dispositivos
- # adduser miner
- # usermod -G plugdev -a miner
- #### Adicionar mineradora nas regras udev
- Criar arquivo `/etc/udev/rules.d/10-gridseed.rules` com o seguinte conteúdo:
- ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", SUBSYSTEMS=="usb", ACTION=="add", MODE="0666", GROUP="plugdev"
- #### Alterar serviço systemd
- Adicionar na seção `[Service]`:
- User=miner
- #### Recarregar systemd
- # systemctl daemon-reload
- # systemctl restart cgminer.service
- [[!tag raspberry "raspberry pi" mineração cgminer bitcoin tutorial]]
- [[!meta title="Minerar criptomoeda com raspberry pi"]]
|