Fedora 17 na Raspberry Pi

Fedora remix (postavený na Fedoře 14) byl původním operačním systémem, který byl doporučován pro použití na počítači Raspberry Pi. V současnosti probíhají práce na Fedora remixu, který bude založený na aktuální Fedoře 17. Ačkoliv ještě není hotový (byť testovací vydání je k dispozici), Fedora 17 ve verzi pro ARM tu s námi je již déle než měsíc a existuje i verze upravená pro potřeby Raspberry Pi (má vlastní jádro, které obsahuje nesvobodné ovladače nutné pro jeho provoz). V tomto článku se zaměřuji na zprovoznění Raspberry Pi právě s touto verzí Fedory. Obsah článku předpokládá znalost postupu oživení počítače v míře, která je popsána v oficiální příručce.

Trocha teorie

Fedora 17 ve verzi pro ARM je kompilována pro dvě architektury: ARMv5 a ARMv7, zatímco Raspberry Pi používá procesor na bázi architektury ARMv6. Z důvodu zpětné kompatibility je proto nutné použít první jmenovanou verzi. Např. Raspbian volí jiný přístup, jedná se de facto o Debian zkompilovaný pro architekturu ARMv6, výsledkem je lepší výkon, který – v závislosti na konkrétní aplikaci – může být vyšší v jednotkách či i desítkách procent oproti „soft float“ verzi.

S termínem „soft float“ se v souvislosti s Raspberry Pi velmi pravděpodobně setkáte. Zjednodušeně řečeno se tak označuje přístup k aritmetickým výpočtům, který používají procesory založené na ARMv5. ARMv6 a 7 jsou již pro výpočty s plovoucí čárkou optimalizované („hard float“). Bohužel hardwarově jsou v nich příslušné jednotky vzájemně nekompatibilní. U Fedory z toho v důsledku vyplývá nutnost použít „soft float“ verzi. Ačkoliv by minulé řádky mohly vyznít mírně pesimisticky, není rozhodně nutné házet „flintu do žita“. Fedora i tak má mnoho co nabídnout a výkonový propad se dá do jisté míry eliminovat i jiným způsobem.

Věcí, na kterou si je nutné dát pozor hned zpočátku, je výběr vhodné SDHC karty. S některými kartami třídy 10 není možné Fedoru zprovoznit, obecně je doporučováno použití karet třídy 4. Bohužel to byl i můj případ – s touto kartou Fedora sice načte jádro, ale krátce na to se postup bootování zastaví. S další už naštěstí problém nenastal. Situace je to mírně paradoxní, protože např. s Raspbianem původní karta pracuje bez potíží. Užitečný seznam kompatibilních i problematických SD karet i dalších periferií naleznete na elinux.org.

Příprava instalačního obrazu

Instalační obrazy, které můžeme použít, se nachází na http://scotland.proximity.on.ca/arm-nightlies/vault/. Existují ve dvou základních variantách: první s Xfce a druhá – minimalistická – bez X serveru. Zvolil jsem první možnost. V potaz je vhodné vzít i to, že servery jsou poměrně limitované co do využitelného pásma pro stahování, takže probíhá relativně pomalu. Poté, co soubor s obrazem stáhnete a rozbalíte, ho zapište pomocí utility dd na vaši SDHC kartu:

dd bs=1M if=f17arm-latest-arm-rpi-xfce-mmcblk0.img of=/dev/karta

Karta zde odpovídá názvu vaší SDHC karty tak, jak je detekována pod Linuxem. Ta dále nesmí být během tohoto procesu připojena. Samotné zapsání obrazu trvá několik minut. Po dokončení této operace doporučuji zvětšit velikost oddílu s kořenovým adresářem a vytvořit oddíl pro swap. Obojí se dá velice snadno zvládnout např. pomocí utility gparted. Velikost swapu jsem volil 1024 MB, ale pravděpodobně by postačovala i menší. Až budete hotovi, nezapomeňte upravit v souborovém systému na SDHC kartě soubor /etc/fstab. Na jeho konec přidejte následující řádek [1]:

/dev/mmcblk0p3 swap swap defaults 0 0

Vše platí za předpokladu, že máte na SDHC kartě právě tři oddíly, kde swap tvoří poslední z nich. Je-li tomu jinak, upravte mmcblk0p3 tak, aby místo čísla 3 bylo číslo oddílu se swapem.

Než se vrhneme na samotné oživení Raspberry Pi, zkontrolujte, že v souboru /etc/selinux/config je položka SELINUX nastavena na disabled, pokud ne, změňte patřičně její hodnotu. Ač může být SELinux užitečný, na Raspberry Pi bychom se kvůli němu potýkali s výraznou ztrátou výkonu.

Pokud se vám všechny předchozí kroky podařilo úspěšně završit, jste připraveni na první spuštění.

Oživení a základní nastavení

Boot Fedory mě napoprvé překvapil svou rychlostí, vzhledem k použitému typu SDHC karty jsem čekal podstatně delší dobu než u Raspbianu, avšak výsledná doba bootu (k přihlašovací obrazovce) byla nakonec velmi podobná.

Během prvního spuštění se má správně spustit grafický konfigurátor pro Raspberry Pi, který… selže (naštěstí to není žádná velká katastrofa, systém můžeme nastavit se vším pohodlím po přihlášení). Po chvíli vás přivítá klasická přihlašovací obrazovka GDM. Je přítomný guest účet, na který se můžete přihlásit, po další chvíli tak máte před sebou funkční Xfce.

Nyní můžete vytvořit uživatelské účty, změnit rootovské heslo (výchozí je fedoraarm), rovněž doporučuji zaktualizovat systém. Jistě si všimnete, že reakce systému nejsou z nejrychlejších, a letmý pohled do systémových zdrojů odhalí poměrně velkou nenasytnost některých spouštěných aplikací (ty můžete nastavit např. pomocí utility lxsession-edit).

Obr. 1: LXDE a nastavení spouštěných aplikací po startu

Nebudou-li vám ani dále vyhovovat reakce prostředí Xfce, můžete zvážit instalaci alternativního desktopového prostředí. Většina ostatních, pro Raspberry Pi připravovaných obrazů distribucí, používá LXDE (je to pouze můj subjektivní názor, ale po několika dnech používání ho hodnotím oproti Xfce jako výrazně svižnější). Nainstalujete ho jednoduše pomocí příkazu (jako root):

yum install @lxde-desktop

Spolu s LXDE se nainstaluje i správce přihlašování LXDM, jehož použití považuji za rozumné i tehdy, kdybyste zůstávali u Xfce. GDM se mi po několikadenním používání začalo chovat poněkud nepředvídatelně a hlavně nestabilně s mnoha pády. Po případném odinstalování GDM je LXDM použit automaticky. Samozřejmě další možností je nepoužívat správce přihlašování vůbec a spouštět X server a desktopové prostředí přímo z příkazové řádky pomocí startx, ostatně Raspbian volí tuto cestu dokonce jako výchozí.

Aktualizace firmwaru

Jako nepříjemné překvapení se může v tento okamžik zdát nefunkční zvuk. Řešení je ale poměrně jednoduché, skript rpi-update se postará o aktualizaci veškerého firmwaru a zvládá i další nastavení. Nainstalujete ho, pokud jako root spustíte následující příkazy [1, 2]:

yum install git
wget http://goo.gl/1BOfJ -O /usr/bin/rpi-update && chmod +x /usr/bin/rpi-update

Samotný aktualizační nástroj spustíte příkazem rpi-update. Jako parametr mu lze předat hodnotu RAM, která má být přístupná systému (zbytek je využit grafickým čipem – pro přehrávání videa je nutných minimálně 64 MB; protože Raspberry Pi v obou variantách disponuje 256 MB paměti, zadejte rpi-update 192). Nezadáte-li nic, použije se výchozí hodnota 224 MB. Průběh aktualizace (po které je nutný restart) trvá několik minut. Podařilo se? Výborně, už jen pár kroků nás dělí od funkčního zvuku. K jeho zprovoznění zadejte postupně jako root tyto příkazy [1]:

yum install alsa*
modprobe snd-bcm2835
alsactl init

Jejich posloupností doinstalujete zvukový systém alsa (spolu se všemi utilitami), zavedete jaderný modul s ovladačem zvukové karty a posléze zvukový systém i aktivujete.

Obr. 2: Alsamixer a XMMS

Nyní nezbývá než zkusit, zda zvuk opravdu funguje. Můžete k tomu použít např. přehrávač xmms, či jiný, dle libosti. K otestování můžete použít zvukový soubor v nějakém vhodném formátu (nejsou nainstalovány kodeky podporující např. MP3). Doporučován je např. tento (v OGG).

Několik tipů na závěr

Nyní máte před sebou fungující Raspberry Pi s Fedorou 17. Určitě ale vidíte, že systém by mohl být o něco plynulejší. V úvodu jsem zmínil, že výkon se dá navýšit i jinak než kompilací distribuce na míru. Tedy k věci. Asi příliš nepřekvapí, že se Raspberry Pi dá taktovat. Je však nutné dát si pozor na to, že při změně napájecího napětí dochází ke ztrátě záruky – podrobně je celá problematika popsána na elinux.org. I bez toho však lze výkon procesoru ARM1176JZF-S, který Raspberry pohání, slušně navýšit. Berte však prosím i zde na vědomí, že tyto změny jsou prováděny pouze na vlastní nebezpečí a hodnota taktovací frekvence, při které je možné Raspberry Pi ještě stabilně provozovat, se může lišit kus od kusu.

Základní taktovací frekvence CPU je 700 MHz, své Raspberry Pi provozuji bez potíží na 850 MHz. Rovněž jsem navýšil obnovovací frekvenci paměti z původních 400 MHz na 500 MHz. Postup je snadný. V adresáři /boot naleznete soubor config.txt (pokud ne, vytvořte ho), do něj na konec přidejte následující řádky [3]:

arm_freq=850
sdram_freq=500

Pokud se vám po restartu podaří úspěšně načíst systém, máte prakticky vyhráno. V případě, že systém nebude stabilní, můžete samozřejmě experimentovat i s nižšími hodnotami. Má zkušenost je však pozitivní a systém reaguje o poznání svižněji.

V zájmu úspory zdrojů dále používám grafické téma Mist, což se rovněž může projevit (opět se jedná o subjektivní dojem, nicméně oproti Clearlooks je, myslím, znát jistý posun vpřed). Nepříjemně mě překvapila odezva aplikací používajících GTK+3, ta je o poznání horší než u GTK+2 (zvlášť je to patrné u aplikace Abiword, která je ve Fedoře ve verzi používající GTK+2 a v Raspbianu ve verzi s GTK+3 – Fedora zde má výrazně navrch).

Závěr

Snad vám byl tento text k něčemu užitečný, uvědomuji si, že celá problematika by šla pojmout mnohem obšírněji. Rovněž je zde hned několik témat, jež by si zasloužila pozornost (jmenovitě přehrávání videa, práce se 3D nebo s některými konkrétními aplikacemi). Ostatně mnoho z nich naleznete už teď i rozebraných na oficiálním fóru věnovanému Raspberry Pi nebo na ostatních spřízněných webech.

Citace

  1. Fedora 17 ARM. Raspberry Pi [online]. Raspberry Pi Foundation, 2012 [cit. 2012-08-05]. Dostupné z: http://www.raspberrypi.org/phpBB3/viewtopic.php?f=51&t=5466&start=25
  2. Rpi-update. HEXXEH. GitHub [online]. GitHub, 2012 [cit. 2012-08-05]. Dostupné z: https://github.com/Hexxeh/rpi-update
  3. RPi config.txt: Overclocking options. Embedded Linux Wiki [online]. 2012 [cit. 2012-08-05]. Dostupné z: http://elinux.org/RPi_config.txt#Overclocking_options

Vydáno s licencí Creative Commons BY-SA 3.0.

4 komentáře u “Fedora 17 na Raspberry Pi

  1. Jak jsi na tom se spotrebou a teplotou RPi? Musim rict ze me to trochu neprijemne prekvapilo – se 750mA nabijeckou od Samsungu se RPi resetuje. Funguje mi napajeni z hubu v monitoru, ale i tak mi prijde, ze se to RPi dost hreje – hlavne cip pro sitovou kartu. Kdyz to clovek jeste pretaktuje, aby na to vzal pomalu vetrak.

    Podle me se ten vykon na desktop moc nehodi – provozovat pod tim vyvoj byt v pythonu a jen pro ucely vyuky, my prijde dost nerealne.

    Chape nekdo podstatu problemu s temi SD kartami? Mam dve – jednu normalni SD a jednu microSD v redukci a obe vicemene funguji, ale nechapu proc to je pro ruzne distribuce ruzne.

    • Provozuji ho jednak s vypůjčeným adaptérem Sunny (1.2 A) a pak nabíječkou od Huawei (1.0 A). S obojím RPi funguje OK. Je i stabilní, reset jsem ještě nezaznamenal. Teplota je (po přetaktování) na úrovni, kdy ještě udržím (na SoC) prst :-)

      Pokud omezíme „vývoj“ (nevím, jak by tam šlo pracovat s takovým Ericem) na „práci v IDLE“, tak podle mě ještě vcelku postačuje. Jinak, když opustím Python, tak mě příjemně překvapilo, jak na RPi běhá Scratch. Pod Raspbianem (u Fedory jsem ho ještě nezkoušel) byl jak start, tak i reakce (skoro) okamžité.

      Ty karty mě taky naprosto matou, na RPi fóru je na to téma napsáno mnoho, ale přijde mi, že to spíš přispívá k obecnému zmatení. Mimochodem, s tou microSD je to vtipné, právě kombinace microSD s adaptérem podle vývojářů Fedora remixu neměla fungovat vůbec…

  2. Perfektní článek! Nevíš náhodou, jak to vypadá s Fedora Remixem pro Raspberry postaveném na Fedoře 17? Dan Horák, který je asi nejrelevantnější osobou na tento dotaz, je na dovolené a zatím ticho po pěšině. Přitom říkali, že Remix vyjde chvilku po vydání Fedory 17 pro ARM.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Můžete používat následující HTML značky a atributy: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Nápověda ke komentování

Při psaní komentáře můžete využít HTML značky <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> .