NetBSD na armových krabičkách: jak si vede Raspberry, Banana, Pine a Odroid

11. 5. 2021
Doba čtení: 7 minut

Sdílet

 Autor: Petr Topiarz
NetBSD používám už od verze 3.1 téměř ke všem představitelným účelům. Po konci firmy Soekris jsem hledal jiné malé šikovné krabičky na routing a monitoring. Dal jsem tedy šanci armovým strojům.

Co jsem přesně zkoumal

Tento článek by měl posloužit těm, kdo uvažují o nasazení armových jednodeskových počítačů a ušetřit jejich čas. Zvláště pak, pokud uvažují o nějakém tom BSD. Zajímaly mne hlavně dvě vlastnosti:

  • Dá se použít jako router?
  • Dá se použít jako NAS?

Předem se omlouvám těm, kdo armové destičky používají k rozsvěcování různých světýlek a programují piny. To jsem netestoval, protože to není předmětem mého zájmu.

Zkoušel jsem nejen nasazení NetBSD, ale také Debianu, Ubuntu a OpenBSD, i o tom padne zmínka.

Jak je na tom NetBSD s architekturou ARM

NetBSD je známé podporou lecjakých architektur, i velmi obskurních. Poměrně brzy začalo podporovat 32bitový ARM, od verze 9 už podporuje i 64bitovou architekturu a multiprocessing. Nicméně počet podporovaných zařízení je oproti Linuxu nižší. Obecný seznam podporovaných zařízení a chipsetů je na stránkách NetBSD.

Pokud se chcete přesvědčit, zda by to na vašem oblíbeném kousku fungovalo, výrazně doporučuji stránky Invisible.ca/arm/, kde Jared McNeill, jeden z důležitých vývojářů NetBSD, pravidelně aktualizuje připravený obraz systému. Netřeba doinstalovávat žádný firmware, jsou prostě připravené a jen je pomocí dd nahrajete na SD kartu.

NetBSD specifika při instalaci

Většina obrazů se vám vejde na 1GB disk, ovšem lepší je mít větší, což dnes není žádný problém. Systém po naběhnutí nakoukne do /etc/rc.conf a podívá se na několik direktiv. Následně využije celý disk, kam roztáhne label a potom zvětší root system a restartuje se.

To je sice milá automatika, ale nemusí každému vyhovovat, protože disk můžete chtít rozdělit na rozumné oddíly. Není tak od věci vybrané direktivy před prvním startem zakomentovat a upravit si disk ručně. K tomu je třeba si SD disk připojit na jiném počítači, nejlépe s NetBSD.

Asi netřeba obšírně vysvětlovat, co dělají, protože jsou to nomen-omen.

resize_gpt=YES
resize_root=YES
resize_root_flags="-p"
resize_root_postcmd="/sbin/reboot -n"

Pokud se do toho budete pouštět také, může vám tato informace ušetřit čas.

Raspberry Pi: klasika klasik

Za babku jsem koupil na eBay počítač Raspberry Pi 2, protože jsem se dočetl, že RPi 3 hodně topí a výkon pro mně není zásadní. Musím říci, že už NetBSD 8.x fungovalo dobře, ale NetBSD 9.x dokonce rozsvěcuje správně kontrolky. Asi nemusím tuto krabičku představovat, má pár USB a jednu síťovou kartu, žádný přímý výstup na konektor pro disk, takže vlastně nesplňovala tahle krabička nic z mých dvou priorit, ale otestovat jsem ji chtěl.

Grafika fungovala, stejně jako všechny přítomné periferie. Pro začátek jsem do USB zapíchl 100MB/s síťovou kartu a nechal jsem ji běžet ve funkci routeru, protože do internetu stejně nemám rychlejší linku. Byl jsem překvapen. Očekával jsem nějaké výpadky, kvůli ovladači USB pro síťovou kartu, ale kupodivu ani po roce to nehodilo ani jednu chybu.


Autor: Petr Topiarz

Raspberry Pi s USB síťovkou

Naopak, při testu rychlosti jsem dosáhl o malinko lepšího výsledku než se starým Soekrisem, který tam byl původně. Evidentně dokázal Raspberry lépe předávat ip balíčky, nejspíše díky celkově vyššímu výkonu hardware. Připojování disku přes přídavné moduly jsem nezkoušel, ale obecně řečeno jsem byl mile překvapen.

Raspberry s NetBSD je svižné, rychlé a vůbec nemá výpadky ani žádné jiné problémy. U Raspberry Pi 3 je všude popisováno, že funguje stejně. Raspberry Pi 4 ovšem má zřejmě nějaké větší změny, protože zatím oficiálně podporováno není.

PINE64: miláček open-source světa

Pine64 jsem si koupil ze zvědavosti přímo od výrobce, protože se mi líbila ta open-source nálada okolo projektu. Dalším plusem bylo, že je ten chipset i přímo celé výrobky, jako Pinebook, podporován vývojáři z NetBSD. Pine64 má vlastně podobnou výbavu, jako Raspberry Pi.

Taktéž jsem byl příjemně překvapen, že vše fungovalo rovnou po instalaci. Grafická karta krásně vykreslovala a všechny periferie fungovaly. Vyzkoušel jsem tentokrát obě varianty mého výzkumu. Jako router s externí USB kartou – osvědčilo se, žádné výpadky, luxusní provoz.

Nakonec jsem se rozhodl, že zapojím 2TB disk a udělám z toho domácí cloud. Naformátoval jsem disk pomocí ZFS a nainstaloval OwnCloud. Vše funguje. Asi se zeptáte, jak jsem připojil disk. No, nejdřív jsem počítal rychlost. USB2 v posledním verzi poskytuje maximální teoretickou přenosovou rychlost 480 Mb/s. Moje připojení k internetu má až 100Mb/s, reálně spíše 50Mb/s. Takže pokud dobře počítám, rychlost USB určitě nebude tím nejpomalejším elementem na cestě od uživatele v internetu ke cloudu.


Autor: Petr Topiarz

Pine64 s diskem

Nyní ale přichází jiný problém. Externí disk má větší spotřebu energie, než je USB na desce schopno poskytnout. Po nějakém tom googlení jsem našel vtipný návod, kde pisatel poradil užití USB kabelu se sériovou rozdvojkou, kde jeden konec zastrčíte do nabíječky, druhý do disku a třetí do Pine64. Světe div se, funguje to.

Abych dosáhl určité elegance, koupil jsem nabíječku se dvěma výstupy (každý 2,5 A) a zapojuji tedy desku i disk do jednoho zdroje. Opět mohu konstatovat, že jsem neobjevil žádné problémy – ani při výpadku energie a znovunačtení, ani při dlouhodobém provozu. Navíc se mi povedlo upravit originální krabičku tím, že jsem ji prořízl a dodělal úchyty pro disk. Máte dojem, že to je bastlení? Ano, je to nádherné bastlení, jako za starých časů…

Banana Pi: opravdový router

Já mám vlastně hodně věcí na Číně rád. Čínské jídlo, čínskou filosofii i čínské kung fu. NetBSD ale čínské banány rádo nemá. Celé to začalo mým požadavkem, aby destička měla několik ethernetových portů. Banana Pi skutečně poskytuje vlastní routery (BPI-R2, BPI-R64) bez software, kam si můžete nahrát, co chcete.

Zároveň poskytuje, podobně jako ostatní výrobci destiček, také linuxovou distribuci upravenou, aby dobře běžela. Já jsem chtěl ale použít NetBSD a NPF. A tehdy jsem narazil. BPI-R64 má čipset, který vůbec podporován není, takže jsem nepořídil ani s obrazem GENERIC, ani s žádným jiným.


Autor: Petr Topiarz

Banana Pi ve dvou různých verzích

Lepších výsledků jsem dosáhl se starším kouskem, routerem Banana Pi-R2, který jsem koupil z jakéhosi výprodeje na eBay, jelikož daný chipset byl na seznamu podporovaných zařízení. Systém naběhl, ale nezdálo se, že si by řekl o adresu. Trochu jsem prozkoumal viditelná síťová zařízení a zjistil jsem, že místo skupiny ethernetových portů vidí jen jeden z nich – ten třetí. Na něm rozezná, zda je zapojen kabel, ale nedokáže si říci správně o adresu z DHCP. To vnímám u routeru jako dost podstatnou závadu. Zkusil jsem jak obraz stable, tak current. Bohužel, stejný výsledek. Snad časem…

Jelikož PF od OpenBSD považuji také za skvělý firewall, řekl jsem si, že bych místo NetBSD mohl zkusit na tomto hardware OpenBSD. Kdesi na netu jsem dohledal, že OpenBSD s tímto čipsetem kamarádí a začal jsem se pídit po tom, jak a odkud nainstalovat armové OpenBSD.

Podpora architektury ARM v OpenBSD je poměrně mizivá. Grafika nemá podporu vůbec, obrazy nejsou připravené, potřebujete USB-sériový kabel, ale to ještě určitý speciální druh, pomocí kterého si můžete připojit výstup. Po třech hodinách neúspěšných pokusů jsem to vzdal a zasunul OpenBSD ve své paměti do složky „pro ARM nepoužitelné“.

Odroid: skutečný NAS

Když jsem spatřil HC1 a HC2 na snímku na internetu, zajásal jsem. Hned jsem objednal oba. Jedná se vlastně o totožný hardware, ovšem s tím rozdílem, že HC1 je pro 2,5" disk, kdežto HC2 pro 3,5" disk. Kromě toho prodává Odroid i krabičku se dvěma zásuvkami na disk – úprava pro RAID, ale ta neměla zmíněnou podporu na NetBSD stránkách.

Vzal jsem to popořadě. HC1 nemá grafickou kartu, takže jsem po nahrání obrazu připojil SD disk ke svému notebooku a provedl dvě akce. V /etc/rc.conf  jsem zkontroloval, že mám nastaveno  rc_configured=YES, dhcpcd=YES a sshd=YES  – tím jsem zabezpečil načtení adresy z DHCP a zapnutí sshd.

Následně jsem zkontroloval, že v /etc/sshd_config  je povolena autorizace roota klíčem a nahrál jsem do /root/.ssh/authorized_keys svůj rootovský klíč. Po naběhnutí jsem z dhcpd.conf  na serveru vyčetl IP adresu nového zařízení a bez problému jsem se připojil – jako root. Zajásal jsem.


Autor: Petr Topiarz

Odroid s 3,5" diskem

Síťová karta, USB, vše tam bylo, až na… SATA. Ovladač pro SATA nefungoval. Stáhl jsem tedy ještě obraz z větve current (vývoj) a dopadl jsem stejně. NAS by tedy jistě fungoval, kromě toho, že by neplnil svou hlavní funkci. Prohra.

Shrnutí a závěr

Jak je tedy patrné, velmi rozšířené jednodeskové armové stroje s NetBSD bezproblémově jedou – Raspberry 2, 3 nebo Pine64. Některá jiná zařízení nejsou plně podporována. V případě routeru Banana Pi R2 jsou to ethernetové porty, v případě NAS s Odroid HC1 je to pro změnu disk.

ict ve školství 24

Oproti tomu linuxové distribuce, ať už přímo Raspbian, nebo obecné, jako Debian, Ubuntu mají podporu širší, takže například na Odroidu HC1 jsem disk přes SATA rozhraní s obrazem Ubuntu bez problému připojil.

Používáte také jednodeskové počítače s ARM nebo ARM64? Jaké s nimi máte zkušenosti? Povedlo se někomu rozjet OpenBSD na armové architektuře? Budu rád, když se o zkušenosti podělíte v diskusi.

Autor článku

Petr Topiarz vystudoval angličtinu a pracuje jako systémový administrátor v jedné pražské IT firmě.