Er zijn veel embedded systems. De functionaliteit van deze systemen kun je aanzienlijk uitbreiden door gebruik te gaan maken van een packagemanager voor embedded systems. In dit artikel ga ik kort in op wat een packagemanager voor embedded system is en de korte geschiedenis hiervan. Vervolgens beschrijf ik hoe je Entware voor LibreELEC en Fresh Tomato installeert. Het artikel sluit ik af met een korte beschrijving hoe je Entware gebruikt.
Auteur: André Fondse
Embedded systems (routers, mediaspelers etc.) draaien meestal onder een Linux variant die geoptimaliseerd is voor de taak die het apparaat moet uitvoeren. Met een packagemanager voor embedded systems is de functionaliteit van deze apparaten aanzienlijk uit te breiden door nieuwe software te installeren. Deze packagemanagers halen van internet de gewenste software op en installeren deze software in een aparte directory.
Eén van de eerste packagemanagers voor embedded systems is Optware. Deze packagemanager is ontworpen als een distributie mechanisme voor de open source firmware van een Linksys NAS. Optware is door een grote groep hobbyisten en ontwikkelaars van apparaten in gebruik genomen. Dat heeft ertoe geleid dat Optware voor verschillende soorten hardware platforms beschikbaar is. Deze hardware betreft onder andere nas-systemen, routers, telefoons, plug computers etc. Optware wordt momenteel niet actief onderhouden en daarom zijn er forks ontstaan. Entware is een fork die momenteel onderhouden wordt, al zijn de pakketten meestal wat ouder dan in een reguliere Linux distributie en is het aantal pakketten is beperkter.
Voordat je begint met installeren, zoek je eerst op internet of er voor het embedded system dat je hebt een Entware versie beschikbaar is (zoekterm ‘entware apparaatnaam’, zie afbeelding 1). Het is ook handig om van tevoren te weten welke soort processor in het embedded system zit. Iedere soort processor heeft namelijk een eigen versie van Entware. De installatie van Entware is per apparaat net even wat anders. Door te zoeken op internet zie je meestal wel hoe je Entware voor een specifiek apparaat installeert. Soms moet je instructies van verschillende websites combineren om Entware werkend te krijgen. Daarom geef ik in dit artikel twee voorbeelden van werkende Entware installaties voor LibreELEC (zie mijn artikel in LM 2018-6) en Fresh Tomato (LM 2019-4).
Om Entware te kunnen gebruiken moet er een /opt directory in de root directory aanwezig zijn. In het LibreELEC besturingssysteem is deze directory standaard niet aangemaakt (afbeelding 2) en het bestandssysteem is alleen lezen. Daarom is het noodzakelijk om met een tool deze directory aan te maken met behulp van een ander Linux besturingssysteem. Als je LibreELEC op een x64 pc geïnstalleerd hebt, dan gaat dit het makkelijkst met een live systeem. Draai je LibreELEC op een ARM-processor als een Raspberry Pi, dan is het makkelijkst om de SD kaart met de LibreELEC installatie even in je werkstation te stoppen. De tool die je hiervoor gebruikt is squashfs en is standaard in Linux Mint geïnstalleerd. Zorg ervoor dat het LibreELEC bestandssysteem gemount is. Dit is de partitie met de naam System. Neem vanaf de opdrachtprompt de commando’s uit listing 1 over.
cd /media/mint/System/ mkdir -p new/opt mksquashfs new SYSTEM -all-root rm -rf new
Na elke update van LibreELEC moet je de procedure voor het aanmaken van de /opt directory herhalen. Een update van LibreELEC maakt namelijk weer een nieuwe directorystructuur aan waarbij de /opt directory niet opgenomen is.
Start nu het LibreELEC systeem weer op. Controleer in LibreELEC of SSH aanstaat (Settings → LibreELEC->Services → grote deel scherm: ‘Enable SSH’) en log in met SSH via je werkstation via het commando:
ssh root@ip_nummer_van_je_mediaspeler
LibreELEC is zo geconfigureerd dat je in de directory /storage kunt schrijven. In deze directory staan ook alle media die je op de mediaspeler hebt gezet. Maak in deze directory een opt subdirectory aan, en zorg ervoor dat deze subdirectory verwijst naar de /opt directory met de commando’s uit regel 1 en 2 van listing 2.
mkdir -p /storage/opt mount -o bind /storage/opt /opt wget -O - http://bin.entware.net/x64-k3.2/installer/generic.sh | sh export PATH=$PATH:/opt/bin:/opt/sbin
De versie van Entware die je installeert is afhankelijk van de processor die in je LibreELEC systeem hebt. Op https://github.com/Entware/Entware/wiki/Alternative-install-vs-standard vind je een tabel met de diverse versies van Entware. In listing 2 is voor de X64 processor is in regel 3 weergegeven hoe je de standaard Entware versie installeert. In regel 4 van deze listing voeg je de Entware systeemdirectory’s toe aan het pad.
[Unit] DefaultDependencies=no Conflicts=umount.target Before=local-fs.target umount.target [Mount] What=/storage/opt Where=/opt Type=none Options=bind [Install] WantedBy=local-fs.target
Listing 3
Met behulp van Systemd is het mogelijk ervoor te zorgen dat bij de start van LibreELEC de directory /opt de inhoud van de directory /storage/opt weergeeft. Neem hiervoor de inhoud van listing 3 over middels het onderstaande commando. Neem het pad en bestandsnaam exact over, want anders werkt het niet.
nano /storage/.config/system.d/opt.mount
Geef tot slot het onderstaande commando om Systemd bij het opstarten de verwijzing naar /storage/opt in /opt te activeren.
systemctl enable opt.mount
Om ervoor te zorgen dat bij de start van Entware de taalinstellingen en in het pad de verwijzingen naar Entware opgenomen zijn, neem je de inhoud van listing 4 over met het commando:
nano /storage/.profile export LC_ALL=en_US.UTF-8 export LANG=en_US.UTF-8 export LANGUAGE=en_US.UTF-8 export PATH=$PATH:/opt/bin:/opt/sbin
Om vast te stellen dat je Entware goed hebt geïnstalleerd, herstart je LibreELEC. Na het opstarten log je in met SSH (zie stap 2). Met de uitvoer van het commando ls -al /opt stel je vast dat de inhoud van /storage/opt weergegeven wordt in /opt. Als het commando een lijst met pakketten weergeeft weet je dat Entware goed geïnstalleerd is.
Entware voor Fresh Tomato (verder FT)
Entware voor FT installeer je volledig op een USB-medium. Voor dit deel van de configuratie log je in met SSH op je router. Dit doe je door vanaf de opdrachtprompt het volgende commando in te typen:
ssh root@ip_nummer_van_je_router
Het wachtwoord is gelijk aan het wachtwoord van de admin-gebruiker van de webinterface.
Stop nu het USB-medium in een USB-poort van de router. Standaard mount FT het USB-medium en om te kunnen formatteren moet je deze eerst unmounten. Voordat je het USB-medium gaat formatteren, moet je eerst weten welke apparaatnaam deze heeft. Dit doe je met het commando:
fdisk -l
Er volgt nu een lijst met alle schijven die bekend zijn op je router. Alle schijfnamen die beginnen met /dev/mtdblock zijn irrelevant. De apparaatnaam begint met /dev/sd en als extra hulpmiddel staat daar ook de grootte van het opslagmedium bij. In afbeelding 3 is dit /dev/sda en is 16.0 GB de grootte.
Het USB-medium unmount je met:
umount /dev/sda1
Uitgangspunt is dat het USB-medium één primaire partitie heeft. Een USB-stick kun je het beste met het EXT2 bestandssysteem formatteren. Een USB-harddisk met het EXT3 bestandssysteem.
Een USB-stick formatteer je met het commando:
mkfs.ext2 -L usb_storage /dev/sda1
Voor een USB-harde schijf is dit:
mkfs.ext3 -L usb_storage /dev/sda1 mount -o bind /tmp/mnt/usb_storage/opt /opt mount -o bind /tmp/mnt/usb_storage/jffs /jffs /opt/etc/init.d/rc.unslung start
In de webinterface van FT neem je onder ‘USB and NAS’ en vervolgens onder ‘USB Support’ de instellingen uit afbeelding 4 over. Deze afbeelding betreft de instellingen van een werkende Entware installatie op een Netgear R7000 router met FT.
Bij ‘Run after mounting’ neem je listing 5 over en bij ‘Run before unmounting’ listing 6. Scroll nu naar de onderkant van het scherm en klik op ‘Save’.
/opt/etc/init.d/rc.unslung stop umount /opt/ umount /jffs/
Bij deze stap is het noodzakelijk dat de WAN poort van je router verbinding heeft met internet. Installatie van Entware gebeurt via een SSH verbinding op de router (zie 1e deel stap 1). Zorg ervoor dat het USB-medium op de router aangesloten is. Als je de voorgaande instructies hebt gevolgd, dan wordt de USB-medium automatisch gemount. Door middel van het commando ‘mount’ stel je vast of dit gebeurd is. Er moet in de uitvoer die je dan krijgt een regel staan waarin ‘on /tmp/mnt/usb_storage’ staat. Als het USB-medium niet gemount is, kun je deze via de webinterface van FT onder ‘USB and NAS’ en vervolgens ‘USB Support’ eenvoudig mounten.
mkdir -p /tmp/mnt/usb_storage/opt mount -o bind /tmp/mnt/usb_storage/opt /opt mkdir -p /tmp/mnt/usb_storage/jffs mount -o bind /tmp/mnt/usb_storage/jffs /jffs
Nu maak je door het overnemen van listing 7 de directory’s aan waar Entware gebruik van gaat maken op het USB-medium. Daarnaast zorg je dat er verwijzingen zijn vanuit de root directory van je router naar deze directory’s. Vanuit de root directory van het USB-medium download en installeer je Entware op dit medium door de inhoud van listing 8 over te nemen.
De installatie van Entware is nu afgerond. Als er iets misgaat krijg je duidelijke foutmeldingen. Als het goed is kun je nu het commando ‘opkg’ gebruiken.
cd /tmp/mnt/usb_storage wget http://qnapware.zyxmon.org/binaries-armv7/installer/entware_install_arm.sh chmod +x entware_install_arm.sh ./entware_install_arm.sh rm entware_install_arm.sh
Entware werkt hetzelfde als een packagemanager voor Linux distributies. In de voorbeelden voor Entware-installatie onder LibreELEC en FT heb je al gezien dat de packagemanager van Entware hiervoor het commando ‘opkg’ gebruikt. Voor het basisgebruik van Entware zijn de volgende opties van ‘opkg’ van belang:
opkg list : Geeft de pakketten weer die via Entware geïnstalleerd kunnen worden.
opkg update : Actualiseert de lijst met software die je via Entware kunt installeren.
opkg upgrade : Installeert nieuwe versies van de software die je via Entware geïnstalleerd hebt (doe dit altijd na een ‘opkg update’).
opkg install pakketnaam : Installeert software onder Entware.
opkg remove pakketnaam : Verwijdert onder Entware geïnstalleerde software.
Opkg –help : Informatie over het gebruik van het ‘opkg’-commando.
Als een commando dat in een standaard Linux distributie normaal gesproken aanwezig is ontbreekt, is het vaak mogelijk om dit via Entware te installeren.
Met Entware kun je de functionaliteit van een Embedded system aanzienlijk uitbreiden. De processorcapaciteit van deze systemen is vaak beperkt, waardoor het systeem door het installeren van (veel) software via Entware (merkbaar) langzamer kan worden. Als je bijvoorbeeld een webserver, PHP en database wilt gebruiken op je router die onder FT draait, kun je ook gebruik maken van de functionaliteit van deze routersoftware. Voldoet deze standaard software niet, dan heb je met Entware de mogelijkheid om een systeem op basis van jouw wensen te configureren.