Cacharreando…

Se termina el verano…

…pero no por ello uno deja una de sus aficiones: ¡cacharrear!
Hace unos días estuve hablando con un colega del grado, y comencé a buscar piezas que tenía por un trastero (simplificando), de habérselas cambiado a mi sobremesa a lo largo de los años, y resulta que tenía componentes suficientes para hacer un PC “nuevo”. Bueno, me faltaba un disco duro, pero le pude quitar un viejo IDE que ya no estaba conectado, sino tan solo atornillado, a la caja del sobremesa.
Me sorprendió gratamente también encontrar una caja y PSU usadas, y tras ensamblar todo y un par de cortecitos en los dedos por la mierdachapa de la que está hecha, intenté arrancarlo, ¡y arrancó!
Lo malo es que no tenía lector de CD/DVD (bueno, sí que tenía, pero me daba mucha pereza probar cuál funcionaría), así que me busqué otro sistema para bootear un SO.
No me costó mucho pensar en PXE, pues lo veo todos los días en la Facultad de Informática.

Como tengo un portátil funcionando, con Mac OS X (que al fin y al cabo es un UNIX: SUS03-compliant), podía montar ahí los servidores de tftp y de dhcp.

Instrucciones para activar tftp en Mac OS

Mac OS X ¡incluye! un servidor TFTP, aunque deshabilitado por defecto, y corre bajo los servicios de red (un inetd), no como servicio independiente. La forma de habilitarlo es la habitual en los servicios de Mac OS: cambiar una propiedad en un plist.
tl;dr: Hay que cambiar el fichero /System/Library/LaunchDaemons/tftp.plist como root y cambiar la -probablemente- sexta línea, en donde dice <true/> poner <false/>. (Disabled: false)
Tras esto, un $ sudo launchctl load /System/Library/LaunchDaemons/tftp.plist debería de levantar el servicio (aunque no aparecerá con ps).

Instrucciones para el servidor dhcp en Mac OS

Como suelo hacer, comencé por bajarme la última versión del dhcpd (la 4.2.2), pero esta, con soporte de DHCPv6, requiere unos símbolos definidos que Lion (10.7.1) no tiene en sus cabeceras (relativas precisamente al soporte de IPv6), así que para no complicarme me bajé una versión más antigua (la 3.1.3) que compiló sin problema alguno. Nota no importante: Archlinux también sigue con un paquete viejo de dhcpd por lo “complicado”, dicen ellos, que está siendo todavía dar soporte a dhcp4.
Os incluyo el fichero de configuración dhcpd.conf para arancar con PXE.
option domain-name "silice.lan";
option domain-name-servers ns1.silice.lan;
option subnet-mask 255.255.255.0;
default-lease-time 300;
max-lease-time 900;
ddns-update-style ad-hoc;
server-name "silice";
subnet 192.168.55.0 netmask 255.255.255.0 {
range 192.168.55.200 192.168.55.253;
filename "/tftpboot/pxelinux.0";
option routers 192.168.55.1;
}

Para lanzar dhcpd, en lugar de compilarlo y make install, yo solo lo compilé (make), y luego me creé un script para evitar tener que andar con ficheros de configuración en /etc, porque el dhcpd solo lo voy a usar para arrancar por PXE, ¡mi portátil no va a ser un servidor DHCP habitualmente!
El script:
#!/bin/bash
# Script to power up the DHCP server here.
cd ./dhcp-3.1.3/work.darwin/server
./dhcpd -f -cf dhcpd.conf -lf ./leases en0

Hay que ejecutarlo como root, pues DHCP utiliza un puerto inferior al 1024.

Arrancando…

Metí en el servidor TFTP (en /private/tftpboot/) las los elementos que coinciden con la expresión /boot/* y /boot/syslinux/*
Yo hice esto con la distro de Archlinux.
Bueno, pues con la distro de Archlinux os ahorrais probar, a menos que lo arranqueis desde un arch con el paquete archboot para arranque remoto. En mi instalación, después de descomprimir initramfs el kernel solicitaba lo que faltaba a un nbd0 (un Linux Network Block Device, algo que en el Mac no tenía)
Luego encontré y pude bajarme la imagen archboot, que sí tiene un initramfs autocontenido: en cuanto se carga eso no necesita soporte de ninguna entidad externa para su funcionamiento.
Una vez con esta imagen, ya pude por fin partir el disco e instalar Arch. Decidí, no obstante, partir el disco según el nuevo formato GPT, con una partición de 100M para /boot, otra de 2G para swap y lo restante repartido entre home y /.
Haber usado el esquema GPT impidió una correcta instalación automática de GRUB2, con lo que tuve que hacer la típica jaula chroot para instalar Grub desde dentro de ella, arrancando desde el Live.
Para instalar Grub hay que recordar montar /boot desde dentro del chroot, o grub-bios_setup no sabrá que son particiones diferentes!
Y con esto ya tenemos el sistema base montado.

Voy a aprovechar aquí para comentaros cuáles son las características del equipo que he conseguido montar.

  • Placa base: ASUS A8N32-SLi Deluxe (con 2x Gigabit Ethernet: 1x Marvell Yukon, 1x nVidia Ethernet)
  • CPU: AMD Athlon64 3200+ (Socket 939, sin soporte de paravirtualización) @2.00GHz, 1 core
  • RAM: 1.5 GB SODIMM DDR
  • HDD Sistema (/dev/sda): Seagate Barracuda 7200.9 (IDE/ATAPI) 300 GBytes (10^9 Bytes)
  • HDD Almacenamiento (/dev/sdb): Western Digital Caviar Green 3TB Advanced Drive Format (SATA3 6Gb/s)

Uno de los integrados de la RAM es erróneo, y produce errores y fallos de segmentación en momentos no predecibles. Esto se ha solucionado con la directiva badram de Grub 2 después de realizar un Memtest86+ para encontrar los sectores incorrectos.

Deja un comentario