Salpicaduras de Java eficaz

En mi anterior post “amenacé” con publicar alguna de las técnicas más interesantes que aparecen en Efective Java. El camarada Adrián se ha adelantado y ha escrito acerca del idiom Initialization on demand holder. Como aquí en Trabe intentamos ser DRY me limito a dejaros el enlace y para que lo leáis en su blog.

Effective Java (2ª edición)

Vaya por delante que hace más de dos años que no desarrollo un proyecto entero con Java. Mis pequeños flirteos con Rails se convirtieron en una estable relación y dejé un poco de lado a mi antigua amante, a la que sólo he vuelto a visitar breve y esporádicamente para echar una mano a los Java boys de Trabe (cuando el cliente aprieta y el tiempo escasea). Vamos, que en estos dos últimos años me he dedicado a otras lecturas, libres de cafeina.

De todos modos, la desarrolladora Java que tengo en casa si que se gasta algunos euros en bibliografía y hace poco adquirió la segunda edición de Effective Java. Ayer por curiosidad me pase un rato hojeando el libro (un rato largo de una horita más o menos) y debo decir que me gustó lo que leí.

Effective Java 2nd Edition

Estoy seguro de que volveré a coger este libro para echarle una “hojeada” de varios días tan pronto tenga un hueco, y si no pasa nada raro puede que deje en este blog algo de la sabiduría que el compañero Joshua Bloch recoge en él.

Lo dicho: una lectura recomendable.

Rails 2.1

Sobre Rails 2.1 sólo puedo decir que es más de lo mismo, pero mejor. Podéis comprobarlo leyendo el libro gratuíto que el amigo Carlos Brando ha tenido a bien publicar y que recopila todas las novedades de esta versión.

Instalar Ubuntu sin CDs, DVDs ni dispositivos USB utilizando únicamente la red (PXE)

El título ha quedado un poco largo, pero eso es exactamente lo que acabo de hacer hace un rato, y como me parece algo interesante, voy a explicar brevemente cómo conseguirlo.

La base del proceso es PXE, que para definirlo en pocas palabras viene a ser un "modo de arrancar un ordenador" utilizando para ello únicamente el interfáz de red. Como podéis ver en el enlace a la wikipedia, PXE es básicamente una mezcla de DHCP y TFTP.

Paso 1: el ordenador ha de ser capaz de arrancar desde la red

Para poder instalar nuestro sistema utilizando esta tática, es necesario que éste sea capaz de hacer el boot desde un dispositivo de red. La mayoría de los PCs soportan esta característica, por lo que no debería de ser un requisito difícil de satisfacer. Una vez que nos aseguremos de que el PC "sabe arrancar desde la red", ya solo nos falta instalar un servidor que le responda adecuadamente a sus peticiones.

Paso 2: instalar el servidor

En este caso, el ordenador que va a servir los ficheros de arranque es un humilde PC con windows ya instalado, por lo que la herramienta que utilizaremos es TFTPD32. Esta herramienta es una de esas pequeñas joyas que a cambio de muy pocos KB son capaces de hacer un montón de cosas, como podéis observar en la página del autor.

Una vez descargado el programa, ponerlo a funcionar es tan simple como crear una carpeta, digamos que c:\tftp y copiar en ella el fichero tftpd32.exe. Lo ejecutamos y ya tenemos el servidor andando. Así de fácil.

Paso 3: descargarse la imagen de ubuntu peparada para estas labores

El siguiente paso será descargarse la imagen de ubuntu lista para ser servida utilizando PXE. Para conseguir este objetivo tendremos que descargarnos la carpeta ubuntu-installer que podremos encontrar en el respositorio de ubuntu. En mi caso particular, esta carpeta podía descargarse de:

ftp://archive.ubuntu.com/ubuntu/dists/hardy/main/installer-i386/current/images

Paso 4: configurar el servidor

Una vez descargada esta carpeta, deberemos de copiarla en c:\tftp. Además, debemos de asegurarnos de:

  • copiar a c:\tftp la carpeta pxelinux.cfg desde ubuntu-installer/i386/
  • copiar a c:\tftp el fichero pxelinux.0 desde ubuntu-installer/i386/

Ahora ya podemos configurar el tftpd32. En la pestaña DHCP, deberemos poner 'pxelinux.0' en el campo boot file y deberemos rellenar el resto de valores ajustándose a la realidad de nuestra red. Es importante que el valor del campo 'IP pool starting address' sea una IP válida en nuestra red y que se refiera a un rango de IPs no utilizado en la misma. Una vez cubiertos todos los campos, pulsamos save y ya tenemos nuestro servidor configurado. Así de fácil,

Paso 5: arrancar el pc que queremos instalar

Con nuestro servidor perfectamente configurado, ya podemos arrancar el pc en el que queremos instalar ubuntu. Si todo va bien y los cables están bien enchufados, podremos ver que comienzan a aparecer entradas en la pestaña 'Log viewer' de tftpd32. Se establece la comunicación entre el PC que arranca utilizando PXE y nuestro servidor. Al cabo de unos instantes, el PC que está tratando de arrancar acaba recibiendo por TFTP la imagen de instalación basada en red de ubuntu. A partir de ahi sólo nos queda continuar con una instalación basada en red de lo más normal, (lenta), y aburrida.