Przejdź do głównej zawartości

Jak zmienić Raspberry Pi 4 w węzeł, po prostu flashując kartę MicroSD

klientyeth2węzły
Średnie
EthereumOnArm
r/ethereum(opens in a new tab)
7 maja 2020
7 minuta czytania minute read

TL;DR: Flashuj Raspberry Pi 4, podłącz kabel Ethernet, podłącz dysk SSD i włącz urządzenie, aby zmienić Raspberry Pi 4 w pełne Ethereum 1.0 węzeł lub węzeł Ethereum 2.0 (łańcuch śledzący/ walidator)

Dowiedz się więcej o Ethereum 2.0 (Eth2)

Najpierw trochę tła. Jak wiesz, napotkaliśmy pewne problemy z pamięcią [1] związane z obrazem Raspberry Pi 4 ponieważ Raspbian OS jest nadal 32-bitowy [2] (przynajmniej w przestrzeni użytkownika). Chociaż wolimy pozostać przy oficjalnym systemie operacyjnym, doszliśmy do wniosku, że aby rozwiązać te problemy, musimy przeprowadzić migrację do natywnego 64-bitowego systemu operacyjnego

Poza tym klienty Eth 2.0 nie obsługują 32-bitowych plików binarnych, więc użycie Raspbian wykluczyłoby Raspberry Pi 4 z uruchamiania węzła Eth 2.0 (oraz możliwość stakingu).

Po kilku testach wydajemy teraz 2 różne obrazy oparte na 64-bitowym Ubuntu 20.04 [3]: Edycje Eth 1.0 i Eth 2.0.

Zasadniczo oba są tym samym obrazem i zawierają te same cechy obrazów opartych na Raspbian. Ale są one domyślnie skonfigurowane do uruchamiania oprogramowania Eth 1.0 lub Eth 2.0.

Obrazy wykonują wszystkie niezbędne kroki, od konfiguracji środowiska i formatowania dysku SSD po instalację i uruchomienie oprogramowania Ethereum, a także uruchomienie synchronizacji łańcucha bloków.

Główne funkcje

  • Na podstawie Ubuntu 20.04 64bit
  • Automatyczna partycja i formatowanie dysku USB
  • Dodaje pamięć wymiany (moduł jądra ZRAM + plik wymiany) na podstawie pracy Armbiana [7]
  • Zmienia nazwę hosta na coś w rodzaju „ethnode-e2a3e6fe” w oparciu o hash MAC
  • Uruchamia oprogramowanie jako usługę systemową i rozpoczyna synchronizację Blockchain
  • Zawiera repozytorium APT do instalacji i aktualizacji oprogramowania Ethereum
  • Zawiera panel monitorowania oparty na Grafana / Prometheus

Dołączone oprogramowanie

Oba obrazy zawierają te same pakiety, jedyną różnicą między nimi jest to, że Eth 1.0 domyślnie uruchamia Geth, a Eth 2.0 domyślnie uruchamia łańcuch śledzący Prysm.

Klienty Ethereum 1.0

  • Geth [8]: 1.9.13 (oficjalny plik binarny)
  • Parity [9]: 2.7.2 (kompilacja krzyżowa)
  • Nethermind [10]: 1.8.28 (kompilacja krzyżowa)
  • Hyperledger Besu [11]: 1.4.4 (skompilowane)

Klienty Ethereum 2.0

  • Prysm [12]: 1.0.0-alpha6 (oficjalny plik binarny)
  • Lighthouse [13]: 0.1.1 (kompilacja)

Framework Ethereum

  • Swarm [14]: 0.5.7 (oficjalny plik binarny)
  • Raiden Network [15]: 0.200.0~rc1 (oficjalny plik binarny)
  • IPFS [16]: 0.5.0 (oficjalny plik binarny)
  • Statusd [17]: 0.52.3 (skompilowany)
  • Vipnode [18]: 2.3.3 (oficjalny plik binarny)

Instrukcja instalacji i użytkowania

  • Raspberry 4 (model B) - 4GB
  • Karta MicroSD (16 GB klasy 10 minimum)
  • SSD USB 3.0 (zob. sekcja pamięci)
  • Zasilacz
  • Kabel Ethernet
  • 30303 Przekierowanie portów (Eth 1.0) i 13000 przekierowanie portów (Eth 2.0) [4]
  • Obudowa z radiatorem i wentylatorem (opcjonalna, ale zdecydowanie zalecana)
  • Klawiatura USB, monitor i kabel HDMI (micro-HDMI) (opcjonalnie)

Pamięć

Będziesz potrzebować dysku SSD, aby uruchomić klientów Ethereum (bez dysku SSD nie ma absolutnie żadnej szansy na zsynchronizowanie łańcucha bloków Ethereum). Istnieją dwie opcje:

  • Użyj przenośnego dysku SSD USB, takiego jak przenośny dysk SSD Samsung T5.
  • Użyj etui na zewnętrzny dysk twardy USB 3.0 z dyskiem SSD. W naszym przypadku zastosowaliśmy obudowę dysku twardego Inateck 2.5 FE2011. Upewnij się, że kupujesz obudowę z chipem zgodnym z UAS, w szczególności jedną z nich: JMicron (JMS567 lub JMS578) lub ASMedia (ASM1153E).

W obu przypadkach unikaj uzyskiwania dysków SSD niskiej jakości, ponieważ jest to kluczowy element węzła i może drastycznie wpłynąć na wydajność (i czasy synchronizacji).

Pamiętaj, że musisz podłączyć dysk do portu USB 3.0 (niebieski)

Pobieranie i instalacja obrazu

1. Pobierz obrazy Eth 1.0 lub Eth 2.0

Pobierz obraz Eth 1.0(opens in a new tab)

sha256 7fa9370d13857dd6abcc8fde637c7a9a7e3a66b307d5c28b0c0d29a09c73c55cPobierz obraz Eth2(opens in a new tab)

sha256 74c0c15b708720e5ae5cac324f1afded6316537fb17166109326755232cd316e

2. Wgraj obraz

Włóż kartę microSD do komputera stacjonarnego / laptopa i pobierz plik (na przykład Eth 1.0):

wget https://ethraspbian.com/downloads/ubuntu-20.04-preinstalled-server-arm64+raspi-eth1.img.zip

Uwaga: jeśli nie czujesz się dobrze z wierszem poleceń lub jeśli używasz systemu Windows, możesz użyć Etcher(opens in a new tab)

Otwórz terminal i sprawdź nazwę swojego urządzenia MicroSD, które działa:

sudo fdisk -l

Powinieneś zobaczyć urządzenie o nazwie mmcblk0 lub sdd. Rozpakuj i wgraj obraz:

unzip ubuntu-20.04-preinstalled-server-arm64+raspi-eth1.img.zip
sudo dd bs=1M if=ubuntu-20.04-preinstalled-server-arm64+raspi-eth1.img of=/dev/mmcblk0 && sync

3. Włóż microSD do Raspberry Pi 4. Podłącz kabel Ethernet i podłącz dysk USB SSD (upewnij się, że używasz niebieskiego portu).

4. Włącz urządzenie

System operacyjny Ubuntu uruchomi się za mniej niż minutę, ale trzeba poczekać około 10 minut, aby skrypt mógł wykonać niezbędne zadania, aby zmienić urządzenie w węzeł Ethereum i zrestartuj Raspberry.

W zależności od obrazu uruchomisz:

  • Eth 1.0: Geth jako domyślny klient synchronizujący łańcuch bloków
  • Eth2: Prysm jako domyślny klient synchronizujący łańcuch śledzący (sieć testowa Topaz)

5. Zaloguj się

Możesz zalogować się przez SSH lub za pomocą konsoli (jeśli masz podłączony monitor i klawiaturę)

User: ethereum
Password: ethereum

Zostaniesz poproszony o zmianę hasła przy pierwszym logowaniu, więc będziesz musiał zalogować się dwukrotnie.

6. Otwórz port 30303 dla Getha i 13000, jeśli używasz łańcucha śledzącego Prysm. Jeśli nie wiesz, jak to zrobić, wygoogluj „przekierowanie portów”, a następnie model routera.

7. Uzyskaj dane wyjściowe konsoli

Możesz zobaczyć, co dzieje się w tle, wpisując:

sudo tail -f /var/log/syslog

Gratulacje. Korzystasz teraz z pełnego węzła Ethereum na swoim Raspberry Pi 4.

Synchronizowanie łańcucha bloków

Teraz musisz poczekać na synchronizację łańcucha bloków. W przypadku Eth 1.0 zajmie to kilka dni w zależności od kilku czynników, ale możesz spodziewać się do około 5-7 dni.

Jeśli korzystasz z tesnetu Eth2 Topaz, możesz spodziewać się 1-2 dni czasu synchronizacji łańcucha śledzącego. Pamiętaj, że będziesz musiał ustawić walidator później, aby rozpocząć proces stakingu. Jak uruchomić walidator Eth 2.0

Pulpity kontrolne

W tej pierwszej wersji dołączyliśmy 3 panele monitorowania oparte na Prometheus [5] /Grafana [6] w celu monitorowania danych węzła i klientów (Geth i Besu). Możesz uzyskać dostęp przez przeglądarkę internetową:

URL: http://your_raspberrypi_IP:3000
User: admin
Password: ethereum

Przełączanie klientów

Wszyscy klienci działają jako usługa systemowa. Jest to ważne, ponieważ jeśli pojawi się problem, system automatycznie odrodzi proces.

Łańcuch śledzący Geth i Prysm jest uruchamiany domyślnie (w zależności od tego, co synchronizujesz, Eth 1.0 lub Eth2), więc jeśli chcesz przełączyć się na innych klientów (na przykład z Geth na Nethermind), musisz najpierw zatrzymać i wyłączyć Geth, oraz włącz i uruchom drugiego klienta:

sudo systemctl stop geth && sudo systemctl disable geth

Polecenia włączania i uruchamiania każdego klienta Eth 1.0:

sudo systemctl enable besu && sudo systemctl start besu
sudo systemctl enable nethermind && sudo systemctl start nethermind
sudo systemctl enable parity && sudo systemctl start parity

Eth2:

sudo systemctl stop prysm-beacon && sudo systemctl disable prysm-beacon
sudo systemctl start lighthouse && sudo systemctl enable lighthouse

Zmiana parametrów

Pliki konfiguracyjne klientów znajdują się w katalogu /etc/ethereum/. Możesz edytować te pliki i ponownie uruchomić usługę systemd, aby zmiany zaczęły obowiązywać. Jedynym wyjątkiem jest Nethermind, który dodatkowo posiada plik konfiguracyjny sieci głównej, który znajduje się tutaj:

/etc/nethermind/configs/mainnet.cfg

Dane klientów Blockchain są przechowywane na koncie domowym Ethereum w następujący sposób (zwróć uwagę na kropkę przed nazwą katalogu):

Eth 1.0

/home/ethereum/.geth
/home/ethereum/.parity
/home/ethereum/.besu
/home/ethereum/.nethermind

Eth2

/home/ethereum/.eth2
/home/ethereum/.eth2validators
/home/ethereum/.lighthouse

Nethermind i Hyperledger Besu

Te 2 wspaniałe klienty Eth 1.0 stały się świetną alternatywą dla Geth and Parity. Im większa różnorodność w sieci, tym lepiej, więc możesz spróbować i przyczynić się do poprawy stanu sieci.

Oba wymagają dalszych testów, więc wypróbuj je i zgłoś swoją opinię.

Jak uruchomić walidator Eth 2.0 (staking)

Gdy łańcuch śledzący sieci testowej Topaz zostanie zsynchronizowany, można uruchomić walidator na tym samym urządzeniu. Będziesz musiał postępować według tych etapów uczestnictwa(opens in a new tab).

Po raz pierwszy, musisz utworzyć ręcznie konto, uruchamiając plik binarny „validator” i skonfigurować hasło. Po zakończeniu tego kroku możesz dodać hasło do /etc/ethereum/prysm-validator.conf i uruchomić walidator jako usługę systemową.

Opinie są mile widziane!

Włożyliśmy dużo pracy, próbując skonfigurować Raspberry Pi 4 jako pełny węzeł Ethereum, ponieważ wiemy, że ogromna baza użytkowników tego urządzenia może mieć bardzo pozytywny wpływ na sieć.

Proszę wziąć pod uwagę, że jest to pierwszy obraz oparty na Ubuntu 20.04, więc może być kilka błędów. Jeśli tak, otwórz zgłoszenie na GitHub(opens in a new tab) lub skontaktuj się z nami na Twitter(opens in a new tab).

Odniesienia

  1. geth repeatedly crashes with SIGSEGV(opens in a new tab)
  2. https://github.com/diglos/ethereumonarm(opens in a new tab)
  3. https://ubuntu.com/download/raspberry-pi(opens in a new tab)
  4. https://wikipedia.org/wiki/Port_forwarding(opens in a new tab)
  5. https://prometheus.io(opens in a new tab)
  6. https://grafana.com(opens in a new tab)
  7. https://forum.armbian.com/topic/5565-zram-vs-swap/(opens in a new tab)
  8. https://geth.ethereum.org(opens in a new tab)
  9. https://github.com/openethereum/openethereum(opens in a new tab)
  10. https://nethermind.io(opens in a new tab)
  11. https://www.hyperledger.org/projects/besu(opens in a new tab)
  12. https://github.com/prysmaticlabs/prysm(opens in a new tab)
  13. https://lighthouse.sigmaprime.io(opens in a new tab)
  14. https://ethersphere.github.io/swarm-home(opens in a new tab)
  15. https://raiden.network(opens in a new tab)
  16. https://ipfs.io(opens in a new tab)
  17. https://status.im(opens in a new tab)
  18. https://vipnode.org(opens in a new tab)

Ostatnia edycja: @Beas(opens in a new tab), 31 października 2023

Czy ten samouczek był pomocny?