guía para la instalación de minix e inserción de una línea de código en kernel
DESCRIPTION
Esta es una guía para instalar el Sistema Operativo MINIX 3, cuenta con impresiones de pantalla para facilitar la instalación del sistema y la inserción de una línea de código sobre el kernel del sistema.TRANSCRIPT
Guía para la instalación de MINIX e inserción de una línea de código en kernel
1 8 / 0 6 / 2 0 1 1
Quethzelovski
Esta es una pequeña guía en español que trata de
explicar de manera sencilla como instalar el Sistema
Operativo MINIX 3, esta guía está enfocada al usuario
poco experimentado en sistemas sin interfaz gráfica,
por lo que cuenta con impresiones de pantalla para
facilitar la instalación del sistema y la inserción de una
línea de código sobre el kernel del sistema MINIX 3.
l i n u x _ 0 0 @ l i v e . c o m . m x
Página | 1
MINIX
Introducción a MINIX…………………………………………………..2
Instalación del S.O. MINIX (modo automático)…..……….3
Listado de algunos comandos en MINIX……………………..9
Modificación del código fuente del núcleo MINIX……..12
Anexos………………………………………………………………………20
Página | 2
Introducción
MINIX (mini UNIX) es un sistema operativo (variante de UNIX) que es
distribuido junto con su código fuente, fue desarrollado por el profesor
Andrew S. Tanenbaum en lenguaje de programación C; con la finalidad de
enseñar a sus alumnos el diseño de sistemas operativos de la forma más
comprensible para el estudiante, es por eso que el código fuente de MINIX
incluye miles de comentarios.
Actualmente MINIX 3 soporta sólo arquitecturas derivadas de IA-32, y está
disponible en LiveCD, y en versiones compatibles con sistemas de
virtualización como BOCHS, Qemu, VMware, VirtualPC y VirtualBox.
MINIX 3 está disponible desde la página oficial www.minix3.org, donde
también puedes encontrar un listado de todos los comandos de Minix, su
sintaxis, guías e información detallada y competa sobre este sistema.
Página | 3
Instalación Del Sistema Operativo Minix (automático)
La instalación de Minix 3(versión 3.1.8) será sobre una máquina virtual de
Oracle VirtualBox (versión 4.0.8), disponible desde su página oficial
http://www.virtualbox.org/
Asumiendo que el usuario ya tiene instalado en su equipo un sistema de
virtualización (VirtualBox). Comenzamos por crear una nueva máquina
virtual con características similares a las que se muestran a continuación:
Memoria RAM: 512 MB
Disco Duro Virtual: 1.0 GB
Hay dos formas de instalar MINIX 1.- Manualmente: Donde como primer paso debes generar las particiones donde se cargara el sistema operativo Minix, para despues subparticionarla para root y usr, generar el filesystem para usr, llenarlo con los comandos básicos y dejarlo activo en lugar del filesystem de tu ISO o disquete, generar el filesystem para root, Cambiar las variables de booteo del monitor de Minix, etc.
2.- Automatico: Selecciones preconfiguradas. Por razones de tiempo y
conocimiento utlizaremos el modo automatico.
A continuación se muestra la pantalla de inicio de MINIX 3
Página | 4
minix login: root /entramos como root (véase Anexo 1)
# setup /ejecutamos el comando setup para dar
inicio a la instalación
Después de ejecutar el comando setup, Minix te muestra unas notas que
te pueden ser de utilidad en el futuro, es recomendable que se lean.
Después de leerlas presionamos la tecla Enter e indicamos nuestro tipo de
teclado entre las opciones que se muestran en pantalla.
Keyboard type? [us-std] Spanish
Página | 5
Para crear las particiones en modo automático presionamos la tecla Enter.
Antes de continuar con la partición te pedirá que elijas el disco donde se
instalara el sistema.
Presionando la tecla Enter indicamos que deseamos instalar minix en el
disco [0] , si tuvieramos mas de un disco entoces hay que indicar el
numero del disco en que deseamos instalar el sistema.
Ahora selecciona que porcentaje de tu disco utilizara Minix. Puedes indicar el tamaño en MB y a continuación presionar Enter o solo presionar Enter y usar el disco entero. Una vez que tengas definido el espacio para tu sistema teclea “yes” o presiona Enter.
Después te pedirá que indiques el espacio en disco que deseas tener en
/home (automáticamente te recomienda una cantidad en MB, pero la
puedes cambiar si lo deseas). Cuando tengas la cantidad de espacio que
quieres para el directorio /home. Presiona Enter, enseguida te pedirá que
confirmes la cantidad de espacio en el directorio /home, si estás de
acuerdo con la cantidad presiona Enter nuevamente.
Página | 6
Nuevamente te recomineda un tamaño para los bloques del sistema de
archivos (vese Anexo 2), presionamos Enter para continuar.
Ahora solo espera a que minix carge todos los archivos nesesarios.
Una vez que termine de cargar los archivos. Muestra una lista de las
tarjetas de Ethernet soportadas por el sistema.
Página | 7
Las tarjetas PCI detectadas por el sistema están marcadas con un asterisco
(*). Te pedirá que selecciones una. En este caso solo detecta una tarjeta
por lo que es la única opción a elegir, en caso de tener más de una teclea
el número de la tarjeta que deseas elegir. Seguido de esto te preguntara
como quieres configurar la red; usando el protocolo de internet DHCP
(véase Anexo 3) o si deseas hacerlo manualmente. En esta guía usaremos
el protocolo DHCP para configurar la red.
Ahora solo reiniciamos la máquina virtual y desactivamos la opción de
unidad anfitrión en el menú de nuestra máquina virtual para que cargué el
sistema desde el disco duro donde está instalado Minix, y no desde una
unidad externa (CD, DVD, Diskette, ISO, etc.)
Página | 8
En este momento ya tenemos instalado el sistema operativo Minix 3
donde nuevamente te pedirá que inicies sesión (login).
Al igual que en el comienzo iniciamos sesión como root y presionamos
Enter enseguida se mostrara el símbolo gato (#). Con lo que indica que ya
puedes comenzar a usar el sistema.
Antes de comenzar con la modificaicon del codigo fuente de Minix, es
recomendable que revise la siguiente lista de comando para familiarisarce
con algunos de los comandos que utilizaremos durante la modificacion del
codigo fuente.
Página | 9
Listado De Algunos Comandos En MINIX
USUARIOS
man <comando> muestra el manual de ayuda para el comando
escrito.
clear permite limpiar la pantalla. pwd muestra el directorio donde el usuario está posicionado actualmente.
who muestra una lista de los usuarios logueados actualmente. Para cada usuario se muestra el nombre, terminal y la cantidad de tiempo transcurrido desde que se logueó. Por defecto la información se extrae desde el archivo /etc/utmp.
who am i indica el usuario, la consola y la fecha en que se logueó el usuario que lanza este comando. su permite loguearse temporalmente como superusuario (root).
adduser agrega un nuevo usuario.
passwd cambia la password del usuario. id muestra datos de identificación del usuario.
finger muestra información de usuario.
write manda un mensaje a la pantalla de un usuario.
mail programa de correo.
talk establecer una charla con otro usuario.
banner saca letrero en la pantalla.
set da información sobre el entorno del usuario.
chown cambia el propietario de un fichero.
Página | 10
PROCESOS
ps muestra la lista de procesos del usuario.
kill <PID> Mata el proceso especificado por PID.
DISCOS
mount monta un disco.
umount desmonta un disco.
df muestra el espacio libre de los discos.
du muestra el espacio usado por el disco o un directorio.
mkfs formateo un disco.
fsck estado del disco.
fdisk gestión de particiones.
SISTEMA
rlogin se conecta a otra máquina de forma remota (remote login).
rsh se conecta a otra máquina de forma remota (remote shell).
ftp se conecta a otra máquina por el protocolo ftp.
host muestra la dirección IP del servidor en una red local.
reboot reinicia la máquina.
halt para el sistema.
shutdown apaga el sistema.
exit cierre de sesión actual.
uptime muestra el tiempo transcurrido de encendida la máquina.
df muestra la cantidad de espacio en disco.
date muestra fecha y hora actual.
Página | 11
cal muestra calendario.
lspci muestra los periféricos conectados al puente pci.
RED
netstat muestra estado de la red
ifconfig muestra la configuración del dispositivo de red
iwconfig muestra la configuración del dispositivo de red inalámbrico
netconf configuración de la red.
GESTION DE ARCHIVOS
cd cambia de directorio.
ls lista el contenido del directorio actual.
more permite visualizar archivos.
cp copia un archivo a otro, o copia uno o más archivos a un directorio.
mv mueve o renombra un archivo.
mkdir permite crear directorios. rm remueve uno o más archivos. rmdir permite eliminar directorios.
OTROS
ctrl+d final de archivo EOF – cancela.
ctrl+c termina proceso en ejecución – cancela.
Alt+F1 F2 cambio de consola.
Página | 12
Modificación Del Código Fuente Del Núcleo MINIX
El cambio que vamos a realizar en el código fuente será simplemente
añadir un mensaje que aparecerá cuando arranquemos el sistema Minix.
El mensaje a introducir deberá aparecer antes de iniciar sesión (login).
La pantalla de inicio deberá ser como la que se muestra a continuación.
Iniciamos sesion como root. (para poder tener todos los derechos)
comenzamos por introducir el siguiente comando:
cd /usr/src/kernel
Con este comando indicamos que cambie al directorio /usr/src/kernel.
Ahora comprobamos que estemos en el directorio deseado con el
comando:
pwd
Nos muestra el directorio donde nos encotramos actualmete en este caso
debe mostrar la siguiente linea.
/usr/src/kernel
#
Página | 13
No es necesaria esta comprobacion ya que si introducimos un directorio
que no existe nos aparecera el mensaje “not found”, en este caso solo
lo hicimos para serciorarnos de que nos encontramos en el direcorio
correcto y que podemos continuar con el siguiente paso.
Tecleamos el siguiente comando.
ls
Nos muestra el contenido del directorio actual.
Si has seguido correctamente estos pasos deberas estar visualizando una
terminal como la siguiente.
Una ves que nos muestre en pantalla la lisa de los ficheros que contiene el
directorio en el que nos encontramos. Editamos el fichero llamado main.c
que es donde insertaremos nuestro mensaje de bienvenida. Para esto
escribimos el comando mined (vease Anexo 4) seguido del fichero a editar
como se muestra a continuacion.
mined main.c
Una vez tecleado el comando anterior sera desplegado en terminal el contenido del fichero.
Página | 14
Ya estando dentro del fichero main.c, nos moveremos dentro de el
mediante las flechas de direccion. Lo que vamos ha hacer es desplazarnos
por el fichero hacia la parte de abajo hasta llegar al encavezado
announce.
El mensaje lo introduciremos debajo del último printf. Nuestro mensaje de bienvenida devera ser escrito de la siguiente forma: printf(“Escribe tu Mensaje\n”);
El mensaje que escribí fue el siguiente:
“Esta linea de código fue escrita por Quethzel”
Página | 15
El mensaje que visualizaremos en la terminal al arrancar el sistema, antes
de iniciar sesión será el hayamos escrito en: “Escribe tu
Mensaje”. Las comillas si son necesarias en esta ocasión.
Ya escrito nuestro mensaje de bienvenida, salimos del editor presionando
la siguiente combinación de teclas. Ctrl-x (mantén presionada la tecla
Ctrl luego presiona la tecla guion (–) y después presiona la tecla x).
Después de esta combinación de teclas se desplegara en la terminal la
siguiente línea:
main.c has been modified. Save? (y/n)
Presionamos la teclea y para guardar los cambios realizados en el fichero
y se desplegara otra línea de código que menciona los cambios en nuestro
fichero, que será como la siguiente.
Página | 16
Wrote main.c 332 lines 12009 chars. Line 298
Una vez modificado el fichero hay que compilarlo. Existen varias maneras
de hacer la compilación, si queremos hacer una compilación completa
podemos utilizar el comando make programs en el directorio tools, si
se quiere compilar por modulos podemos utilizar el comando
make<modulo> donde modulo puede ser boot, kernel, fs, etc.
Como podemos observar hay varias formas de compilación, en esta guía
usaremos el comando make install, antes de compilar debemos
dirigirnos al directorio /usr/src/tools usando el comando cd, como
se muestra en la siguiente línea.
cd /usr/src/tools
Ahora procedemos a realizar la compilación tecleando el siguiente
comando:
make install (véase Anexo 5)
Después de teclear el comando anterior comenzara la compilación, esto puede tardar unos minutos. (La siguiente imagen muestra el inicio de la compilación y los comandos tecleados anteriormente, los que tienen # son los tecleados por el usuario, todos los demás son las respuestas obtenidas a los comandos)
Página | 17
Cuando termine este proceso de compilación, puede ocurrir alguna de estas opciones: 1.- Si la compilación es correcta el sistema mostrara en terminal el siguiente símbolo #
2.- Si al momento de compilar ocurrió un error causado por alguna línea de código que hayamos insertado incorrectamente obtendremos un * o un mensaje de error.
Página | 18
Si el resultado de la compilación fue exitoso, deberás estar visualizando
una terminal como la mostrada en la imagen anterior.
La imagen de nuestro nuevo kernel generado se guardara
automáticamente en el directorio /boot/image.
Ahora solo paramos el sistema y lo reiniciamos con los siguientes comandos.
halt /detiene el sistema reboot /reinicia el sistema
Si al introducir el comando reboot te muestra la siguiente línea de código.
unknow function
Teclea este comando.
Boot /arranca el sistema
A partir de ahora cuando inicies Minix se mostraran dos imágenes de
kernel. La original y la modificada. Por default cargara con la 2da. (La que
fue modificada), si queremos iniciar con la imagen del kernel original, al
iniciar Minix presiona 1.
Página | 19
Al cargar el sistema tu terminal deberá ser parecida a esta, en donde ya se
encuentra el mensaje de bienvenida que introducimos.
Página | 20
Anexos
Anexo 1.- En sistemas operativos del tipo Unix, root es el nombre convencional de la
cuenta de usuario que posee todos los derechos en todos los modos (mono o multi
usuario). root es también llamado superusuario. Normalmente esta es la cuenta de
administrador. El usuario root puede hacer muchas cosas que un usuario común no
puede, tales como cambiar el dueño o permisos de archivos y enlazar a puertos de
numeración pequeña. No es recomendable utilizar el usuario root para una simple
sesión de uso habitual, ya que pone en riesgo el sistema al garantizar acceso
privilegiado a cada programa en ejecución. Es preferible utilizar una cuenta de usuario
normal y utilizar el comando su para acceder a los privilegios de root de ser necesario.
Anexo 2.- En el file system es habitual utilizar dispositivos de almacenamiento de datos
que permiten el acceso a los datos como una cadena de bloques de un mismo tamaño,
a veces llamados sectores, usualmente de 512 bytes de longitud. El software del
sistema de archivos es responsable de la organización de estos sectores en archivos y
directorios y mantiene un registro de qué sectores pertenecen a qué archivos y cuáles
no han sido utilizados
Anexo 3.- DHCP (Dynamic Host Configuration Protocol - Protocolo de Configuración
Dinámica de Host) es un protocolo de red que permite a los clientes de una red IP
obtener sus parámetros de configuración automáticamente. Se trata de un protocolo
de tipo cliente/servidor en el que generalmente un servidor posee una lista de
direcciones IP dinámicas y las va asignando a los clientes conforme éstas van estando
libres, sabiendo en todo momento quién ha estado en posesión de esa IP, cuánto
tiempo la ha tenido y a quién se la ha asignado después.
Anexo 4.- mined es un editor para terminales basado en texto. Tiene soporte para
Unicode y CJK y está publicado bajo licencia GPL. Fue diseñado por Andy Tanenbaum y escrito por Michiel Huisjes, siendo originalmente un simple editor de texto plano para minix en los años 80. Ahora está disponible para otras plataformas, Unix, Linux, Windows y MS-DOS. Suele estar incluido en varios sistemas unix-like. Fue el primer editor de texto para terminales que tuvo soporte para Unicode.
Mined dispone de menús y posee soporte para mouse. Las combinaciones de teclas están pensadas para un uso rápido e intuitivo. Tiene algunas características que solo están presentes en procesadores de texto.
Página | 21
Anexo 5.- El comando make install
make Este comando cuenta con un fichero llamado makefiles, dentro de este se
encuentran un conjunto de reglas de compilación, y es capaz de saber que hay compilar, que hay que recompilar y en qué orden debe realizarlo. Después de esto genera todas las diferentes partes del kernel y las une en un archivo llamado image.
install Este comando funciona después que make ha hecho su trabajo sin
errores. Lo que hace es copiar los archivos del programa ya compilados a las
localizaciones predeterminadas.