¿Para que quieres un sistema de archivos y utilidades de espacio de usuario para un trasto como ese?.
Coges sólo el kernel de Linux (compilado sin soporte de VFS), reemplazas el execv() de init en el main() por una llamada a función que sea el punto de entrada de tu programa, el cual implementa algún tipo de interfaz de control texto que permita al usuario cambiar las reglas del cortafuegos y los parámetros de red y opera desde dentro del kernel. Esta aplicación no termina nunca de ejecutarse.
No es demasiado traumático desarrollar una programa como éste dentro del kernel, teniendo en cuenta que dentro del núcleo hay casi una libc entera, funciones de E/S incluidas, más el api de NetFilter y red.
La interacción con el usuario puede hacerse por puerto serie, aprovechando el soporte de consola sobre puerto serie, o bien incluso sería factible hacer una versión modificada del khttpd y habilitar un interfaz de configuración web para hablar con el router.
... Y ya lo tienes: un sistema empotrado en lo que ocupe el kernel más tu aplicación incluida en él: unas dos megas sin comprimir, como mucho.
|