Pongámonos en situación. Tenemos un servidor con CentOS instalado y necesitamos reinstalarlo, pero no tenemos acceso físicos al servidor ni tampoco gestión remota tipo iLO, iDRAC, etc. CentOS permite hacer instalación vía VNC, pero usando antes el CD de instalación, configurando la IP y demás y después aceptando la instalación por VNC. Aunque existe otra opción.
CentOS (y gran parte de distribuciones GNU/Linux) permiten la instalación remota por VNC desde el primer instante. En este caso vamos a instalar la versión CentOS 5.6 de 64 bits partiendo de un sistema ya instalado.
Lo primero que tenemos que hacer es descargarnos la imagen del kernel Linux y la imágen ramdisk (ficheros de arranque) para poder arrancar con ellas en el próximo reinicio. Podemos ubicarlas dentro de /boot junto con el resto de imágenes y kernels:
# mkdir /boot/centos-5.6/ # cd /boot/centos-5.6/ # wget ftp://ftp.udl.es/pub/centos/5.6/os/x86_64/isolinux/initrd.img # wget ftp://ftp.udl.es/pub/centos/5.6/os/x86_64/isolinux/vmlinuz
Bien, ahora tenemos que crear una nueva entrada en el grub (/boot/grub/menu.lst) para arrancar con estas nuevas imágenes descargadas e indicar en la línea de arranque que queremos activar vnc, configurar la red, etc.
Por defecto, el menú de grub puede ser algo así:
default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.18-238.el5) root (hd0,0) kernel /vmlinuz-2.6.18-238.el5 ro root=/dev/VolGroup00/LogVol00 initrd /initrd-2.6.18-238.el5.img
Añadimos nuestra entrada a continuación (InstaladorCentOS):
default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.18-238.el5) root (hd0,0) kernel /vmlinuz-2.6.18-238.el5 ro root=/dev/VolGroup00/LogVol00 initrd /initrd-2.6.18-238.el5.img title InstaladorCentOS (2.6.18-238.el5) root (hd0,0) kernel/boot/centos-5.6/vmlinuz vnc vncpassword=PASSWORD headless ip=IPADDR netmask=MASCARA gateway=PUERTA_ENLACE dns=8.8.8.8 ksdevice=eth1 method=ftp://ftp.udl.es/pub/centos/5.6/os/x86_64/ lang=en_US keymap=es initrd /boot/centos-5.6/initrd.img
Aseguraos por una parte que la línea de «root (hd0,0)» es igual que en el otro, para que use la partición/disco correcto. Luego la línea de arranque del Kernel tiene especificada la configuración que comentábamos antes. Puntos a tener en cuenta son el valos especificado en ksdevice, que tiene que ser la interfaz de red pública con la que haremos la instalación, la URL especificada en el método que es el repositorio de CentOS remoto, en lenguaje para el instalador y el tipo de teclado. Luego todos los parámetros de red para tener conexión a Internet durante la instalación (IP, puerta de enlace, máscara, DNS). La línea de initrd tiene la imagen a utilizar para arrancar la instalación (la que hemos bajado antes).
Si os fijáis no hemos modificado el fichero para que arranque con este kernel (sigue el default=0). Lo que vamos a hacer es decirle que de forma excepcional (sólo una vez) arranque con el segundo, así si algo falla, al reiniciar volveríamos al kernel normal. La posición de nuestro kernel es la «1» así que lo especificamos:
# echo "savedefault --stage2=/boot/grub/stage2 --default=1 --once" | grub --batch
Una vez hecho esto, si reiniciamos y esperamos unos minutos ya deberíamos poder acceder a la instalación por VNC a través de la IP especificada anteriormente y el puerto 5091
# shutdown -r now
Referencias: blog.spind.net