Fedora ve spojení s počítačem Raspberry Pi v podobě jejího remixu Pidora — aktuální verze je Pidora 2014 založená na Fedoře 20 — je relativně dobře známou věcí. (Změna názvu je nutná, protože Pidora v instalaci zahrnuje balíky, které není do Fedory jako takové možné z licenčních důvodů zahrnout.) Principiálně by nic nemělo bránit provozování Pidory 2014 i na aktuální verzi počítače Raspberry Pi (tedy na Raspberry Pi 2), ale proč se ochuzovat? Existuje hned několik důvodů, proč tak neučinit.

Stručné okénko do historie

Počítač Raspberry Pi původní verze (do verze B+ včetně) je postaven na jednojádrové platformě ARMv6, která je dnes co do poskytovaného výkonu výrazným limitem (ve většině dnešních zařízení využívajících procesorovou architekturu ARM se setkáme s ARMv7 či novější). Pidora 2014 je tak kompilována právě pro architekturu ARMv6, kdežto soudobé verze Fedory jsou logicky vyvíjeny a kompilovány pro ARMv7. Raspberry Pi 2 je pak postavené na architektuře ARMv7 s řádově mnohem vyšším výkonem (i díky zde hned čtyřem obsaženým jádrům). Fedoru 23 by tak mělo být možné použít prakticky přímo a naplno tento výkon využít.

Další důvod, proč na Raspberry Pi 2 nasadit Fedoru 23, je zásadnějšího charakteru. Už padlo, že Pidora 2014 je založena na Fedoře 20, ta už ale nyní není podporovanou verzí a nevycházejí pro ni tak bezpečnostní záplaty, ani jiné aktualizace. Novější verze Pidory zatím nebyla uvedena (a je důležité podotknout, že pokud chcete provozovat Fedoru na starších verzích Raspberry Pi, je právě remix v podobě Pidory jedinou možnou volbou). Pojďme se tedy soustředit na to, jak zprovoznit Fedoru 23 ve verzi pro ARM-hfp ("hard float"), která je v současnosti ve Fedoře jednou z primárních podporovaných architektur.

Jak nainstalovat Fedoru 23

Fedora 23 je připravena pro řadu na ARMu založených počítačů. Na webu Fedora projektu se setkáme s podrobnými návody, jak Fedoru zprovoznit namátkou např. na Pandaboardu, Banana Pi a na dalších počítačích. Na Raspberry Pi však nikoliv. Má to jednoduchý důvod, ne všechny softwarové komponenty nutné ke zprovoznění Raspbberry Pi jsou Open Source. S čistou Fedorou bychom tedy neměli být schopni realizovat plně provozuschopný systém. Ve zbytku článku se podíváme na to, jak si vytvořit vlastní minimalistický Fedora Remix (jak se tyto odvozené varianty Fedory nazývají) zahrnující i sadu dalšího software třetích stran (utilit, modulů jádra apod.). Následující text vychází z již existujících z návodů Getting Fedora 21 on the Raspberry Pi 2 (od Jona Archera) a Fedora 22 or 23 on Raspberry Pi 2, který na prve jmenovaný navazuje.

Co si připravit?

  • Mikro SDHC kartu (dále pro krátkost SD kartu) budeme potřebovat minimálně o velikosti 8 GB. Teoreticky by bylo možné použít i menší, nicméně pro pohodlné používání systému doporučuji tuto velikost. Zbytek článku uvažuje pro použitou SD kartu právě tuto kapacitu.
  • Fedoru ve verzi pro ARM doporučuji zvolit ve variantě Minimal (zdůvodnění bude rozvedeno dále). Získáme tak cca 350 MB velký obraz Fedory vhodný k zápisu na SD kartu.
  • Firmware a další software od autorů Raspberry Pi. Můžeme naklonovat celý jejich gitový repozitář (je značně velký, řádově v GB), nebo stáhnout čistě master větev s firmware v ZIPovém archivu (ten je již mnohem menší, cca 120 MB).
  • Utilitu pro aktualizaci firmware rpi-update od Hexxeha.
Firmware pro Raspberry Pi na GitHubu

Firmware pro Raspberry Pi na GitHubu

Zapsání obrazu, úprava a rozdělení oddílů

Protože ani Raspberry Pi 2 (bohužel) neobsahuje BIOS ani nic obdobného, musíme po zapsání obrazu na SD kartu upravit vytvořené oddíly a stažený image s Fedorou vůbec, tak, aby z něj na tomto počítači bylo možné bootovat. (Pro daný účel použijte svůj oblíbený nástroj, osobně jsem vystačil s GParted.) Celou SD kartu Fedora detekuje v adresáři /dev jako mmcblk0.

  1. Zapište stažený obraz Fedory na SD kartu:
    xzcat Fedora-Minimal-armhfp-23-10-sda.raw.xz | dd of=/dev/mmcblk0 bs=1M
  2. Upravte rozložení oddílů:
    1. Smažte oddíl mmcblk0p1, který je naformátován jako ext4, a nahraďte ho vfat oddílem (v GParted hledáte volbu FAT32, v fdisku či cfdisku volbu b);
    2. Zvětšete oddíl mmcblk0p3 tak, aby vyplnil zbytek SD karty;
    3. Nyní můžete volitelně odstranit oddíl pro swapmmcblk0p2 (a návazně patřičně rozšířit oddíl mmcblk0p1). Zvažte ale nutnost takového kroku. (Raspberry Pi 2 má 1 GB operační paměti, což pro mnoho druhů nasazení může stačit, zároveň aktivní swap může výrazně zvýšit opotřebení vaší SD karty.)
  3. Připojte oddíly mmcblk0p1 a mmcblk0p3:
    1. Můžete se spolehnout na Nautilus, pak Fedora připojí oddíly do adresáře /run/media/;
    2. Nebo je můžete ručně připojit do vámi zvolených adresářů, klasicky pomocí mount;
    3. Ať už připojení provedete jakýmkoliv způsobem, oddíl mmcblk0p1 slouží pro umístění základních souborů načítaných při spuštění (/boot). Oddíl mmcblk0p3 pak bude obsahovat adresářovou strukturu zbytku systému (/).
  4. Upravte soubor /etc/fstab tak, aby reflektoval vaše rozložení oddílů:
    1. Zjistěte UUID (nejspolehlivější cesta) oddílu mmcblk0p1
      blkid mmcblk0p1
    2. Najděte následující řádek:
      UUID=ad2e1747-2cb8-4b13-a5ed-890c8f6ed157 /boot ext4 defaults,noatime 0 0
    3. A upravte ho tak, aby obsahoval vámi vygenerované UUID a odpovídající údaj o filesystému, např. tedy:
      UUID=<vaše-UUID> /boot vfat defaults,noatime 0 0
    4. Pokud jste se rozhodli nepoužít swap, smažte, či zakomentujte, odpovídající záznam (řádek).

Všimněte si, že u oddílů je nastavený příznak noatime, aby byl omezen počet zápisů v rámci filesystému a byla tak šetřena vámi používaná SD karta. Další možností, jak počet zápisů redukovat, by byla deaktivovace žurnálování, nicméně vzhledem k tomu, jak snadno se nám u Raspberry Pi může nechtěně podařit "odpojit" napájení, bych přínos viděl jako nevyvážený oproti vzniklým rizikům.

GParted a úprava oddílů na SD kartě

GParted a úprava oddílů na SD kartě

Příprava systému na první spuštění

V tomto okamžiku už potřebujeme pouze překopírovat sadu utilit a jaderných modulů nutných pro chod systému. Jsou nutné jak pro funkčnost systému jako takovou, tak pro budoucí aktualizace. K tomu potřebujeme dříve zmíněná data stažená z gitu autorů Raspberry Pi a utilitu rpi-update od Hexxeha.

  1. V adresářové struktuře Fedory na Raspberry Pi proveďte následující změny:
    1. Vše z adresáře firmware-master/boot (ZIP stažený z výše zmíněného gitového repozitáře) zkopírujte do adresáře <tam-kam-je-namountován-mmcblk0p1>/boot Fedory na Raspberry Pi;
    2. Vše z adresáře firmware-master/module/<adresář-zakončený-v7+> zkopírujte do adresáře <tam-kam-je-namountován-mmcblk0p3>/lib/modules. (Situace je obdobná jako v předchozím případě.)
    3. Stažený aktualizační skript rpi-update nakopírujte do adresáře <tam-kam-je-namountován-mmcblk0p3>/usr/bin a nastavte mu práva ke spuštění:
      chmod +x <tam-kam-je-namountován-mmcblk0p3> /usr/bin/rpi-update
  2. Nyní musíme nastavit direktivy konfiguračních souborů pro úspěšné nabootování Raspberry Pi:
    1. V adresáři <tam-kam-je-namountován-mmcblk0p1>/boot na Raspberry Pi vytvořte soubor cmdline.txt a vložte následující:
      dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p3 rootfstype=ext4 elevator=deadline rootwait
    2. Ve stejném adresáři vytvořte soubor config.txt a zapište do něj:
      config_hdmi_boost=4
      disable_overscan=1
      hdmi_cvt 800 480 60 6 0 0 0
      hdmi_group=2
      hdmi_mode=87

Pozor, výše zmíněné se silně liší podle použitého zobrazovacího zařízení. Osobně používám přes HDMI připojený display (viz foto níže) o rozlišení 800×480, vaše nastavení může být výrazně jiné. Pro dostupné možnosti se doporučuji podívat na web elinux.org, kde jsou popsány veškeré zde použitelné konfigurační direktivy. (Ty se zdaleka nemusí týkat pouze displaye, ale např. i taktování CPU, nastavení sdílení operační paměti grafickým čipem apod.)

První spuštění a zprovoznění Xfce

Nyní jsme — takřka — připraveni náš systém spustit, ale vyčkejme ještě chvilku. Fedora 23 obsahuje inicializační skript pro CLI, který nám při prvním spuštění umožní nastavit základní vlastnosti systému (lokalizaci, heslo uživatele root apod.). Má zkušenost je, že skript není zcela konformní (proběhne, ale údaje nenastaví). Minimálně heslo uživatele root tak doporučuji předtím nastavit ručně.

  1. Nastavte heslo uživatele root:
    1. Můžete vygenerovat svůj vlastní hash, nebo použít následující předpřipravený pro řetězec "fedora":
      $6$$Ic/P4xQ88Z75UlYwa5ndVeVhRFrCY98OuBV1.djcygz4MaFX53cEahz0pNowsmJTdD6ys9DL5I/7A/KyN1LJO0
    2. Ten následně zapíšete na Raspberry Pi do souboru <tam-kam-je-namountován-mmcblk0p3>/etc/shadow;
    3. Nebo, alternativně, můžete systém nechat dočasně bez hesla, tzn. smazat znak x mezi prvním a druhým oddělovačem ve formě dvojtečky ze souboru <tam-kam-je-namountován-mmcblk0p3>/etc/passwd z řádku týkajícím se uživatele root (typicky první).
  2. Zvažte, zda chcete použít selinux. V souboru <tam-kam-je-namountován-mmcblk0p3>/etc/selinux/config postupujte dle instrukcí v něm obsažených. I ve verzi s ARMv7 je Raspberry Pi stále počítačem s výkonem — velmi zhruba — na úrovni postaršího Intel Atomu, aktivní selinux může způsobit další výkonový propad.
  3. Nyní jsme už — teď již doopravdy — připraveni k prvnímu spuštění počítače, pojďme na to! Po úspěšném nabootování (je-li spuštěn inicializační skript, nechte se jím provést, nicméně na jeho spolehlivost specificky na Raspberry Pi zcela nespoléhejte), nainstalujte základní utility a zaktualizujte systém:
    dnf install binutils tar
    dnf update
    rpi-update
  4. Systém, který máme nyní k dispozici, je už pro mnoho druhů nasazení připraven. SSH server je ve výchozím stavu aktivní a nic nám nebrání dále zprovoznit např. webový server nebo další služby dle libosti 🙂 Pokud chceme zprovoznit plnohodnotné desktopové prostředí (osobně jsem, jako příklad odlehčeného prostředí, zvolil Xfce), pokračujte dále a nainstalujte tyto balíky (a aktivujte službu správce přihlašování):
    dnf install xorg-x11-drv-fbdev @xfce-desktop
    systemctl enable lightdm.service
  5. Pro zprovoznění zvuku potřebujeme provést dalších několik úkonů:
    1. Nainstalovat následující balík s PulseAudiem:
      dnf install pulseaudio
    2. Zajistit načtení modulu jádra pro zvuk a to vytvořením souboru snd_bcm2835.conf v adresáři <tam-kam-je-namountován-mmcblk0p3>/etc/modules-load.d/ s následujícím obsahem (zajistí to načtení modulu pro podporu zvukového čipu v Raspberry pi) ve formě právě jednoho řádku:
      snd_bcm2835
    3. Nastavit 3,5 jack jako výchozí audio výstup pro Raspberry Pi (pokud chcete použít zvuk přes HDMI, což je chování, kterého jinak docílíte, tato část se vás netýká):
      amixer cset numid=3 1

Nyní máte prakticky hotovo. Silně doporučuji vytvořit účet běžného uživatele, pod kterým se budete do Xfce přihlašovat. Zvuk pak můžete otestovat pomocí programu aplay, lze mu jako vstup dodat libovolný soubor typu WAV. Další použití Raspberry Pi už závisí pouze a pouze na vás. Pokud přemýšlíte nad tím, jak je to Fedoře pro ARM s kodeky, pak platí, že známý repozitář RPM Fusion existuje i pro tuto architekturu a použít ho by neměl být problém.

Fedora 23 s načteným Xfce čekajícím na další nastavení

Fedora 23 s načteným Xfce čekajícím na prvotní nastavení

Dojmy z používání

Fedoru 23 na Raspberry Pi 2 mám nainstalovanou relativně krátce (v řádu jednotek dní), celkový dojem je zatím s jednou výjimkou pozitivní (tou výjimkou je práce s prohlížeči postavenými na WebKitu, který často končí jejich pádem). Systém je neskonale plynulejší, než jak tomu je v případě použití Pidory 2014 na Raspberry Pi původní verze B. Ve webovém prohlížeči Mozilla Firefox lze bez problémů — a bez hardwarové akcelerace, k využití jejího potenciálu je nutné použít přehrávač omxplayer — přehrávat video v kvalitě 360p (na původní verzi Raspberry nepředstavitelné). Celková odezva systému je rovněž neporovnatelně svižnější.

V úvodu jsem zmínil, že doporučuji ke stažení verzi Fedory pro minimální instalaci. Na první pokus jsem vyzkoušel i variantu obrazu přímo s Xfce, nicméně u té se objevil (i v odkazovaných návodech popisovaný) problém, kdy po nabootování a zobrazení konfiguračního dialogu Fedory dochází k zamrzání systému, resp. jeho nereagování na vstup z klávesnice či myši. Je to sice řešitelný problém, nicméně z hlediska uživatelské přívětivosti je proces postupné instalace citelně méně problematický.

Závěr

Nezbývá než doufat, že vás tento článek spíš navnadil k vyzkoušení Fedory na platformě ARM než naopak. Jakkoliv první pohled na instalační proces může vypadat mírně neutěšeně, jedná se jen o sumu v zásadě triviálních úkonů. Tak či tak, pakliže se vám nechce podstoupit instalaci krok za krokem, hodí se vědět, že existují i neoficiální předpřipravené image. Jak od v úvodu článku zmíněného Jona Archera (v tomto případě se jedná o Fedoru 21), tak od dalších lidí podílející se na Fedora projektu. Takovým případem jsou i vaughanovy image, které jsou k dispozici jak v minimální variantě, tak i s Xfce. (Osobně je nemám otestované, autor k nim však dodává i rozsáhlé instalační instrukce.) Je tedy z čeho vybírat.

Fedora 23 zároveň není jedinou distribucí ze stejné rodiny, která je použitelná na Raspberry Pi 2. V posledních týdnech se objevila i testovací verze distribuce CentOS 7, u které lze předpokládat, že by byla na daném počítači zprovoznitelná analogickým způsobem (v rámci CentOSu jsou dokonce připravovány obrazy přímo pro Raspberry Pi, lze jen tak doufat, že instalační postup bude přímočarý). Uživatelů distribucí Fedora a CentOS je značné množství, byla by proto velká škoda, kdyby nedostali v prostředí počítače Raspberry Pi soudobé verze svůj prostor. Ten tu však, jak vidíme, už je (a vůbec ne ve špatném stavu), či se v dalším případě zvolna rozvíjí. Musíme doufat a věřit, že budoucí vývoj bude podobně optimistický 🙂

Použité zdroje