GNU/Linux >> Tutoriales Linux >  >> Linux

¿La distribución de Linux integrada más pequeña?

Yo diría que estás soñando. El principal problema será la RAM limitada.

En 2004, Eric Beiderman consiguió que un kernel arrancara con 2,5 MB de RAM, con much de la funcionalidad eliminada.

Sin embargo, eso fue en x86 y estás hablando de ARM. Así que traté de construir el kernel ARM más pequeño posible, para la plataforma 'versátil' (una de las más simples). Apagué todo opciones configurables, incluidas las que estás buscando (USB, WiFi, SPI, I2C), para ver qué tan pequeño se queda. Ahora, solo me estoy refiriendo al núcleo aquí, y esto no incluye ningún componentes del espacio de usuario.

La buena noticia:cabe en tu flash. La zImage resultante es de 383204 bytes.

La mala noticia:con 256kB de RAM, no podrá arrancar:

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

El segmento .text es más grande que su RAM disponible, por lo que el kernel no puede descomprimirse, y mucho menos asignar memoria para arrancar, y mucho menos ejecutar algo útil.

Una solución alternativa sería usar el soporte de ejecución en el lugar (CONFIG_XIP), si su sistema lo admite (es decir, puede obtener instrucciones directamente desde Flash). Sin embargo, eso significa que su kernel debe caber sin comprimir en flash y 734kB> 700kB. Además, las secciones .data y .bss totalizan 66kB, dejando alrededor de 190kB para todo lo demás (es decir, todas las estructuras de datos asignadas dinámicamente en el núcleo).

Eso es solo el núcleo. Sin los controladores que necesita ni ningún espacio de usuario.

Entonces, sí, vas a necesitar un poco más de RAM.


En mi opinión, estás soñando. Especialmente con USB, redes y 802.11/wifi. Simplemente no creo que puedas hacer eso y M3 es realmente exagerado.

OpenWRT es una de las distribuciones de Linux más pequeñas e integrables que conozco para redes y es difícil conseguir menos de 2 MB, especialmente con Wi-Fi.

Intente buscar chips ARM de gama alta si eso es lo que realmente desea o vaya con los SoC de Broadcom o Atheros que actualmente son comunes en los enrutadores.


¿Tiene MMU en el procesador? Si no lo hace, es posible que desee consultar:http://www.uclinux.org/ que debería darle un tamaño de núcleo mucho más pequeño que el mencionado. Funciona para algunos chips CortexM3 Atmel, por lo que podría funcionar para el tuyo. No lo he usado, así que esto es solo especulativo. Doh, acabo de ver que la pregunta se ha actualizado; bueno, si no tiene MMU (que probablemente no tenga), no puede usar el kernel "normal" y usted necesitaría usar ucLinux.


Linux
  1. El ciclo de vida de las pruebas del kernel de Linux

  2. Linux – Kernel:¿Soporte de espacios de nombres?

  3. Linux:¿los diferentes kernels de Linux/unix son intercambiables?

  4. Aumente el tamaño del búfer de desplazamiento hacia atrás del terminal de Linux

  5. ¿Puedo construir una distribución de Linux con libc en lugar de glibc?

Núcleo de Linux vs. Núcleo de Mac

Kernel de Linux y sus funciones

Qué hacer en caso de pánico en el kernel de Linux

Distribución Linux de Microsoft:CBL-Mariner

Guía completa de registro de Linux

Linux – Diagrama de Linux Kernel vs. Herramientas de rendimiento?