Introducción a REMBO
Introducción a REMBO
Introducción a REMBO
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 />