GNU/Linux >> Linux Esercitazione >  >> Linux

La più piccola distribuzione Linux embedded?

Direi che stai sognando. Il problema principale sarà la RAM limitata.

Nel 2004, Eric Beiderman è riuscito a ottenere un avvio del kernel con 2,5 MB di RAM, con molto di funzionalità rimosso.

Tuttavia, era su x86 e stai parlando di ARM. Quindi ho provato a costruire il kernel ARM più piccolo possibile, per la piattaforma "versatile" (una delle più semplici). Ho disattivato tutto opzioni configurabili, comprese quelle che stai cercando (USB, WiFi, SPI, I2C), per vedere quanto sarebbe piccolo. Ora, qui mi riferisco solo al kernel, e questo non include nessun componenti dello spazio utente.

La buona notizia:si adatterà al tuo flash. Lo zImage risultante è di 383204 byte.

La cattiva notizia:con 256kB di RAM, non sarà in grado di avviarsi:

$ size obj/vmlinux
  text     data     bss     dec     hex filename
734580    51360   14944  800884   c3874 obj/vmlinux

Il segmento .text è più grande della tua RAM disponibile, quindi il kernel non può decomprimere, figuriamoci allocare memoria per l'avvio, figuriamoci eseguire qualcosa di utile.

Una soluzione sarebbe usare il supporto di esecuzione sul posto (CONFIG_XIP), se il tuo sistema lo supporta (cioè, può recuperare le istruzioni direttamente da Flash). Tuttavia, ciò significa che il tuo kernel deve adattarsi non compresso in flash e 734kB> 700kB. Inoltre, le sezioni .data e .bss totalizzano 66kB, lasciando circa 190kB per tutto il resto (ovvero, tutte le strutture di dati allocate dinamicamente nel kernel).

Questo è solo il kernel. Senza i driver di cui hai bisogno o qualsiasi spazio utente.

Quindi sì, avrai bisogno di un po' più di RAM.


IMO, stai sognando. Soprattutto con USB, rete e 802.11/wifi. Semplicemente non penso che tu possa farlo e M3 è davvero una forzatura.

OpenWRT è una delle distribuzioni Linux più piccole e incorporabili che io conosca per il networking ed è difficile portarla sotto i 2 MB, specialmente con il Wi-Fi.

Prova a esaminare i chip ARM di fascia alta se è quello che vuoi veramente o scegli i SoC Broadcom o Atheros che sono attualmente comuni nei router.


Hai MMU sul processore? In caso contrario, potresti dare un'occhiata a:http://www.uclinux.org/ che dovrebbe darti dimensioni del kernel molto più piccole di quelle menzionate. Funziona con alcuni chip CortexM3 Atmel, quindi potrebbe funzionare per il tuo. Non l'ho usato quindi questo è solo speculativo.Doh, ho appena visto che la domanda era stata aggiornata - beh se non hai MMU (cosa che probabilmente non hai) non puoi usare il kernel "normale" e tu dovrebbe usare ucLinux.


Linux
  1. Come aggiornare il kernel su desktop Linux

  2. Linux – Kernel:supporto per gli spazi dei nomi?

  3. Creare una partizione di ripristino in Linux incorporato?

  4. Linux:un kernel contaminato in Linux?

  5. Linux – I diversi kernel Linux/unix sono intercambiabili?

Kernel Linux vs. Kernel Mac

Kernel Linux e le sue funzioni

Cosa fare in caso di panico del kernel Linux

La distribuzione Linux di Microsoft:CBL-Mariner

Guida completa alla registrazione di Linux

Linux:diagramma del kernel Linux vs. Strumenti per le prestazioni?