Realització
de les imatges
Per Antoni Giribet i Pané
agiribet@etse.urv.es
La realització de l’imatge en si no és una part excessivament complicada, però si en la que tenim que acomplir una sèrie de requisits importants.
Podríem dir que tenim bàsicament dos casos:
L’altra opció seria que tinguéssim el conjunt de maquines
que formen un laboratori o aula amb hardware en un
entorn heterogeni, es a dir, que les seves característiques de hardware
fossin diferents. Llavors ens trobaríem amb
detecció de hardware al restaurar l’imatge als diferents clients.
En canvi, en el següent
cas, generarem l’imatge sobre el clients que siguin més nombrosos.
En la restauració tindrem una detecció de hardware en els
client que siguin diferents a la màquina que hem generat l’imatge.
Aleshores tindrem que deixar que reconegui tot el hardware nou que trobi
en cada una de les màquines i una vegada ja no reconegui més
hardware, agafar la branca de hardware específic de cada màquina
i exportar-lo al servidor per que en el moment de restaurar l’imatge, agafi
per cada màquina la seva branca corresponent. La detecció
de hardware bàsicament passa als sistemes operatius Windows.
Un altre requisit important
es que l’imatge te que estar el més neta possible i optimitzada.
Amb el que es refereix a "més neta possible", entenem no tenir més
software que el necessari. Per l’optimització, entendríem
tenir tots els parches aplicats, en Windows98 tenir el disc defragmentat
i, per exemple, tenir la paperera buida, ja que si deixem algun fitxer
a la paperera al restaurar l’imatge a tots els clients tindrem aquest fitxer
a la paperera.
Ens centrarem en l’explicació
del primer cas (tot el conjunt de maquines amb el mateix hardware), ja
que la detecció del hardware bàsicament es dona en sistemes
operatius Windows9X.
En l’altre cas també
explicarem com exportar la branca HKEY_LOCAL_MACHINE
del registre de cada client, per no tenir que cada cop que restaurem l’imatge,
la repetició en la detecció de hardware.
Podríem dividir
l’explicació en els punts necessaris per la correcta generació
de les imatges i amb els diversos sistemes operatius, comentant el parxeig
necessari, que òbviament serà diferent per cada sistema operatiu.
En l’actualitat, en
les aules i laboratoris de la ETSE/ETSEQ hi ha generació d’imatges
de diversos sistemes operatius com són: MS-DOS, WINDOWS 3.11, WINDOWS
95/98, WINDOWS NT WORKSTATION amb sistema de fitxers FAT16 (NTFS no està
suportat) i LINUX.
PUNTS GENERALS
Instal·lació de tot el software i correcta configuració
de tots els elements de hardware en la màquina en la que volem fer
l’imatge. Imatge neta i optimitzada.
Abans de generar l’imatge tenim que aplicar el parxeig corresponent que
serà diferent per cada tipus de sistema
operatiu que tinguem.
MS-DOS
| hidelog
CloseGraph clear clean 0 setpartitions "BIGDOS:500" setbootpart 1 fullunzip "/tftp/imatges/deeea/labe1/infind.imz" 1 patch "{:1}NET/SYSTEM.R95" "{:1}NET/SYSTEM.INI" patch "{:1}NET/PROTOCOL.R95" "{:1}NET/PROTOCOL.INI" hidebootprom hdboot :1 |
Els fitxers SYSTEM.INI
i PROTOCOL.INI
són els fitxers de sistema utilitzats en el tema de la configuració
de xarxa i on també tenim des de la configuració de la porta
d’enllaç (gateway), la màscara, el grup al que pertany, el
nom del host i l’adreça IP que li correspon.
Bàsicament el
que més ens interessa en el parxeig d’imatges basades amb sistemes
operatius MS-DOS és l’adreça IP del client, que el servidor
ens proporcionarà mitjançant la variable BOOTP-Your-IP
que tindrem en el fitxer SYSTEM.R95
i que substituirà al fitxer SYSTEM.INI
amb el seu valor assignat.
| [network.setup]
version=0x3110 netcard=ms$ne2clone,1,MS$NE2CLONE,1 transport=tcpip,TCPIP lana0=ms$ne2clone,1,tcpip [TCPIP]
[MS$NWLINK]
[MS$NE2CLONE]
[protman]
|
[network.setup]
version=0x3110 netcard=ms$ne2clone,1,MS$NE2CLONE,1 transport=tcpip,TCPIP lana0=ms$ne2clone,1,tcpip [TCPIP]
[MS$NWLINK]
[MS$NE2CLONE]
[protman]
|
SYSTEM.R95 SYSTEM.INI
| [network]
sizworkbuf=1498 filesharing=no printsharing=no autologon=yes computername=${BOOTP-Host-name} lanroot=\NET username=${BOOTP-Host-name} workgroup=DOCENCIA reconnect=no dospophotkey=Z lmlogon=0 logondomain=DOCENCIA preferredredir=full autostart=full,popup maxconnections=8 [network
drivers]
[386enh]
[Password
Lists]
|
[network]
sizworkbuf=1498 filesharing=no printsharing=no autologon=yes computername=usuaris24 lanroot=\NET username=usuaris24 workgroup=DOCENCIA reconnect=no dospophotkey=Z lmlogon=0 logondomain=DOCENCIA preferredredir=full autostart=full,popup maxconnections=8 [network
drivers]
[386enh]
[Password
Lists]
|
Els altres valors de
configuració de xarxa estaran ja fixats en els fitxers de configuració,
ja que sempre tenen el mateix valor.
A banda de les variables
mencionades i utilitzades BOOTP-Your-IP
i BOOTP-Host-name,
hi ha unes altres variables que ens proporciona el servidor i que podem
utilitzar en el cas de que ens interesses en el parxeig (mencionarem les
més destacades).
BOOTP-Client-ID à Hardware address de la tarja de xarxa del client.
BOOTP-Server-IP à Adreça IP del servidor.
BOOTP-Gateway-IP à Adreça IP de la porta d’enllaç
BOOTP-Subnet-Mask à Màscara de la nostra subxarxa.
BOOTP-Routers à Adreça IP del router (equivalent a la porta d’enllaç).
BOOTP-Domain-Name-Servers à Adreça IP del Servidor de Noms.
BOOTP-Server-Name à
Nom del servidor d’engegada
WINDOWS 3.11
| hidelog
CloseGraph clear clean 0 setpartitions "BIGDOS:800" setbootpart 1 fullunzip "/tftp/imatges2/usuaris/192lumin.imz" 1 patch "{:1}WINDOWS/SYSTEM.W31" "{:1}WINDOWS/SYSTEM.INI" hidebootprom hdboot :1 |
El fitxer SYSTEM.INI,
és el fitxer de sistema utilitzat en el tema de la configuració
de xarxa i on també tenim des de la configuració de la porta
d’enllaç (gateway), la màscara, el grup al que pertany, el
nom del host i l’adreça IP que li correspon.
El que més ens
interessa en el parxeig d’imatges basades amb sistemes operatius WINDOWS
3.11 es l’adreça IP
i HOST del client
que el servidor ens proporcionarà mitjançant la variable
BOOTP-Your-IP
per IP i BOOTP-Host-Name
pel HOST que tindrem en el fitxer SYSTEM.W31
i que substituirà al fitxer SYSTEM.INI
amb el seu valor assignat.
SYSTEM.W31 SYSTEM.INI
| [boot]
shell=progman.exe network.drv=wfwnet.drv mouse.drv=mouse.drv language.dll=langspa.dll sound.drv=mmsound.drv comm.drv=comm.drv keyboard.drv=keyboard.drv system.drv=system.drv 386grabber=vga.3gr oemfonts.fon=vgaoem.fon fixedfon.fon=vgafix.fon fonts.fon=vgasys.fon display.drv=vga.drv drivers=mmsystem.dll winmm16.dll SCRNSAVE.EXE=C:\WINDOWS\SSMARQUE.SCR [keyboard]
[boot.description]
[386Enh]
[NonWindowsApp]
[vcache]
[mci]
[drivers]
[DDEShares]
[Network]
[network
drivers]
[Password
Lists]
[MSTCP]
[DNS]
[RTL80290]
[NBT]
|
[boot]
shell=progman.exe network.drv=wfwnet.drv mouse.drv=mouse.drv language.dll=langspa.dll sound.drv=mmsound.drv comm.drv=comm.drv keyboard.drv=keyboard.drv system.drv=system.drv 386grabber=vga.3gr oemfonts.fon=vgaoem.fon fixedfon.fon=vgafix.fon fonts.fon=vgasys.fon display.drv=vga.drv drivers=mmsystem.dll winmm16.dll SCRNSAVE.EXE=C:\WINDOWS\SSMARQUE.SCR [keyboard]
[boot.description]
[386Enh]
[NonWindowsApp]
[vcache]
[mci]
[drivers]
[DDEShares]
[Network]
[network
drivers]
[Password
Lists]
[MSTCP]
[DNS]
[ms$ne2clone0]
[NBT]
|
WINDOWS 95/98
| hidelog
CloseGraph clear clean 0 setpartitions "BIGDOS:800" setbootpart 1 fullunzip "/tftp/imatges2/usuaris/95p/95pelat.imz" 1 patch "{:1}WINDOWS/registre.R95" "{:1}WINDOWS/registre.bo" hidebootprom hdboot :1 |
WINDOWS 95/98 (HARD HOMOGENI)
En aquest cas tenim
els fitxers REGISTRE.R95
i REGISTRE.BO
que intervenen en el parxeig de Windows 95/98. El contingut del fitxer
REGISTRE.BO
és el fitxer que exportarem al registre de Windows (regedit.exe).
Aquesta exportació estarà en el fitxer AUTOEXEC.BAT
que s’executarà en carregar-se el sistema operatiu.
| AUTOEXEC.BAT |
| cls
c:\windows\regedit.exe /L:c:\windows\system.dat /R:c:\windows\user.dat c:\windows\registre.bo mode con codepage prepare=((850) C:\WINDOWS\COMMAND\ega.cpi) mode con codepage select=850 keyb sp,,C:\WINDOWS\COMMAND\keyboard.sys |
| REGISTRE.R95 |
| REGEDIT4
[HKEY_LOCAL_MACHINE\Network\Logon] "username"="${BOOTP-Host-Name}" [HKEY_LOCAL_MACHINE\System\CurrentControlSet\control] "Current User"="${BOOTP-Host-Name}" [HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\ComputerName\ComputerName] "ComputerName"="${BOOTP-Host-Name}" [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP] "HostName"="${BOOTP-Host-Name}" [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP] "ComputerName"="${BOOTP-Host-Name}" |
patch "{:1}WINDOWS/registre.R95" "{:1}WINDOWS/registre.bo"
| REGISTRE.BO |
| REGEDIT4
[HKEY_LOCAL_MACHINE\Network\Logon] "username"="usuaris24" [HKEY_LOCAL_MACHINE\System\CurrentControlSet\control] "Current User"="usuaris24" [HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\ComputerName\ComputerName] "ComputerName"="usuaris24" [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\MSTCP] "HostName"="usuaris24" [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP] "ComputerName"="usuaris24" |
Quan fem una imatge
de Windows 98, si volem podem connectar-nos a un servidor per samba
i activar l'encriptació de
passwords, aleshores
tenim que introduir a la branca del registre de Windows:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VxD\VNETSUP]
"EnablePlainTextPassword"=dword:00000001
Si volem que al connectar a una unitat de xarxa no ens surti la pestanya de guardar password, tenim d'introduir al registre de Windows:
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Network]
"DisablePwdCaching"=dword:00000001
WINDOWS 95/98 (HARD HETEROGÈNI)
Si tenim un laboratori
o una aula amb maquines amb diferencies notables de hardware, aleshores
amb l’opció anterior ens trobaríem amb molts de problemes
de detecció de hardware. Per solucionar-ho hauríem d’exportar
la branca HKEY_LOCAL_MACHINE
del registre de cada client, que podríem anomenar paràmetres
de personalització de cada HOST,
per així en
la propera restauració passar-hi la seva branca corresponent des
del servidor.
- Executarem el "regedit":

- Agafar la branca "HKEY_LOCAL_MACHINE"

- Com exportar la branca de hardware específic per cada client.

- Guardarem el fitxer amb el nom DNS del
client, per així poder jugar amb la variable "${BOOTP-Host-Name}"
als menús
de descompressió.

Un cop ja tenim això, des de l'aplicació
del registre, eliminarem completament totes les branques de
"HKEY_LOCAL_MACHINE",
excepte "HKEY_LOCAL_MACHINE\SOFTWARE"
i sortirem del regedi.exe.
- Eliminarem tota la branca del registre (mitjançant
un editor de text) que depèn de la branca anomenada
"HKEY_LOCAL_MACHINE\SOFTWARE",
deixant al servidor el fitxer resultant "HOSTNAME.REG"
( Ex:usuaris24.reg ).

- El contingut del fitxer HOSTNAME.REG
és el fitxer que exportarem al registre de Windows i a cada
màquina li tocarà el seu, aprofitant la variable proporcionada
pel servidor "${BOOTP-Host-Name}".
Aquesta exportació estarà en el fitxer AUTOEXEC.BAT
que s’executarà en carregar-se el sistema operatiu.
| hidelog
CloseGraph clear clean 0 setpartitions "BIGDOS:800" setbootpart 1 fullunzip "/tftp/imatges2/usuaris/95p/95pelat.imz" 1 patch "{:1}WINDOWS/registre.R95" "{:1}WINDOWS/registre.bo" copy "/imatges2/usuaris/95p/${BOOTP-Host-Name}.reg" "{:1}/WINDOWS/patch.bo" hidebootprom hdboot :1 |
| AUTOEXEC.BAT |
| cls
c:\windows\regedit.exe /L:c:\windows\system.dat /R:c:\windows\user.dat c:\windows\patch.bo c:\windows\regedit.exe /L:c:\windows\system.dat /R:c:\windows\user.dat c:\windows\registre.bo mode con codepage prepare=((850) C:\WINDOWS\COMMAND\ega.cpi) mode con codepage select=850 keyb sp,,C:\WINDOWS\COMMAND\keyboard.sys |
WINDOWS NT WORKSTATION
| hidelog
clear clean 0 setpartitions "BIGDOS:2000 BIGDOS:2000" setbootpart 1 fullunzip "/imatges2/deq/noulab//hysys.imz" 1 copy "/imatges2/deq/system/${BOOTP-Host-Name}" "{:1}/winnt/system32/config/system" hidebootprom hdboot :1 |
Per la realització
del parxeig dels sistemes operatius Windows NT Workstation, hem de configurar
per cada client de forma correcta la xarxa amb l'adreça IP de forma
estàtica. Després d'això agafar el fitxer del client
anomenat system que
es troba en la ruta C:\winnt\system32\config
i guardar-lo en el servidor amb el nom de HOSTNAME,
ja que així podrem aprofitar la variable proporcionada pel servidor
"${BOOTP-Host-Name}"
i, aleshores, en l'script de restauració de l'imatge, copiarem aquest
fitxer sobre el fitxer de sistema anomenat system.
copy "/imatges2/deq/system/${BOOTP-Host-Name}" "{:1}/winnt/system32/config/system"
LINUX
| clear
hidelog setpartitions "linux-ext2:1000" clean 1 clean 0 fullunzip "/imatges2/usuaris/linux.imz" 1 copy "/imatges2/usuaris/linux-noms/${Bootp-Host-Name}.nom" "{:1}etc/HOSTNAME" copy "/imatges2/usuaris/linux-noms/${Bootp-Host-Name}.inet1" "{:1}etc/rc.d/rc.inet1" linuxboot "{:1}vmlinuz" "root=/dev/hda1 BOOT_IMAGE=linux" |
En sistemes operatius
LINUX del qual hem realitzat imatges en la distribució SLACKWARE
7.0, la seva realització es bàsicament
la mateixa per altres
distribucions com poden ser REDHAT, DEBIAN o MANDRAKE. En el parxeig tenim
dos fitxers importants, el fitxer /etc/HOSTNAME,
que és on tenim el nom del host de la màquina, es a dir,
haurem de tindré per cada màquina un fitxer amb
el seu host corresponent
i aprofitant la variable proporcionada pel servidor "${BOOTP-Host-Name}"
li assignarem a cada client
el host que li pertoca
"${BOOTP-Host-Name}.nom
( Ex: usuaris24.nom ).
/etc/HOSTNAME
| usuaris24.etse.urv.es |
copy "/imatges2/usuaris/linux-noms/${Bootp-Host-Name}.nom" "{:1}etc/HOSTNAME"
L’altre fitxer /etc/rc.d/rc.inet1
és on tenim tot el referent a la configuració de l’adreça
IP estàtica, porta d’enllaç i màscara, es a dir, tot
el referent a la configuració de l’interficie de xarxa del client.
Aleshores, el mateix de sempre, que fora per cada client els paràmetres
que li corresponent i aprofitant la variable proporcionada pel servidor
"${BOOTP-Host-Name}"
li assignarem a cada client el fitxer de configuració de xarxa que
li pertoca "${BOOTP-Host-Name}.inet1
( Ex: usuaris24.inet1 ).
copy "/imatges2/usuaris/linux-noms/${Bootp-Host-Name}.inet1" "{:1}etc/rc.d/rc.inet1"
Cal remarcar que en
l’script de restauració de l’imatge també podem definir una
partició de swap a banda de la partició primària.
setpartitions "linux-ext2:1000 linux-swap:128"
/etc/rc.d/rc.inet1
| #!
/bin/sh
# # rc.inet1 This shell script boots up the base INET system. # Version: @(#)/etc/rc.d/rc.inet1 2.00 10/06/1999 # HOSTNAME=`cat /etc/HOSTNAME` #
Attach the loopback device.
#
IF YOU HAVE AN ETHERNET CONNECTION, use these lines below to configure
the
#
Edit these values to set up a static IP address:
#
OK, time to set up the interface:
#
If that didn't succeed, give the system administrator some hints:
EOF
# Older kernel versions need this to set up the eth0 routing table: KVERSION=`uname
-r | cut -f 1,2 -d .`
#
If there is a gateway defined, then set it up:
|