Úvodní informace
Operačním systémem použitým na routeru Turris je OpenWrt, což je distribuce Linuxu. Turris lze nastavit, tak, že je možné se k tomuto prostředí přihlásit pomocí SSH do příkazové řádky a tam získat práva roota. Proto vás jistě napadne, že je možné nainstalovat openHAB nativně na Turris.
Zde se však dostaví poměrně rychle zklamání. Pro běh openHABu jak jsme si minule řekli, je nutné mít v systému nainstalovanou podporu pro Javu. Použitým OS, jak bylo řečeno, je sice OpenWrt, ale na platformě PPCSPE – PowerPC SPE (Signal Processing Engine). Pro OpenWrt se sice na internetu dá najít několik návodů pro instalaci Javy, ale žádný z nich mi nefunguje pro tuto platformu.
Navíc si jistě budete přát ponechat základní systém Turrisu pokud možno nedotčený, proto systém nainstalujeme na SD kartu a použijeme chroot. Jako vhodný operační systém v chrootu použijeme Debian. Instalace do chrootu pomocí debootstrap je pro Debian poměrně dobře zdokumentována a současně existuje verze Debianu pro platformu PPCSPE.
Budeme potřebovat jednu microSD kartu o minimální velikosti 4 GB, na které bude umístěn Debian. Dále doporučuji jeden USB flash disk, také nejlépe alespoň 4 GB. Ten využijeme pro přenos připraveného Debianu na Turris, abychom nemuseli, v případě neúspěšných pokusů, kartu z Turrisu opakovaně vyjímat a vkládat. Dále je nutné si na Turrisu připravit pomocí webového administračního rozhraní přístup pomocí SSH pro roota, samozřejmě pouze ze zabezpečené části sítě.
Instalace Debianu
Debian nainstalujeme, jak jsme si již řekli, na SD kartu a ponecháme tak původní filesystém Turrisu nedotčený. Tuto kartu je možné do systému přidat po sejmutí vrchního krytu tak, jak je popsáno na stránkách výrobce. Co je zde však minimálně matoucí, je skutečnost, že se všude píše o SD kartě, ve skutečnosti je ale nutná microSD karta. Tato je po vložení a startu Turrisu v systému přístupná jako /dev/mmcblk0
a první oddíl na ní jako /dev/mmcblk0p1
.
Máme.li kartu vloženou, můžeme přistoupit k instalaci Debianu. Výchozí informace pro instalaci najdeme na výše uvedených odkazech. Pro přípravu struktury Debianu do chrootu je třeba jiný systém založený na Debianu. Doporučuji buď jiný Debian nebo Ubuntu 14.04, které jsem s úspěchem použil. Je jedno, zda se jedná o 32 nebo 64 bitový systém, instalujeme stejně zcela odlišnou architekturu. Do tohoto počítače nainstalujeme potřebné programy:
apt-get install binutils debootstrap
Je možné použít i „nedebianí“ distribuci, ale musíme pak nainstalovat debootstrap ze zdrojového kódu.
Dále pak vytvoříme na vhodném místě adresář debian a přejdeme do něj:
mkdir debian cd debian
Nyní spustíme debootstrap následujícím příkazem a chvíli počkáme:
debootstrap --foreign --no-check-gpg --arch powerpcspe unstable . http://antcom.de/powerpcspe/
Po skončení příkazu pak výsledek zabalíme do archivu:
cd .. tar cvzf debian.tgz debian
Vytvořený soubor debian.tgz, nyní musíme nějak překopírovat na Turris, nejlépe pomocí USB disku. Je možné samozřejmě instalovat debootstrap adresář přímo na microSD kartu, ale nedoporučuji to, v případě, že něco pokazíme, musíme microSD kartu opět z Turrisu vyjmout a znovu na ní instalovat atd. Přímé kopírování souboru debian.tgz na Turris možné není, na Turrisu pro něj není dostatek volného prostoru. Soubor debian.tgz si někde dobře uschováme, v případě potíží jej nemusíme znovu vytvářet.
Od této chvíle veškerá další činnost bude probíhat na Turrisu, kde je třeba být přihlášen přes ssh s právy roota. Nyní si připravíme microSD kartu vloženou do Turrisu (pokud jsme to již neudělali dříve). Tato karta je systémem detekována jako zařízení /dev/mmcblk0
a její první oddíl jako /dev/mmcblk0p1
. Kartu naformátujeme nejlépe systémem extended2, aby práce s ní byla rychlá a nedocházelo k rychlému opotřebení při práci se journálem:
mke2fs /dev/mmcblk0p1
Vytvoříme si přípojný bod a kartu do něj připojíme:
mkdir /mnt/debian mount /dev/mmcblk0p1 /mnt/debian
Nyní si připojíme i USB disk, který by měl být systémem rozpoznán jako /dev/sda
. Vytvoříme si přípojný bod a připojíme USB disk a ověříme existující připojené disky:
mkdir /mnt/sda1 mount /dev/sda1 /mnt/sda1 df -h
Měli bychom vidět něco jako:
Filesystem Size Used Available Use% Mounted on rootfs 249.0M 72.1M 176.9M 29% / /dev/root 249.0M 72.1M 176.9M 29% / tmpfs 1013.8M 2.0M 1011.8M 0% /tmp tmpfs 512.0K 4.0K 508.0K 1% /dev /dev/mmcblk0p1 14.5G 2.9G 10.9G 21% /mnt/debian tmpfs 512.0K 4.0K 508.0K 1% /mnt/debian/dev /dev/sda1 3.7G 1.0G 2.5G 29% /mnt/sda1
Samozřejmě v tomto okamžiku máme (na rozdíl od tohoto výpisu) disk připojený na /mnt/debian
ještě prázdný. Nyní již rozbalíme připravený archiv:
cd /mnt/debian tar xzvf /mnt/sda1/debian.tgz
Nyní již je čas chrootnout se do nového debianu. Pro spuštění a vypnutí debianu si můžeme připravit následující skripty, které nám ušetří spousty přepisování. Pro start debianu skript debinit.sh
, pro vstup do již běžícího debianu debian.sh
a pro vypnutí debianu debout.sh
. Pak stačí pro požadovanou činnost pouze spustit odpovídající skript. Tyto skripty umístíme do /usr/bin
(Turris nemá adresář /usr/local
) a nastavíme jim práva pro spuštění např: chmod a+x /usr/bin/debinit.sh
, Zdrojové kódy skriptů jsou následující
debinit.sh: #!/bin/bash mount /dev/mmcblk0p1 /mnt/debian -t ext4 # nebo ext2 mount -o bind /dev /mnt/debian/dev mount -o bind /proc /mnt/debian/proc mount -o bind /sys /mnt/debian/sys mount --bind /dev/pts /mnt/debian/dev/pts cp /etc/resolv.conf /mnt/debian/etc/ cp /etc/hosts /mnt/debian/etc/ chroot /mnt/debian/ /bin/bash debout.sh: #!/bin/bash umount /mnt/debian/dev/pts -l umount /mnt/debian/dev -l umount /mnt/debian/sys -l umount /mnt/debian/proc -l umount /mnt/debian -l debian.sh #!/bin/bash chroot /mnt/debian/ /bin/bash
Nastavení debianu na Turrisu
Nyní již můžeme přejít do Debianu pomocí našeho skriptu debinit.sh
. To že jsme na správném místě se přesvědčíme příkazem cat /etc/issue
který by měl dát odpověď typu Debian GNU/Linux 8 \n \l
. Nyní je čas upravit instalační zdroje v souboru /etc/apt/sources.list
pomocí oblíbeného editoru na:
deb http://ftp.de.debian.org/debian-ports unstable main deb http://ftp.de.debian.org/debian-ports experimental main deb http://ftp.de.debian.org/debian-ports unreleased main
Než přistoupíme k aktualizaci systému musíme napravit jednu nepříjemnou věc. Nové balíky libc6
a libc6-dev
pro Debian PPCSPE jsou rozbité a jejich instalací uvedeme systém do nepoužitelného stavu. Je nutné zakázat jejich instalaci:
echo "libc6-dev hold" | dpkg --set-selections echo "libc6 hold" | dpkg --set-selections
a teprve nyní můžeme přistoupit k aktualizaci:
apt-get update apt-cache gencaches apt-get upgrade apt-get dist-upgrade
a k instalaci dalších balíků. Je možné, že kvůli závislosti na nových verzích libc6 se některé balíky nainstalovat nepodaří, ale vhodným střídáním ap-get
a aptitude
se dá dosáhnout hodně. Čas od času je nutné sáhnout i po typu apt-get install -f
. Po prvním apt-get update pravděpodobně obdržíme zprávu o chybějícím klíči, která se bude opakovat:
W: GPG error: ftp://ftp.debian.org/ testing Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY A53AB45AC448326E
Pro její odstranění provedeme následující kroky:
gpg --keyserver pgpkeys.mit.edu --recv-key A53AB45AC448326E gpg -a --export A53AB45AC448326E | apt-key add -
Z Debianu zpět do Turrisu se v případě potřeby odhlásíme příkazem exit
anebo klávesovou zkratkou Ctrl+D
. Do Debianu se naopak vrátíme pomocí připraveného skriptu debian.sh
. Jsme-li v Turrisu a chceme odpojit všechny zdroje, které Debian používá použijeme skript debout.sh
.
Instalace OpenHab
Předpokládejme, že jsme nyní přihlášení v Debianu na Turrisu. Pro správnou funkci OpenHabu ještě potřebujeme nainstalovanou javu. K dispozici máme openjdk ve verzích 6, 7 i 8. Použijme například verzi 7:
apt-get install openjdk-7-jdk openjdk-7-jre
Po úspěšné instalaci, již můžeme nainstalovat a rozběhnout OpenHab. Tentokrát nemáme k dispozici balíčky z distribuce jako ne Raspberry Pi a proto budeme postupovat dle stránek pro manuální instalaci. Budeme jak je doporučeno instalovat do adresáře /opt/openhab
. Samotná instalace spočívá pouze v postupném rozbalení potřebných součástí, přičemž povinný je pouze balík openhab-runtime
. Samotné spuštění openHABu je pak pomocí skriptu /opt/openhab/start.sh
.
Pozor v nových verzích Turrisu je defaultní port 8080 použit jako alternativní pro zobrazení webového konfiguračního rozhraní, proto změníme v již zmíněném souboru /opt/openhab/start.sh
parametr HTTP_PORT=8080
např na HTTP_PORT=8888
a současně nesmíme zapomenout port 8888 povolit v konfiguračním rozhraní Turrisu.
Po úspěšném rozběhnutí můžeme začít OpenHab konfigurovat. Ale to už je jiný příběh.
Závěr
Tento článek by vám měl pomoci při řešení dvou různých problémů
- Jak rozběhnout openHAB na domácím routeru. Je třeba si uvědomit, že obdobným způsobem můžeme openHAB rozběhnout na libovolném routeru, na kterém lze spustit OpenWrt. Je třeba pouze počítat s tím, že se skoro jistě bude jednat o jinou architekturu než PPCSPE, ale základní postup by měl být stejný
- Jak rozběhnout na Turrisu software (služby), které neposkytuje přímo Turris. A současně jak na Turrisu rozběhnout Debian.