Universidad de San Carlos Facultad de Ingeniería Ingeniería en Ciencias y Sistemas Sistemas operativos 2 Practica no. 2 – Conociendo UNIX mediante Minix Minix es un sistema operativo similar al LINUX. Su objetivo principal es la simplicidad en el código, dejando de lado las optimizaciones que los sistemas operativos comerciales tienen. Esta característica permite que el Minix sea utilizado en cursos universitarios. Objetivos • • • Que el estudiante entienda el diseño de sistemas operativos con microkernel a bajo nivel. Que el estudiante ponga en practica las habilidades de programación adquiridas en la carrera para editar programas en C simple sin necesidad de un IDE de programación. Que el estudiante comprenda el papel de los servidores en un microkernel añadiendo una llamada al sistema en uno de los servidores. Descripción El Sistema operativo Minix, puede ser instalado sobre una arquitectura x86 con características bastante modestas respecto al hardware más moderno. Cabe señalar que este sistema operativo puede convivir con WINDOWS y/o LINUX para lo cual tiene un sistema de boot similar al LINUX. Es estudiante deberá utilizar una máquina virtual para poner en marcha una copia de Minix 3, en la red se encuentran imágenes de Minix preinstaladas para Vmware (recomendada en el sitio oficial), Virtualbox (imagen proporcionadas por virtualbox imágenes) o usar algún otro entorno como qemu. Los que utilicen Virtualbox deben saber que no podrán utilizar el driver de red, el único punto de entrada a la máquina virtual además de montar lectores de floppy disk. Sin embargo no es limitante para la funcionalidad del sistema. La practica consiste en tres secciones las cuales el estudiante deberá cumplir y se describen a continuación. Conociendo Minix y los Unix en general Ya que al estudiante se le permite utilizar imágenes preconfiguradas el mismo deberá llenar un cuestionario de ejercicios para garantizar que pueda utilizar Minix sin mayores complicaciones. Este debe ser enviado a más tardar el día lunes 7 de septiembre a la dirección de correo [email protected], con el asunto cuestionario_minix_200####.pdf. El cuestionario va como un adjunto a esta practica. Nótese que se entrega antes de la entrega final con el objetivo de que todos conozcan Minix y puedan utilizarlo. Ejercicios básicos en Minix: El código de Minix no es muy distinto a cualquier otro programa en C, para esto se le requiere hacer algunos cambios. El estudiante debe investigar que ejecutable es el que realiza la función y reemplazar el original de Minix, todo el código fuente se encuentra dentro de /usr/src y el nombre de los directorios describe la función de los ejecutables. Para esto deberá utilizar los editores de texto proporcionados por Minix. Minix no tiene un stack de USB para intercambiar archivos y solo es posible hacerlo mediante flopy o .ya sea el sencillo mined o elvis que es un clon del editor vi un poco más completo pero que necesita entrenamiento previo, además deberá utilizar el compilador CC. Mediante los siguientes ejercicios. • • • Editar el la versión que aparece en el mensaje de inicio de minix y cambiarla por su numero de carnet. Cambiar la implementación de fortune para que a cada ejecución además de la frase muestre su numero de carnet (no es permitido cambiar el archivo de frases que usa fortune). Editar el código de uname para que la opción -a (ALL) se convierta a -t, y la -r (RELEASE) se convierta en -l Estas implementaciones deben de reemplazar a los ejecutables originales de Minix y deben de ubicarse de tal forma que se ejecuten como un comando normal sin necesidad de indicar toda la ruta en la shell del sistema. Ejercicio avanzado en Minix: Los cambios anteriores se hacen con el único objetivo que el estudiante se familiarice con el editor de texto y el compilador. Sin embargo son solo aplicaciones que corren en el espacio de usuario y aun no se ha modificado ningún aspecto del sistema operativo. Minix 3 tiene una arquitectura de microkernel, el microkernel administra las interrupciones, proveé mecanismos básicos de administración de procesos, implementa la comunicación entre los mismos y también planifica su ejecución. A diferencia de un kernel monolitico como Linux, en Minix todas las funcionalidades restantes se implementan en servidores, por defecto el sistema de archivos, la administración de procesos, la red y algunos otros servicios están disponibles en servidores fuera del microkernel, esta arquitectura es utilizada actualmente en sistemas operativos modernos como Windows. La estructura de Minix3 hace posible que estos servidores también manejen llamadas al sistema, como las llamadas fork o exec utilizadas en los cursos de sistemas operativos 1. La ultima tarea sera añadir una nueva llamada al sistema, escribiendo el manejador de la llamada y también una llamada al usuario. Como un ejercicio final el estudiante deberá crear una llamada al sistema do_imprimirmensaje() en el servidor de filesystem o FS, cuya única función es escribir el mensaje “Soy una llamada al sistema”. Este método es genérico y el estudiante puede elegir otro servidor de Minix si así lo desea, ademas de diseñar la llamada deber añadir la biblioteca de usuario para utilizar la llamada (biblioteca de funciones de C). Por ultimo debe hacer un programa en C que utilice esta función. Ponderación Cuestionario – 10 puntos Edición de programas de usuario – 20 puntos Implementación de la llamada al sistema – 70 puntos Ayuda Además de la ayuda que estara disponible por parte del auxiliar del laboratorio, se recomienda visitar los siguientes links: Introduction to Minix 3 (Articulo de OSNews) http://osnews.com/story.php/15960/Introduction-to-MINIX-3/ Introducción a Minix (Servidor de información de sistemas operativos – Universidad de las palmas Gran Canaria): http://sopa.dis.ulpgc.es/ii-dso/lecminix/lecminix.htm Explorador de codigo de Minix http://www.unifr.ch/diuf/pai/OS/minix_code.html Operating Systems: Design and Implementation 3/e - Andrew S. Tanenbaum y Albert S. Woodhull – Libro oficial del proyecto Minix Para comprender que son señales y llamadas: Señales POSIX (Universidad de extremadura) http://gsd.unex.es/~jdiaz/asig/dso/apuntes/signal/signal_v3.pdf Making system calls in Minix (New Mexico State University) http://www.cs.nmsu.edu/~pfeiffer/classes/474/notes/syscalls.html Observaciones • El cuestionario es requisito para la entrega de la practica • Fecha de entrega cuestionario: 7 de septiembre • Fecha de entrega: 19 de septiembre Cuestionario practica Minix 3 Basado en la practica de introducción a Minix de la Universidad Tecnologica Centroamericana – Honduras En ocasiones el estudiante tendrá que descifrar como utilizar algunos comandos. Para ello se le sugiere que utilice la documentación en línea que viene con Minix. Para ver los manuales de un comando, se hace de la siguiente forma: man (original) Por ejemplo: man ls man chmod man 2 chmod apropos chmod 1. Cambiar el password a root a “minixrules” (sin comillas), utilizando el comando: passwd luego cambie otra vez el password de root y asígnele un password en blanco, como el que tenía anteriormente. ¿Qué sucedió? 2. Cambie otra vez el password a “minixrules”, salga de la sesión poniendo el comando exit, y ahora ingrese otra vez con el usuario root, pero ponga de password: “minixrulesusac”. ¿Qué sucede? ¿Podría determinar cuál es la debilidad del manejo de passwords en este sistema operativo? Verifique el código fuente del comando passwd que se encuentra en /usr/src/commands/simple/passwd.c y explicque 3. Mediante pwd muestre cual es el directorio actual al ejecutar: ◦ # cd /usr/src ◦ # cd ◦ # cd /usr/src ◦ # cd boot ◦ # cd ¿Que explicación puede darle al resultado cuando ejecuto cd 4. Mediante whereis ubique la ruta del compiladore de c del sistema 5. Mediante cat muestre el contenido de /root/.profile y explique su funcionalidad. 6. Mediante find busque el archivo proc.c y establezca su ruta 7. Mediante grep determine que lineas que contengan la cadena “include” en el archivo /usr/src/kernel/main.c, ¿que parametro utilizo para mostrar las lineas? 8. Mediante ps determine cuantos procesos estan ejecutandose en el sistema y cuales son 9. Mediante df determine cuanto espacio libre tienen los sitemas de archivos montados actualmente en el sistema (en Kilobytes) 10. Ejecute el programa elvis ¿que atajo de teclado utilizo para salir de el editor?