2010-07-20 7 views
6

Si quiero ejecutar un programa de usuario (no un módulo kernel) en el kernel de Linux, ¿qué opciones tengo?Ejecutar un programa en el kernel de Linux

He examinado KML (kernel mode linux) pero eso es específico de la arquitectura IA-32. Quiero una solución que sea multiplataforma y pueda funcionar en sistemas embebidos de Linux.

+0

¿Por qué este programa necesita ejecutarse en modo kernel? –

Respuesta

3

La programación de Kernel es, por definición, bastante específica de la plataforma, ya que los kernels para diferentes plataformas son todos diferentes.

5

Los programas de usuario no ejecutan en el espacio del kernel, eso es lo que los convierte en programas de usuario.

Si desea ejecutar código en el espacio del núcleo, tiene dos opciones: compilarlo en el kernel o cargarlo con un módulo kernel.

+0

Por programa de usuario me refiero a un programa compilado para ejecutarse en el espacio de usuario, es decir, mediante llamadas al sistema exec * o de cualquier otra manera. Kernel Model Linux o KML nos permite ejecutar estos programas en el kernel de Linux sin modificaciones, pero es específico de la arquitectura IA32. Estoy buscando, que puede funcionar en múltiples arquitecturas. – binW

4

Usted escribió en otra pregunta que es un recién llegado a la programación del kernel. Usar KML es muy poco convencional, y será mucho más complicado que hacer las cosas de forma estándar. Eso hará que tu aprendizaje sea mucho más difícil. Sugeriría que su mejor opción es reevaluar por qué desea ejecutar una aplicación de espacio de usuario en el espacio del kernel y encontrar la manera de no hacerlo.

Puede haber una buena razón para hacer tal cosa, pero no tengo claro cuál podría ser esa razón. Una cosa que debes entender con el desarrollo del kernel es que solo porque algo es posible, no es necesariamente algo que deba hacerse.

Si realmente quieres una solución multiplataforma, tendrás que escribirla tú mismo. Las únicas arquitecturas compatibles con KML son IA32 y AMD64.

3

Eche un vistazo a FemtoLinux. Básicamente, se trata de un archivo KML para sistemas embebidos y procesadores embebidos, tales como ARM y MIPS

+0

¿Dónde puedo obtener femtolinux. No tienen enlace de descarga allí. – binW

+0

Intenta enviarles un correo electrónico – Demiurg

3

call_usrmodehelper

+0

Llego un poco tarde al juego, pero estaba buscando lo mismo y esta sería la respuesta correcta. Para ser precisos, así es como se hace que un programa de espacio de usuario comience desde el espacio del kernel, que es lo que creo que es la intención original del OP. – John

0

Si desea iniciar un programa de usuario desde el espacio del núcleo, echar un vistazo a run_init_process(). Es la forma en que kernel ejecuta el programa init.

Cuestiones relacionadas