viernes, 21 de septiembre de 2012

Configurar GRUB para gestionar varios Sistemas Operativos

Hace algo más de un año, en el trabajo se nos plantearon las siguientes necesidades:
  • Instalar en una máquina varios sistemas operativos.
  • Cada sistema operativo debía quedar oculto a los demás, es decir, una vez arrancado un sistema operativo no se debía poder "ver" a los otros sistemas operativos (ni datos, ni particiones, ni nada).
  • Además el acceso a cada sistema operativo debía estar protegido por usuario/contraseña.
Tras investigar durante unas cuantas noches conseguí encontrar la solución a nuestros problemas: usar Grub como gestor de arranque.

Vamos a suponer que tenemos instalados 3 sistemas operativos Microsft Windows 7: examen, diurno y tarde. Y como última partición hemos instalado Debian. Usando así las 4 particiones primarias permitidas. Obviamente otro tipo de configuración a nivel de particiones sería posible.

El archivo a editar es /boot/grub/grub.cfg
........
..........
# INICIO CREACIÓN DE USUARIOS
# Aquí añadimos los usuarios necesarios para el gestor de arranque.
# No son usuarios del SO Debian.
# La primera línea define quién será el superusuario y se le puede llamar como quiera.
set superusers="root"
password root contra1
password examen contra2
password diurno contra3
password tarde contra4
# FIN CREACIÓN DE USUARIOS

........
..........
# Entrada de arranque a Debian. Solo accesible por el superusuario
# Al final la línea (antes de la llave) añadimos --users ""
menuentry 'Debian GNU/Linux ...' ...  --users ""  {

........
..........
# Entrada de arranque a Debian (recovery mode). Solo accesible por el superusuario
# Al final la línea (antes de la llave) añadimos --users ""
menuentry 'Debian GNU/Linux (recovery mode)' ...  --users ""  {

........
..........
# Entrada de arranque a partición EXAMEN (Windows 7). Solo accesible por el usuario examen.
# Dicho sistema operativo está en el primer disco duro (hd0) y en la primera partición (1)
# Al final la línea (antes de la llave) añadimos --users "examen"
menuentry 'Windows 7 [EXAMEN]' ...  --users "examen"  {
parttool (hd0,1) hidden-
parttool (hd0,2) hidden+
parttool (hd0,3) hidden+
set root=(hd0,1)
chainloader +1
parttool ${root} boot+
boot
}

Habría que hacer lo mismo con el resto de sistemas operativos. Teniendo en cuenta que habría que modificar las particiones que ocultamos (parttool (hd0,2) hidden+) y el parámetro de arranque (set root=(hd0,1))

No puedo añadir ningún enlace a las web donde estuve investigando porque no las recuerdo, ya hace más de un año. Y llevo un tiempo queriendo escribir esta entrada antes de que se me olvidará.

domingo, 19 de febrero de 2012

Algoritmo de ruteo IP

Una duda que suele surgir cuando se empieza a estudiar el enrutamiento IP es la siguiente: "cuando llega un paquete a un router, y este tiene una ruta posible para la dirección de red y también la ruta por defecto, ¿qué criterio se sigue para dedicir que ruta usar (la de la dirección de red o la ruta por defecto)? ¿podría ser la que encuentre primero (tal vez haciendo una comprobación secuencial)?"

Se puede hacer una prueba con alguna herramienta de simulación de redes, por ejemplo NetKit o Packet Tracer, y se comprobará que la ruta por defecto es la última opción. Ahora veréis el por qué.

Buscando en libros he encontrado el "algoritmo de ruteo IP". Como es a nivel IP no depende del tipo de router, o sistema operativo (en caso de un equipo como router). El algoritmo es el siguiente:

1. Extraer dirección IP de destino y obtener el prefijo de red (partiendo de la máscara)
2. ¿Entrega directa? --> Si es afirmativo se entregan datos y FIN
3. Consultar tabla de encaminamiento, ¿existe una ruta especifica de anfitrión (host)? --> Si es afirmativo se entregan datos y FIN
4. Consultar tabla de encaminamiento, ¿existe una ruta especifica para la red de destino? --> Si es afirmativo se entregan datos y FIN
5. Consultar tabla de encaminamiento, ¿existe una ruta por defecto? --> Si es afirmativo se entregan datos y FIN
6. Si llegamos hasta aquí es que se ha producido un ERROR: "Destination host unreachable"

Puede que el punto 3 os llame la atención, el hecho de añadir una ruta especifica para un host, cuando siempre se dice que las tablas de encaminamiento contienen redes destinatarias. Bueno ésto lo explico otro día que ahora no tengo ganas, :-(

REFERENCIA:
  • "Redes globales de información con Internet y TCP/IP: Principios básicos, protocolos y arquitectura". Autor: Douglas E. Comer
¡Saludos!