10.05.2013 Views

Introducción a REMBO

Introducción a REMBO

Introducción a REMBO

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Introducción</strong> a <strong>REMBO</strong>


<strong>Introducción</strong> a Rembo<br />

● Es un sistema de arranque remoto que permite<br />

arrancar / clonar máquinas usando recursos de un<br />

servidor remoto.<br />

● Aumenta la seguridad del sistema.<br />

● Página oficial de Rembo:<br />

www.rembo.com<br />

● Página oficial Sourceforge (Asistentes):<br />

http://rembowiz.sourceforge.net/


Requisitos del cliente<br />

● Sistema Operativo: MS-DOS, Windows 9x, Windows<br />

NT/2000/XP, Linux.<br />

● Tarjeta de red con boot ROM PXE.<br />

● Caché en disco local con tamaño adecuado para<br />

almacenar las imágenes (opcional, recomendado).<br />

● El resto de los pcs donde vayamos a descargar las<br />

imágenes deben ser idénticos al pc modelo


Requisitos del servidor<br />

● Sistema Operativo: Windows NT/2000, Linux (x86),<br />

Solaris (Para máquinas SUN Sparc).<br />

● Servidor DHCP funcionando (ya sea en la misma<br />

máquina o en otra distinta).<br />

● Espacio en disco para almacenar imágenes.


Arquitectura PXE<br />

●Permiten realizar arranque remoto.<br />

PETICION DHCP<br />

RESPUESTA DHCP<br />

Cliente con PXE Servidor DHCP


Secuencia de arranque<br />

● Encender el ordenador.<br />

● Cargar ROM de la tarjeta de red.<br />

● Descubrir dirección IP.<br />

● Descubrir servidor de arranque.<br />

● Conexión NBP (Network Boot Program).<br />

● Configuración de arranque (Pre-os).<br />

● Arrancar el SO.


Aplicaciones de Rembo<br />

● Reducir costes y acelerar la instalación y el<br />

mantenimiento del software.<br />

● Conmutar entre diversos SO sin tener que recargar el<br />

software.<br />

● Restaurar rápidamente SO corruptos.


Creación y Restauración de una Imagen Básica<br />

● CREACION:Clonación de una de las particiones del<br />

disco de ordenador de referencia<br />

w2k.base Servidor<br />

Cliente 1 Cliente 2 Cliente 3<br />

W2K W2K W2K


Creación y Restauración de una Imagen Incremental Básica<br />

● Imagen incremental: diferencia entre dos sistemas de<br />

ficheros<br />

w2k.base<br />

winzip.diff<br />

Servidor<br />

w2k.base<br />

winzip.diff<br />

Cliente 1<br />

Cliente 2<br />

W2K W2K<br />

+ winzip + winzip<br />

winzip.diff<br />

Cliente 3<br />

W2K + Winzip


Creación y Restauración de una Imagen Incremental Avanzada<br />

● Imagen incremental avanzada: fusión de una imagen<br />

base con dos o mas imágenes incrementales<br />

w2k.base<br />

winzip.diff<br />

norton.diff<br />

Servidor<br />

Cliente 1<br />

Cliente 2<br />

W2K W2K<br />

+ winzip<br />

+ norton<br />

+ winzip<br />

norton.diff<br />

Cliente 3<br />

W2K + Norton


Acceso a ficheros mediante Rembo<br />

disk<br />

floppy<br />

cdrom<br />

net<br />

cache<br />

reg<br />

arch<br />

link<br />

Disco duro local<br />

Unidad de disco floppy local<br />

Disco cd-rom<br />

Fichero remoto accedido a traves de NETfs<br />

Fichero remoto accedido a traves de la partición cache local<br />

Registro Windows NT<br />

Archivo de imagen de disco de Rembo(solo lectura)<br />

Sistema de archivos virtual Rembo


Instalando el DHCP


Instalación del servidor DHCP<br />

En el momento de la instalación del SO:<br />

● Elegimos instalar el demonio DHCP<br />

● Al arrancar el SO se cargará el demonio<br />

● Crearemos el archivo /etc/dhcpd.conf<br />

● Creamos una configuración personalizada<br />

editándolo<br />

● Reiniciamos el demonio DHCP con el comando<br />

service dhcpd restart


Instalación del servidor DHCP<br />

En un sistema ya instalado:<br />

● Instalamos el paquete dhcp-3.0.1-40_FC3.rpm:<br />

rpm –Uhv dhcp-3.0.1-40_FC3.rpm<br />

● Copiamos dhcpd.conf.sample que está en el<br />

directorio /usr/share/doc/dhcp-3.0.1-40_FC3 a<br />

/etc/dhcpd.conf<br />

● Editamos el dhcpd.conf y creamos una configuración<br />

personalizada<br />

● Para cargar el servicio cuando arranque la máquina,<br />

ejecutamos:<br />

chkconfig --add dhcpd


Instalación del servidor DHCP<br />

● Para que se inicie el servicio, reiniciamos o<br />

ejecutamos:<br />

service dhpcd start<br />

● Comprobamos que el servicio está activo:<br />

ps –ef | grep dhcpd


Configuración del servidor DHCP y Rembo en máquinas distintas<br />

Servidor Rembo<br />

Servidor DHCP<br />

● Eliminar opciones 43<br />

y 60 del servidor<br />

DHCP.


Configuración del servidor DHCP y Rembo en la misma máquina<br />

● Eliminar opción 43 si está en el servidor DHCP.<br />

● Colocar la opción 60 a “PXEClient”.<br />

Servidores DHCP y<br />

Rembo en la misma<br />

máquina


Configuración del servidor en Linux (I)<br />

● Servidor ISC DHCP 3.0 :<br />

deny unknown-clients;<br />

not authoritative;<br />

ddns-update-style ad-hoc;<br />

subnet 10.1.24.0 netmask 255.255.252.0 {<br />

next-server 10.1.25.142;<br />

option vendor-class-identifier "PXEClient";<br />

option routers 10.1.24.1;<br />

option subnet-mask 255.255.252.0;<br />

#pc curso rembo<br />

}<br />

host pcsic2-cr135 {<br />

hardware ethernet 00:0C:76:29:05:C6;<br />

fixed-address 10.1.25.135;<br />

option host-name "pcsic2-cr135";<br />

}


Configuración de los clientes para usar DHCP (II)<br />

● En Fedora Core 3:<br />

Abrir una consola de comandos.<br />

– Ejecutar netconfig.<br />

– Indicar que se quiere utilizar DHCP para tomar<br />

los parámetros de arranque.


Configuración de los clientes para usar DHCP (III)


Instalación de <strong>REMBO</strong>


Instalación de Rembo en Linux<br />

● Extraemos el contenido del paquete LinuxRembo-Toolkit-<br />

Install-v2-0-5.tar.gz al directorio /usr/local:<br />

tar –xzvf LinuxRembo-Toolkit-Install-v2-0-5.tar.gz<br />

● Creamos un enlace simbólico del directorio de instalación<br />

rembo-2.0 a rembo:<br />

ln -s rembo-2.0 rembo<br />

● Copiamos la clave de registro rembo-v2.key al directorio<br />

de Rembo y la renombramos como rembo.key.


Instalación de Rembo en Linux (II)<br />

● Realizamos una configuración mínima del servidor:<br />

# Directorio base de rembo<br />

BaseDir "/usr/local/rembo"<br />

# Contraseña de acceso al servicio rembo<br />

NetPassword "cursorembo"<br />

# IP del servidor rembo<br />

Interfaces 10.1.25.117<br />

GROUP cursorembo {<br />

StartPage "cache://global/rembo.shtml"<br />

Options unicast<br />

Host 10.1.25.135<br />

}<br />

NOTA: Es importantísimo eliminar el grupo “default” para evitar que pcs no definidos en nuestro<br />

servidor se incluyan en dicho grupo.


Instalación de Rembo en Linux (III)<br />

● Arrancamos Rembo :<br />

rembo –d –v 4<br />

● Editamos el fichero srvfiles.nc que está en el directorio<br />

de rembo:<br />

open 127.0.0.1 cursorembo<br />

● Tranferimos los archivos del servidor:<br />

./misc/netclnt srvfiles.nc


Instalación de Rembo en Linux (IV)<br />

● Comprobamos la configuración ejecutando<br />

rembo –d –v 2<br />

● Para arrancar Rembo automáticamente copiamos:<br />

/misc/initd a /etc/rc.d/init.d/rembo<br />

● Ejecutamos chkconfig para añadir el servicio:<br />

chkconfig --add rembo<br />

● Arrancamos el servicio <strong>REMBO</strong>:<br />

service rembo start<br />

● Comprobamos que el servicio <strong>REMBO</strong> está activo:<br />

ps -ef | grep rembo


Trabajando con los<br />

diferentes Sistemas<br />

Operativos


Consideraciones Generales<br />

● Elección de una o varias máquinas que sirvan de<br />

“modelo” para nuestros equipos.<br />

● Estudio del tamaño necesario para las distintas<br />

particiones.<br />

● Dejar espacio sin particionar para la partición cache<br />

(opcional, recomendable).<br />

● Dar valores a los parámetros de red: obtención de IP<br />

mediante DHCP, nombre del equipo, grupo de trabajo,<br />

dominio, etc...


Página de Inicio (Creando Imágenes de Windows 2000)<br />

<br />

void Crear_windows (void) {<br />

// Salvamos el sector de arranque en el servidor<br />

var bootsect = DevReadBootSects("disk://0:0");<br />

SaveFile(bootsect,"cache://global/hdimages/windows.mbr");<br />

// Creamos Imagen Virtual de la partición de Windows<br />

CreateVirtualImage("nt","disk://0:1");<br />

// Eliminamos ficheros innecesarios de la Imagen Virtual<br />

if (FileExists("link://nt/pagefile.sys"))<br />

RemoveFile("link://nt/pagefile.sys");<br />

// Eliminamos versiones antiguas de la Imagen<br />

if(FileExists("cache://global/hdimages/windows.base"))<br />

RemoveFile("cache://global/hdimages/windows.base");<br />

}<br />

// Creamos la imagen a partir de la Imagen Virtual<br />

Synchronize("link://nt",<br />

"cache://global/hdimages/windows.base","");<br />

// Liberamos la Imagen Virtual<br />

FreeVirtualImage("nt");


Página de Inicio (Restaurando Imágenes de Windows 2000)<br />

void Restaurar_windows (void) {<br />

// Establecemos las particiones del disco duro<br />

SetPrimaryPartitions(0,"NTFS:10000000 EXT2:10000000 LINUX-SWAP:512000 EMPTY:0");<br />

// Restauramos el MBR usando el fichero que hemos guardado en el servidor cuando<br />

creamos la imagen<br />

DevWriteBootSects("disk://0:0",LoadFile("cache://global/hdimages/windows.mbr"));<br />

// Establecemos la particion activa<br />

SetBootablePartition(0,1);<br />

// Formateamos la particion<br />

var devinfo = DeviceGetInfo("cache://global/hdimages/windows.base");<br />

if (typeof(devinfo) != "nil")<br />

else<br />

DeviceCleanEx("disk://0:1",devinfo);<br />

HDClean(0,1);<br />

// Restauramos la imagen en la particion correspondiente<br />

Synchronize("cache://global/hdimages/windows.base","disk://0:1","b");<br />

// Establecemos opciones del sistema operativo<br />

NTLocation = "disk://0:1";<br />

NTDetect();<br />

// Actualizamos informacion real sobre las particiones y registro de<br />

disco duro<br />

join(Exec("cache://global/plugins/ata.rbx"));<br />

Win2KRegisterHDD(false);<br />

Win2KRegisterParts();<br />

// Cambiamos el nombre del pc<br />

var ipa = StrParse(NetInfo.IPAddress,".");<br />

str hostname = "PC-"+ipa[3];<br />

NTChangeName(hostname);<br />

// Arrancamos w2000<br />

HDBoot(0,1);<br />

}


Página de Inicio (Creando Imágenes de Linux)<br />

void Crear_Linux (void) {<br />

// Salvamos el sector de arranque en el servidor<br />

var bootsect = DevReadBootSects("disk://0:0");<br />

SaveFile(bootsect,"cache://global/hdimages/linux/linux.mbr");<br />

// Eliminamos versiones antiguas de la imagen<br />

if (FileExists("cache://global/hdimages/linux.base"))<br />

RemoveFile("cache://global/hdimages/linux.base");<br />

// Creamos la imagen de la partición de linux<br />

BuildDiskImage(0,2,"cache://global/hdimages/linux/linux.base");<br />

// Copiamos el kernel y el fichero fstab al servidor<br />

CopyFile("disk://0:2/boot/vmlinuz-2.4.18-3","cache://global/hdimages/linux.krn");<br />

CopyFile("disk://0:2/etc/fstab","cache://global/hdimages/linux.fstab");<br />

}


Página de Inicio (Restaurando Imágenes de Linux)<br />

void Restaurar_Linux (void) {<br />

// Particionamos<br />

SetPrimaryPartitions(0,"NTFS:10000000 EXT2:10000000 LINUX-SWAP:512000 EMPTY:0");<br />

// Restauramos el sector de arranque<br />

DevWriteBootSects("disk://0:0",LoadFile("cache://global/hdimages/linux.mbr"));<br />

// establecemos la partición activa<br />

SetBootablePartition(0,2);<br />

// Formateamos la partición<br />

var devinfo = DeviceGetInfo("cache://global/hdimages/linux.base");<br />

if (typeof(devinfo) != "nil")<br />

else<br />

DeviceCleanEx("disk://0:2",devinfo);<br />

HDClean(0,2);<br />

// Restauramos la imagen de linux<br />

Synchronize("cache://global/hdimages/linux.base","disk://0:2","b");<br />

// Arrancamos desde la partición de linux<br />

LXBoot("cache://global/hdimages/linux.krn","","root=/dev/hda2”);<br />

}


Página de Inicio (Arrancando Windows 2000 y Linux)<br />

void Arrancar_windows (void) {<br />

// Arrancamos desde la partición de Windows<br />

HDBoot(0,1);<br />

}<br />

void Arrancar_Linux (void) {<br />

// Formateamos la partición de swap<br />

HDClean(0,3);<br />

// Arrancamos desde la partición de linux<br />

LXBoot("cache://global/hdimages/linux.krn","","root=/dev/hda2”);<br />

}


Página de Inicio (Creando Imágenes Incremetales de Windows 2000 y<br />

Linux)<br />

voidCrear_inc_windows (void) {<br />

// Creamos el fichero de log para la incremental<br />

TextDiff("disk://0:1",<br />

"cache://global/hdimages/windows.base",<br />

"cache://global/hdimages/winzip/winzip.log",true);<br />

// Creamos la imagen incremental<br />

}<br />

MakeDiffFromText(<br />

"disk://0:1",<br />

"cache://global/hdimages/windows.base",<br />

"cache://global/hdimages/winzip/winzip.log",<br />

"cache://global/hdimages/winzip/winzip",true);<br />

voidCrear_inc_Linux (void) {<br />

// Creamos la imagen incremental<br />

}<br />

Synchronize("disk://0:2”,<br />

"cache://global/hdimages/linux.base",<br />

">cache://global/hdimages/openoffice.diff);


Página de Inicio (Restaurando Imágenes Incremetales de Windows 2000 y<br />

Linux)<br />

void Restaurar_inc_windows (void){<br />

// Restauramos la imagen incremental<br />

ApplyDiff<br />

("cache://global/hdimages/winzip/winzip","disk://0:1",true);<br />

}<br />

}<br />

void Restaurar_inc_Linux (void){<br />

// Abrimos los archivos de imágenes<br />

OpenArchive("base","cache://global/hdimages/linux.base");<br />

OpenArchive("diff","cache://global/hdimages/openoffice.diff");<br />

// Creamos una imagen virtual de la imagen base<br />

CreateVirtualImage("lx","arch://base");<br />

// Unimos la imagen incremental y la imagen virtual<br />

LinkTree("link://lx","arch://diff");<br />

// Sincronizamos la imagen virtual con el disco<br />

Synchronize("link://lx","disk://0:2","b");<br />

// Liberamos recursos<br />

FreeVirtualImage("lx");<br />

CloseArchive("diff");<br />

CloseArchive("base");


Página de Inicio (Definiciones)<br />

// Definicion del teclado<br />

Keyb("es");<br />

// Cargar libreria utiles<br />

Exec("net://global/plugins/utils.rbx");<br />

// Opcion administrador por hosts<br />

if (FileExists ("net://host/admin")) {<br />

Log (NetInfo.MACAddress + " entra en modo administrador.");<br />

join(Exec("net://global/plugins/admin.rbx"));<br />

}<br />

// Opcion administrador por grupos<br />

if (FileExists ("net://group/admin")) {<br />

Log (NetInfo.MACAddress + " entra en modo administrador.");<br />

join(Exec("net://global/plugins/admin.rbx"));<br />

}<br />

// Teclado, vídeo, mapa caracteres ...<br />

SaveText("white", "display://root/color");<br />

str DefVideoMode;<br />

str DefKeyMap;<br />

str DefCodeMap;<br />

var BasicErrorHandler(var exc) { return exc; }<br />

with(BasicErrorHandler) try {<br />

// Aplicar la configuración por defecto de los asistentes<br />

if(DefVideoMode != "")<br />

else<br />

Settings.VideoMode = DefVideoMode;<br />

Settings.VideoMode = "800x600";<br />

if(DefKeyMap != "")<br />

Keyb(DefKeyMap);<br />

if(DefCodeMap != "")<br />

CodePage((int)DefCodeMap); }


Página de Inicio (Menú de Inicio)<br />

// Menú de Inicio<br />

var ventana = OpenMenu("menu",40,15,<br />

} );<br />

"Menu de Imagenes"<br />

"B {font-weight: normal; color: navy}"<br />

"",<br />

{<br />

{"Arrancar con W2000","win2000.pcx","Arrancar_windows();"},<br />

{"Instalar Windows 2000","win2000.pcx","Restaurar_windows();"},<br />

{"Arrancar con Linux","linux.pcx","Arrancar_Linux();"},<br />

{"Instalar Linux","linux.pcx","Restaurar_Linux();"}<br />

<br />

<br />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!