Universidad de San Carlos Facultad de Ingeniería Ingeniería en Ciencias y Sistemas Sistemas operativos 2 Practica no. 3 – Creación de un modulo cargarle para Linux Actualmente las distribuciones Linux están siendo el reemplazo natural para los sistemas Unix de antaño, compañías como Red Hat, Intel o Novell hacen grandes inversiones en el desarrollo del kernel Linux para extender su funcionalidad. Objetivos • • • Que el estudiante entienda las estructura del kernel Linux Que el estudiante entienda la interacción del kernel y sus módulos Que el estudiante pueda utilizar y crear módulos para el kernel Linux Descripción Linux es el núcleo o kernel del sistema operativo libre GNU/Linux. Lanzado bajo la licencia pública general de GNU y desarrollado gracias a contribuciones provenientes de todo el mundo, Linux es uno de los ejemplos más notables de software libre. Linux fue creado por Linus Torvalds en 1991. Muy pronto, la comunidad de Minix contribuyó en el código y en ideas para el núcleo Linux, desde su inicio hasta la fecha ha tenido grandes cambios uno de los más revolucionarios saltar desde una arquitectura monolítica a una modular. Por su naturaleza libre Linux recibe aporte de varias empresas, hackers y organizaciones fuera de kernel.org (el encargado de su desarrollo), por lo cual es interesante conocer como se desarrolla un modulo para el kernel para extender su funcionalidad. Los módulos de Linux se utilizan para algunas de las siguientes tareas: • Controladores de dispositivos • Controladores de sistemas de archivos • Llamadas al sistema • Controladores del stack de red • Reglas TTY • Interpretes de ejecutables Ya que estas tareas requieren bastante conocimiento y diseño de nuevas estructuras de software y hardware, solo se creara un modulo de prueba para que el estudiante entienda los conceptos de la creación de módulos para Linux. La practica consiste en crear un modulo dinámico y pueda ser insertado en tiempo de ejecución, sus atribuciones deben ser: • Mostrar la información del creador del modulo para linux, en el campo autor debe de indicar el nombre y el carnet • El modulo no tendrá mayores responsabilidades sin embargo debe ser evidente un mensaje a la hora de cargar el modulo indicando el user space del proceso y el PID del programa que lo inserto en el kernel, estos mensajes se evaluan con dmesg ya que no existen salidas a terminal desde el kernel. • Además de esto el modulo debería crear el archivo /proc/miprimermodulo, donde el contenido del mismo debe ser “hola soy el primer modulo de 200######” y este archivo se debe leer con cualquier lector de archivos como less, more o cat. Ponderación Mensajes de carga y descarga del modulo – 40 puntos Creación del archivo en /proc – 60 puntos Ayuda Ademas de la ayuda que estara disponible por parte del auxiliar del laboratorio, se recomienda visitar los siguientes links: Your First Loadable Kernel Module – Rob Day http://www.linux.com/news/software/linux-kernel/23685-the-kernel-newbie-corner-yourfirst-loadable-kernel-module Linux Loadable Kernel Module HOWTO http://tldp.org/HOWTO/Module-HOWTO/ The linux kernel programing guide http://www.linuxtopia.org/online_books/Linux_Kernel_Module_Programming_Guide/ Observaciones • Se recomienda al estudiante usar una distribución orientada a desarrolladores con fácil acceso al kernel como por ejemplo: Arch, Slackware o Gentoo. Esto no es una limitante pero le facilitara el trabajo dado que las distribuciones Linux orientadas a usuarios utilizan kernel sin personalización y es más difícil generar un kernel limpio. • Fecha de entrega: 17 de octubre de 2009