Actualizar la imagen de un netboot del centro | Algo de Linux

viernes, 30 de septiembre de 2011

Actualizar la imagen de un netboot del centro

Ya que tengo que volver a asignar portátiles a otros usuarios y, algún que otro software y actualizaciones de puppet, como por ejemplo NetworkManager dieron problemillas, he pensado que lo mejor que puedo hacer es actualizar la imagen y volver a clonarlos con el sistema actualizado y los errores solucionados.

Para empezar, clono el portátil con la imagen que viene en el DVD de recuperación del sistema. Una vez clonado, ya tengo un equipo limpio que aún no se ha configurado.

Siguiente paso: Arranco el portátil desde un pendrive de rescate en el que tengo System Rescue CD y Clonezilla, entre otras cosas e inicio Clonezilla, no para clonar, sino para entrar en un shell.

Una vez que tengo un shell, lo primero que hago es ver la lista de particiones con:

# fdisk -l

Al ejecutar fdisk -l, veo la lista de particiones del disco duro y observo que linux se encontraba instalado en /dev/hda2.

El siguiente paso: Montar la partición donde se encuentra instalado el sistema:

# mount /dev/sda2 /mnt

Después monto el /dev del sistema live que estoy corriendo (en este caso, clonezilla) en el directorio /dev de la partición que acabo de montar:

# mount --bind /dev /mnt/dev

También monto /proc del sistema live en el directorio /proc de la partición que he montado anteriormente:

# mount --bind /proc /mnt/proc

Y ejecuto el comando chroot para acceder al sistema instalado en /dev/hda2 (en este caso Squeeze):

# chroot /mnt

Bien, pues una vez hecho ésto, ya tengo corriendo el sistema del portátil dentro de la "jaula" chroot.

Como en estos momentos, no tengo red, conecto el cable y levanto la interfaz eth0:

# ifconfig eth0 up

Y solicito una ip al servidor:

# dhclient eth0

Con ésto, ya tengo acceso a la red. Compruebo si tengo resolución de nombres en el fichero /etc/resolv.conf. Como estoy en la red del centro, la tendré al haber hecho el dhclient,  pero, si no la tengo, añado la ip del servidor de nombres del centro:

# echo "nameserver 172.19.144.3" >> /etc/resolv.conf

Actualizo los paquetes del sistema con pkgsync:

# pkgsync
Y fuerzo la ejecución de tareas puppet que haya para él:

# puppetd -t
Vuelvo a actualizar los paquetes del sistema con pkgsync, por si después de hacer el puppetd -t hubiera paquetes nuevos:

# pkgsync

Siguiente paso: Pongo una password de root conocida por mí mediante el comando:

# passwd
Borro en el servidor puppet el certificado almacenado en esta sesión. Para ello ejecutamos en el servidor puppet:

# puppetca --clean debian.valledeljerte3

Donde debian.valledeljerte3 es el nombre de la máquina a la que se le ha creado el certificado.

Y  borro en el cliente los ficheros de certificado que se han creado dentro de /var/lib/puppet/ssl

En cuanto al fichero /etc/udev/rules.d/70-persistent-net.rules, no es necesario borrarlo, porque lo borra automáticamente el script:
S99primer-arranque.

Por si acaso lo necesitara en algún momento para algo en particular, voy a crear dos imágenes:
  • portatil-alumno.
  • portatil-profesor.
El script S99primer-arranque configura el portátil para un alumno. Así que creo una imagen para portátiles de alumnos.

Una vez creada la imagen de portátil de alumno, vuelvo a arrancar el equipo con un shell de clonezilla y:
  • Modifico el fichero /etc/escuela2.0 para que contenga:
    • use=portatil-alumno
    • use2=portatil-profesor
  • Borro el script S99primer-arranque del directorio /etc/rcS.d/
  • Y copio el script S99primer-arranque-p, que configura un ordenador de profesor al directorio /etc/rcS.d
Después de realizar las modificaciones, inicio de nuevo con clonezilla y creo una imagen para portátiles de profesores.