Linux na Orange Pi Plus: SATA je chyták

22. 2. 2016
Doba čtení: 9 minut

Sdílet

Dnes projdeme nabídku linuxových operačních systémů pro Orange Pi Plus. Zkusíme jeden nainstalovat a nakonfigurovat. Přidáme nemilou pravdu o SATA potvrzenou rychlostními testy. Na závěr se spálíme o chladič.

Úvod

minulém článku o Orange Pi Plus jsem „recenzoval“ jen předinstalovaný operační systém Android, který fungoval bezchybně. Dnes bych se rád věnoval instalaci a provozu operačních systémů, které používáme na desktopech a serverech. Jelikož je Orange Pi Plus zjevně veden snahou „dohnat a předehnat“ Raspberry Pi (které je v oblasti jednodeskových počítačů díky silnému PR jakýmsi etalonem), nevyhnu se jejich občasnému srovnání.

Operační systémy

Výrobce na webu orangepi.org tvrdí, že mezi podporované operační systémy patří „Android, Ubuntu, Debian, Rasberry Pi Image“. V sekci „Resources“ → „Downloads“ pak nabízí řadu obrazů paměťových karet s předinstalovanými operačními systémy. Na první pohled je oficiální nabídka instalačních obrazů úžasná a Raspberry Pi svým jediným systémem zvaným „Raspbian“ (protože je to Debian) může vypadat jako „chudý příbuzný“.

Nadšení poněkud opadne, když odkazy na jednotlivé systémy proklikáme. Prakticky všechny debianí systémy totiž vedou do jediného příspěvku v jakémsi webovém diskusním fóru. Ostatní operační systémy pak dokonce do nějaké složky na MEGA serveru (šifrované službě pro sdílení dat). Autorem onoho klíčového diskusního příspěvku je jistý „loboris“, což je 60letý chorvatský inženýr. V komunitě kolem Orange Pi má prominentní postavení, protože zřejmě jako jediný loni v létě upravil linuxový kernel řady 3.4 tak, aby dobře fungoval na všech Orange Pi verzích, a zároveň měl dost trpělivosti postupně vygenerovat všechny ty připravené obrazy operačních systémů. S firmou Xunlong Software CO.,Limited, která Orange Pi vyrábí, není nijak propojen, a softwarovou podporu pro její výrobky dělá zadarmo ve volném čase jako svého koníčka.

Všechny loborisem připravené obrazy operačních systémů jsou dle stejného „mustru“: jeho kernel a script.bin (ve kterém je konfigurace pro konkrétní typ Orange Pi) a k tomu běžná instalace desktopového systému, ať už Ubuntu, Lubuntu, Debianu, Fedory, Archu, OpenSUSE, Slackware, Gentoo atd. Nainstalovat celý operační systém z jednotlivých balíčků si můžeme při troše času i sami, stačí nám jen vzít od loborise kernel a pak použít třeba debootstrap (pro instalaci Debianu a z něj odvozených systémů). Ostatně loboris tento postup sám dokumentuje v části svého příspěvku „Building the system“, kde nabízí i kompletní zdrojový kód kernelu se svými úpravami a skripty pro sestavení debianího operačního systému.

Instalace

Instalací vlastního systému od píky bychom ale přišli o ten lechtivý pocit v oblasti žaludku, kdy nevíme, jaká zadní vrátka v těch předinstalovaných systémech jejich autor ukryl, a po instalaci systému napjatě očekáváme, jaké „volání domů“ se nám v logu routeru objeví. Proto si dále popíšeme instalaci a zprovoznění jednoho z hotových obrazů. Zkoušel jsem jich tolik, že už si přesně nepamatuji, který jak fungoval, ale ony se všechny chovají a tváří velmi podobně (liší se obvykle jen desktopovým prostředím). Navíc je postup instalace vždy stejný:

  1. stáhneme si vybraný obraz z MEGA serveru
  2. rozbalíme ho na svém počítači
  3. zapíšeme obraz na připravenou paměťovou kartu příkazem  dd if=jméno_obrazu.img of=/dev/sdX bs=1M oflag=direct
  4. kartu vytáhneme z čtečky a opět ji tam vrátíme (SW postupy pro znovunačtení nového rozdělení disku mi nefungovaly)
  5. připojíme oddíl „BOOT“ (první oddíl na kartě, s FAT filesystémem)
  6. překopírujeme/přejmenujeme uImage_OPI-PLUS na uImage (pokud máte jinou desku než PLUS, zvolte odpovídající kernel)
  7. překopírujeme/přejmenujeme script.bin-XYZŽ na script.bin (XYZŽ je naše kombinace grafického výstupu a rozlišení)
  8. kartu vložíme do Orange Pi a zapneme napájení

Po pár sekundách obouvání nás přivítá buďto některý z GDM/LightDM přihlašovacích manažerů, anebo v případě loborisových „mini“ obrazů běžný login shell. Jméno i heslo je intuitivně „orangepi“. Všechno pak dále funguje normálně, stejně jak to znáte z běžného osobního počítače. Jako první příkaz je vhodné použít sudo fs_resize, což zavolá loborisem připravený skript v /usr/local/bin/, který „roztáhne“ filesystém na celou velikost vaší paměťové karty. Pak už můžeme instalovat další balíčky a zkrátka systém používat stejně jako na běžném počítači.

Konfigurace

Připojení k Internetu přes ethernetové rozhraní funguje rovnou. Připojení k WiFi z nějakého důvodu nejde „naklikat“, ale musí se ustoupit do příkazové řádky a zavolat sudo nmcli -a d wifi connect. Všechny do USB a na SATA připojené mass storage zařízení jsou ihned použitelná, infračervené čidlo funguje po modprobe sunxi-ir-rx jako další klávesnice (tj. šipky na dálkovém ovladači od TV jako šipky na klávesnici atd., vhodné pro ovládání Kodi a dalších).

Pokud zatoužíme po novějším kernelu od loborise (poslední je někdy z konce října 2015), můžeme zavolat jeho další skript update_boot.sh (na některých obrazech update_kernel.sh), který se vyptá na typ zařízení a výstupní zobrazovadlo (DVI/HDMI) a pak stáhne odpovídající kernel a script.bin a sám je zapíše do BOOT oddílu.

„Mini“ obrazy mají připravené skripty pro instalaci vámi oblíbeného desktopu – LXDE, XFCE či Mate ( install_????_desktop). A to nejlepší na konec – operační systém můžeme také nainstalovat přímo na vnitřní EMMC paměť ( install_to_emmc), anebo na disk připojený přes integrované SATA rozhraní či na USB flash disk ( install_to_usb /dev/sdXn). Po instalaci na SATA či USB disk je možné Orange Pi provozovat i bez vložené paměťové karty (což byl jeden z dotazů v diskusi, na který tímto odpovídám). Ovšem linuxový kernel a k němu script.bin se při bootu vždy čte z FAT disku na EMMC (nebo na paměťové kartě), a teprve poté boot pokračuje z externího disku připojeného přes SATA či USB rozhraní. Odkud bude načítání operačního systému pokračovat, určí textový soubor cmdline.txt, který musí být také u kernelu na FAT oddílu. V něm je jediný řádek root=/dev/sdXn (tento textový soubor zjevně supluje funkci grubu, který na „velkých“ počítačích předává parametry jádru při startu).

SATA rozhraní

Instalovat Linux na vnitřní EMMC jsem nezkoušel, protože si chráním výrobcem předinstalovaný Android jako oko v hlavě (reinstalovat bych ho musel utilitou z MS-Windows, které nerad vidím). Instalaci (resp. zkopírování systému z karty) na připojený SATA disk jsem zkoušel, ale nedozkoušel – po zhruba půlhodině jsem proces kopírování přerušil. Přecejen těch 8 GB trvá zkopírovat na SATA opravdu dlouho.

Zde se musím vrátit k tomu, jak je u Orange Pi Plus vlastně SATA rozhraní připojeno. Na rozdíl od první generace Banana Pi, kde je SATA připojena přímo do procesoru/SoC Allwinner A20, je zde kvůli SoC Allwinner H3 bez nativní podpory SATA použit speciální „SATA čip“, což je kvalitní špek, na který jsem nejen já výrobci skočil:

Bohužel se jedná o nechvalně známý převodník GL830 ze SATA na USB, který nad jiné podobné převodníky „vyniká“ pomalostí zápisu, která prý nepřesahuje 15 MB/s. To muselo být důvodem, proč jsem se nedočkal dokopírování systému z karty na externí disk. Nezabránilo mi to ale v provedení pár porovnávacích testů alespoň v rychlosti čtení.

Testy rychlosti

Původně jsem všechny testy hodlal provádět v gnome-disks , který je pěkný a vypadá, že ví co dělá, ale bohužel na Orange Pi Plus padá vždy při dosažení hranice 2 GB. Proto jsem nakonec ustoupil k hdparm -t , který nepadá a měří stejně. Testy jsem prováděl s 2,5" diskem Seagate Momentus 7200.4 250 GB v půjčeném notebooku, na kterémhdparm -t /dev/sda ukazuje 99 MB/s. Tentýž disk, vymontovaný z notebooku a připojený přímo na SATA rozhraní Orange Pi Plus ukazoval vhdparm  testu 28 MB/s, takže SATA rozhraní na Orange Pi Plus brzdí přenos dat z tohoto disku na čtvrtinu možné rychlosti. S takovou rychlostí (spíš pomalostí) SATA rozhraní to opravdu není žádná hitparáda – na přehrávání záložních kopií Blu-Ray disků v případě Orange Pi Plus v roli multimediálního centra použitelné, ale jako NAS pro celou domácí síť bych ho doporučit nemohl (ano, kvůli tomu jsem si ho kupoval).

Pro porovnání – hdparm test na vnitřní EMMC paměť hlásí 54 MB/s a z paměťové karty (Class 4) čte rychlostí 17 MB/s. Pro zajímavost – než gnome-disks dosáhne 2GB hranice a spadne, ukazuje při čtení z vnitřní EMMC paměti 78 MB/s, zatímco čtení z externí karty jede 22 MB/s. gnome-disks tedy ukazuje o 40 % lepší údaje než hdparm, takže je potřeba všechny výše uvedené hodnoty brát spíš jako relativní porovnání než absolutní výkon.

Až po vrácení zapůjčeného notebooku s diskem Seagate Momentus mě napadlo porovnat rychlost čtení přes „nativní“ SATA rozhraní a přes USB zapojený externí USB-SATA převodník na témže Orange Pi Plus. Z nouze jsem místo SATA disku použil 8GB CF kartu v CF-SATA převodníku, která v hdparm -t /dev/sda  testu dokázala dodávat data rychlostí 25,5 MB/s, ale po připojení přes USB a externí převodník byla ještě o 10 % rychlejší – 28 MB/s. Mám též hodnoty z gnome-disks  před jeho pádem – 32,8 MB/s na SATA versus 34,6 MB/s přes USB. Tím jsem dokázal, že on-board SATA na Orange Pi Plus má skutečně především dekorativní funkci (poté, co naláká neinformované kupující) a zavděčí se jen tomu, kdo nemá po ruce externí USB-SATA převodník, či kdo si nechce obsadit jeden z pěti USB portů.

Chladiče

Co ještě byste měli vědět o loborisem předinstalovaných operačních systémech? Především, že jeho script.bin nastavení krutě přetaktovávají a přepěťují procesor. Opět se musím vrátit k inzerátu, který mě přiměl koupit si Orange Pi Plus po zklamání z Raspberry Pi. Porovnával jsem totiž 900 MHz u Raspberry s 1,6 GHz uvedenými u Orange Pi a viděl ho díky o 78 % vyššímu taktu jako jasného vítěze. Teprve před pár dny jsem zjistil, že „výchozí“ rychlost u SoC H3 je 1,2 GHz, ale Xunlong se rozhodl prodávat je přetaktované na 1536 MHz, což v inzerci ještě zaokrouhlil na 1,6 GHz. Loboris tuto laťku ve svých kernelech statečně drží, přestože se v klidovém stavu o procesor spálíte. Když mu naložíte práci, vyletí jeho teplota i na osmdesát stupňů (a aktivuje se samozpomalování, aby se neupekl zaživa).

Proto jsem si jednak hned nalepil na čipy chladiče a za druhé koupil teploměr, který při zatížení procesoru na chladiči naměří teploty stoupající přes 60 ℃. Doporučuji přidat výkonný ventilátor na 5 V (aby mohl být napájen přímo z desky), anebo provozovat Linux na nižším taktu, blíže k 1,2 GHz. Mimochodem, Android běží právě na 1,2 GHz. Na loborisovo nastavení existuje opravný skript fix-thermal-problems.sh. V nouzi pomůže i omezit maximální frekvenci následujícím zápisem:

# echo 1200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq

Aktuální teplotu jádra si můžeme nechat zobrazovat na konzoli takto:

bitcoin_skoleni

$ watch -n 1 cat /sys/devices/virtual/thermal/thermal_zone0/temp

Závěr

Než si uděláme závěr z provozu desktopového operačního systému na Orange Pi Plus, musím ještě zmínit další dva zcela odlišné zdroje software pro Orange Pi než je tento mírně podivný loborisův příspěvek ve fóru. Také jsem našel jednu tajnou facebookovou skupinu s podporou Orange Pi, a v ní další obrazy s fungující GPU akcelerací. Navíc jsem měřil rychlost sítě, spotřebu elektřiny a dlouze poměřoval rychlost grafiky oproti Raspberry Pi a dalším. A také jsem si hrál s GPIO. O tom všem až příště.

P.S. Na dotaz o I2S z diskuse pod minulým článkem jsem našel odpověď.

Autor článku

Petr Stehlík vystudoval aplikovanou informatiku a pracuje jako vývojář webových aplikací a administrátor linuxových serverů. Provozuje vlastní server tvpc.cz.