# Embedded Linux

Embedded Linux is de algemene naam voor een Linux-besturingssysteem dat als een embedded system gebruikt wordt op kleinere elektronica-apparaten zoals een mobiele telefoon, router, pda of digitale tv.

## Embedded Linux Kernel

Embedded Linux bestaat niet als een speciale soort GNU/Linux, zoals Mandriva Linux of Red Hat Linux. Het verschil met deze is de opbouw van de kernel. Het is een gewone, doch licht uitgevoerde, Linux-kernel die specifieke delen van een uitgebreidere kernel heeft. Deze delen zijn gekozen omdat ze onontbeerlijk zijn voor het doel van de versie van Embedded Linux (zo zal de kernel van een router geen X Window-systeem draaien). Boven op deze kernel draait dan andere Linuxsoftware, die ondersteund wordt door de gekozen kernel (bij een router kan dat bijvoorbeeld de programma-ip-tables zijn). Men kan kiezen om er de traditionele GNU-software en -bibliotheken op te draaien of lichtere alternatieven zoals BusyBox met µClibc.
Een Linuxkernel is vaak open source, daarom zijn Embedded Linuxversies ook gratis verkrijgbaar. Onder andere op het internet. Sommige producenten die gebruikmaken van Embedded Linux zeggen dat vooraf gemaakte versies nog niet onmiddellijk klaar zijn voor gebruik. De meningen hierover zijn echter verdeeld. Is de Embedded Linux nog niet klaar voor gebruik, dan kan deze meestal wel aangepast worden daar het open-source is.

## Ontwerpconsideraties

Bij het ontwerp van een embedded system zijn er een aantal parameters die invloed hebben op de goede werking ervan. Is het systeem bijvoorbeeld te groot, dan moet ook het geheugen groter zijn. Dit kan dan leiden tot het gebruik van duurdere chips. Een ander voorbeeld is beveiliging, als het eenvoudig is het embedded system van een router te hacken, dan is het computernetwerk waaraan hij verbonden is, kwetsbaar voor aanvallen van buitenaf. Ontwerpconsideraties zijn onder andere:
* Opstarttijd
* Geheugenbeheer
* Vermogenbeheer
* Beveiliging
* De grootte van het systeem
* Beheer van systeembronnen

### Opstarttijd

Opstarttijd is de term die staat voor alles wat te maken heeft met het initialiseren van het besturingssysteem. Na deze opstarttijd zal de geïnstalleerde software kunnen werken. Opstarttijd is afhankelijk van hoeveel delen van de kernel er moet worden geïnitialiseerd, hoe uitgebreid deze delen zijn en hoe snel hardware is waar het besturingssysteem op draait. Vier technieken om opstarttijd te versnellen zijn:
* PKernel XIP - Staat de kernel toe om uitgevoerd te worden in flash of in-place-ROM (read-only memory)
* DMA Copy Of Kernel On Startup - De kernel van flash naar RAM kopiëren met gebruik van DMA
* Ongecomprimeerde kernel - Een kernel zonder compressie boot misschien sneller
* Decompressie - De kernel sneller decomprimeren

### Geheugenbeheer

Beheer van geheugen in een Embedded system is over het algemeen eenvoudiger dan op volledige systemen. Bij geheugen is het meestal zo dat hoe groter het wordt, hoe moeilijker het wordt het te beheren (door bijvoorbeeld een grotere index). Een embedded system is veel kleiner dan een volledig systeem. Hierboven komt ook dat er (meestal) niet moet worden gedaan aan swapping en dergelijke, zoals wel moet bij grotere systemen. Problemen bij Embedded Linux vormen zich rond een beperkte TLB (translation lookaside buffer), die in embedded systems meestal niet zo groot zijn. Hierdoor is er bij gebruik van userspace work een aanzienlijke daling in prestatie. Applicaties op de CPU zijn 5% tot 40% van hun processortijd bezig met foute adressering.

### Vermogensbeheer

Aangezien veel van de toestellen die met Embedded Linux werken, met batterijen werken, is het nodig om het vermogensgebruik van de toestellen zo veel mogelijk te beperken, en zo efficiënt mogelijk om te gaan met de energie. (bijvoorbeeld een screensaver op een gsm/PDA).

### Beveiliging

Beveiliging is voor alle software systemen die aangesloten zijn op het internet onmisbaar. Vanaf het moment dat een systeem is aangesloten op een communicatienetwerk is het namelijk open voor aanvallen van buitenaf, van mensen die toegang proberen te krijgen tot het systeem of er schade aan willen berokkenen. Om deze reden is het nodig om Embedded Linux op zulke systemen te beveiligen. Een voorbeeld van een inbraak op een embedded system (niet Linux) was er op de iPhone/iPod/iPad, waardoor hackers software konden installeren zonder daarvoor betaald te hebben.

### Grootte van het systeem

De grootte van het systeem dient zo veel mogelijk beperkt te worden. De grootte van het systeem heeft een rechtstreeks verband met de nood naar meer geheugen, de opstarttijd en de prestaties van het systeem.

### Beheer van systeembronnen

Toestellen die gebruikmaken van een embedded system zijn over het algemeen toestellen die beperkte hardware hebben. Om toch nog zo veel mogelijk prestaties te halen uit de hardware die gebruikt wordt dient goed gekozen te worden welke software hoeveel procent van de processortijd krijgt. Dit kan afhangen van welke applicatie er op dat moment uitgevoerd wordt op het toestel. Bijvoorbeeld Wanneer er muziek wordt afgespeeld op een mobiele telefoon moet de softwareapplicatie die daarvoor verantwoordelijk is genoeg processortijd krijgen om de muziek zonder haperen af te spelen. Wanneer er echter een bericht binnenkomt tijdens het afspelen, dan moet er ook genoeg processortijd zijn voor dat bericht.

## Voordelen van Embedded Linux

In 2008 was Embedded Linux het top-embedded system. Met het grootste aantal gebruikers zowel voor de open-source-besturingssystemen als de andere besturingssystemen. Embedded Linux had toen 23% van het aantal gebruikers. In 2009 is dat aantal nog gestegen naar 26%. Terwijl in 2004 het nog maar 15,5% had.
De reden voor het succes van Linux werd door de gebruikers zelf omschreven als volgt:
* De kostprijs van licenties
* Flexibiliteit door toegang tot de source
* Algemene vertrouwdheid met het systeem
* Steeds verbeterend/groeiend applicaties en tools
* Groeiende ervaring bij de ontwikkelaars van Embedded Linux
* ↑ , Kernels voor linux (linux.org)
* 1 2 ,Linux still top embedded system
* ↑ , Boot time
* ↑ , Elinux wiki Power management. Gearchiveerd op 22 mei 2023.
* ↑ , Presentatie over SELinux(pagina 4-6). Gearchiveerd op 21 januari 2022.
* ↑ , Artikel in de morgen over foutjes in iPad/iPhone/iPod