Pregunta

Siempre fui atraído por el mundo del kernel hacking y sistemas embebidos.
Alguien ha conseguido buenos tutoriales (+hardware fácilmente disponible) en el que comienza a meterse con esas cosas?
Algo así como kits para escribir controladores, etc, que vienen con una buena documentación y son asequibles?

Gracias!

¿Fue útil?

Solución

Si eres completamente nuevo en el desarrollo del kernel, yo sugeriría que no comienza con el desarrollo de hardware y de ir a algunos de los "software" sólo los módulos del kernel como de archivos / proc / sysfs o para ejemplos más complejos del sistema de ficheros / desarrollo de la red , el desarrollo de un uml/vmware/virtualbox/...máquina para estrellarse su máquina no duele mucho :) Para el desarrollo integrado, usted podría ir para un pequeño BRAZO del Kit de Desarrollo o una pequeña Via C3/C4 de la máquina, o cualquier PC antigua que se puede quemar con el homebrew USB / PCI / cualquier dispositivo.

Un buen lugar para comenzar es probablemente Kernelnewbies.org - que tiene un montón de enlaces e información útil para los desarrolladores del núcleo, y también cuenta con una lista de fácil de implementar tareas a abordar para los principiantes.

Algunos libros para leer:

La comprensión del Kernel de Linux - una muy buena referencia que detalla el diseño de los subsistemas del kernel

Linux Controladores De Dispositivo - está escrito más como un tutorial con un montón de código de ejemplo, centrándose en conseguir el ir y explicar los aspectos clave del kernel de linux.Se presenta el proceso de generación y los fundamentos de los módulos del kernel.

Linux Kernel Module Guía De Programación - Un poco más el material introductorio

Como se sugirió anteriormente, mirando el código de linux siempre es una buena idea, especialmente como Kernel de Linux API tienden a cambiar bastante a menudo ...LXR ayuda mucho con una muy buena interfaz de navegación - lxr.linux.no

Para entender el proceso de Compilación del Kernel, este enlace puede ser de ayuda:

El Kernel de Linux Makefiles (kbuild)

Por último, pero no menos importante, navegar por el directorio de Documentación de la Fuente del Kernel de la distribución!

Aquí están algunas de las interesantes ejercicios insolentemente robado de un núcleo de desarrollo de la clase:

  • Escribir un módulo del kernel que se crea el archivo /proc/jiffies informar de la hora actual en jiffies en cada acceso de lectura.
  • Escribir un módulo del kernel prestación de los archivos / proc /proc/sueño.Cuando una aplicación escribe un número de segundos como texto ASCII en este archivo ("echo 3 > /proc/sleep"), se debe bloquear para la cantidad especificada de segundos.Los accesos de escritura debería tener ningún efecto secundario en el contenido del archivo, es decir, en los accesos de lectura, el archivo debe aparecer vacía (ver LDD3, ch.6/7)
  • Escribir un proc archivo donde usted puede almacenar texto temporalmente (usando echo "bla" > /proc/tubo) y lo nuevo (cat /proc/tubo), borrar el archivo.Reloj para la sincronización de los problemas.
  • Modificar el tubo de ejemplo de módulo para registrarse como un personaje de dispositivo /dev/tubo, añadir la asignación dinámica de memoria para las solicitudes de escritura.
  • Escribir realmente un simple sistema de archivo.

Otros consejos

Absoluta debe es este libro de Rubini.(disponible tanto como un papel o un suave copia)

Él le da las implementaciones de varios ficticio los controladores que no requieren que usted tenga cualquier hardware de otros de su pc.Así que para empezar en el desarrollo del kernel es la manera más fácil de ir.

Como para hacer incrustado trabajo yo recomendaría la compra de uno de los numerosos SBC (single board computers) que están ahí fuera.Hay un número de estos que están basados en procesadores x86, por lo general con PC/104 interfaces (eléctricamente PC/104 es idéntica a la del bus ISA estándar, pero basado en apilable conectores en lugar de los conectores de borde - muy fácil de interfaz de hardware personalizado a)

Suelen tener conectores vga que hacen que sea más fácil hacer la depuración.

Para Linux embebido de la piratería, la simple router Linksys WRT54G que usted puede comprar en todas partes es una plataforma de desarrollo en su propio http://en.wikipedia.org/wiki/Linksys_WRT54G_series:

El WRT54G es notable por ser el primer consumidor a nivel de dispositivo de red que tenía su firmware de código fuente liberado para satisfacer las obligaciones de la licencia GNU GPL.Esto permite a los programadores para modificar el firmware para cambiar o agregar funcionalidad al dispositivo.Varios firmware de terceros proyectos de proporcionar al público con una mejora de firmware para el WRT54G.

He tratado de instalar OpenWrt y DD-WRT firmware en él.Usted puede comprobar, los que están fuera como un punto de partida para el hacking en una plataforma de bajo costo.

Para empezar, la mejor manera es leer un montón de código.Debido a que Linux es de código Abierto, usted encontrará docenas de conductores.Encontrar uno que funcione en algunos aspectos, como lo que quiero escribir.Vas a encontrar algo decente y relativamente fácil de entender el código (el dispositivo de loopback, ROM fs, etc.)

También puede utilizar el lxr.linux.no, que es el código de Linux de referencia cruzada.Si usted tiene que averiguar cómo funciona algo, y la necesidad de mirar en el código, esta es una buena y fácil manera.

También hay un O'Reilly libro (Comprensión del Kernel de Linux, la 3ª edición es de alrededor de los núcleos 2.6), o si quiere algo para libre, usted puede utilizar el Advanced Linux de Programación: libro (http://www.advancedlinuxprogramming.com/).También hay un montón de documentación específica sobre los sistemas de archivos, redes, etc.

Algunas cosas para estar preparados para:

  • tendrás la compilación cruzada.El dispositivo incorporado utilizará un MIPS, PowerPC, o el BRAZO de la CPU, pero no tiene suficiente potencia de la CPU, de la memoria o de almacenamiento para compilar su propio kernel en una cantidad de tiempo razonable.
  • Un sistema embebido, a menudo se utiliza un puerto serie como el de la consola, y para reducir el costo generalmente no hay conector soldado en la producción de tableros.La depuración de kernel panics es muy difícil a menos que usted puede soldar un conector del puerto serie, no se dispone de mucha información acerca de lo que salió mal.

El Linksys NSLU2 es un método de bajo costo para obtener un verdadero sistema integrado para trabajar con, y tiene un puerto USB para agregar periféricos.Cualquiera de un número de puntos de acceso inalámbricos también pueden ser utilizados, ver la OpenWrt página de compatibilidad. Ser conscientes de que los modelos actuales de el Linksys WRT54G que encontrarás en las tiendas ya no se pueden usar con Linux:tienen menos memoria RAM y Flash con el fin de reducir el costo.Cisco/Linksys ahora utiliza vxWorks en el WRT54G, con un menor consumo de memoria.

Si usted realmente desea conseguir en ella, kits de evaluación para incrustado Cpu inicio a un par de cientos de dólares.Yo recomiendo no gastar dinero en ellos a menos que usted necesita profesional para un puesto de trabajo o el contrato de consultoría.

Soy totalmente principiante en el kernel hacking :) me decidí a comprar dos libros "de Linux el Desarrollo del Programa:una guía con ejercicios" y "Escribir Linux Controladores de Dispositivo:una guía con ejercicios" están muy claramente por escrito y proporcionar una buena base para el aprendizaje posterior.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top