Archivo por días: 26 septiembre, 2009

Tuneando discos

Esta semana hice varias pruebas del disco duro. Para empezar, probé varios formatos diferentes, y el resultado es que DivX lo soporta perfectamente, en SD, HD y FullHD. Parece que en FullHD (probado con Big Buck Bunny) se atasca una pizca en algún que otro momento, mientras que en HD y SD va todo como la seda.

Sin embargo, probé a cambiar el sistema de archivos por EXT3 en lugar de NTFS y parece que los atascos han desaparecido.

Respecto al tema de que se encendiese él sólo al encender la luz del salón, lo he solucionado cambiando la bombilla por otra de otra marca.

Formatear la partición de EXT3

Las razones por las que he cambiado la partición principal a EXT3 son dos: por una parte me da más confianza ese sistema porque, a fin de cuentas, es nativo de Linux y se conoce perfectamente, mientras que NTFS es un sistema que se conoce por ingeniería inversa; por otro lado, parece que consigo una pizca más de rendimiento (2,2MB/seg frente a 2,0MB/seg de NTFS), lo que deduzco que es lo que elimina los pequeños tirones que se notaban al reproducir DivX en FullHD.

AVISO: a partir de aquí empiezo a tocar en el sistema operativo del disco duro multimedia, lo que significa que estas acciones sólo las deben realizar aquellos que sepan muy bien lo que hacen. Si alguien se carga su disco, será el único responsable.

Avisados estáis.

Para cambiar el sistema de archivos basta con seguir los siguientes pasos:

Si echamos un vistazo a como están montadas las particiones, vemos lo siguiente:

/ # mount
/dev/root on / type squashfs (ro)
none on /dev type devfs (rw)
none on /proc type proc (rw,nodiratime)
devpts on /dev/pts type devpts (rw)
none on /sys type sysfs (rw)
/dev/mtdblock/2 on /usr/local/etc type jffs2 (rw,noatime)
none on /tmp type ramfs (rw)
/dev/rd/0 on /mnt/rd type vfat (rw,nodiratime,fmask=0022,dmask=0022,codepage=cp437,iocharset=iso8859-1)
/dev/ide/host0/bus0/target0/lun0/part2 on /tmp/hdd/root type ext3 (rw)
/dev/ide/host0/bus0/target0/lun0/part3 on /tmp/hdd/volumes/HDD1 type NTFS (rw)

La partición /dev/ide/host0/bus0/target0/lun0/part2 (/dev/hda2) contiene parte del sistema operativo; en concreto los módulos SMB para acceso por red y el cliente bittorrent, mientras que /dev/ide/host0/bus0/target0/lun0/part3 (/dev/hda3) contiene la partición visible desde el exterior.

Antes de nada copiamos a otro lado todos los ficheros que tengamos en el disco (pues se borrará todo lo que contenga), desmontamos la partición, formateamos en EXT3, volvemos a montarla y creamos el directorio BT:

umount /tmp/hdd/volumes/HDD1
mke2fs -j /dev/ide/host0/bus0/target0/lun0/part3
mount /dev/ide/host0/bus0/target0/lun0/part3 /tmp/hdd/volumes/HDD1
mkdir /tmp/hdd/volumes/HDD1/BT

Vemos que, si apagamos el disco y lo volvemos a encender, la partición sigue montada, lo que parece sugerir que el sistema es capaz de montarla sea del tipo que sea. Por desgracia, en realidad esto no es así: cuando le damos al botón de apagado, el disco se hiberna en lugar de apagarse, por lo que, cuando se enciende, no arranca desde el principio sino que vuelve al estado en que estaba cuando se apagó. Sin embargo, si lo apagamos «de verdad» (por ejemplo desenchufándolo de la red eléctrica, o porque se va la luz), entonces, cuando volvamos a encenderlo, veremos que no ha montado la partición en EXT3.

Para solucionarlo vamos a modificar los scripts de arranque para que monte la partición automáticamente si es necesario. Para ello nos vamos a /tmp/hdd/root/scripts y vemos que hay varios ficheros. Nos interesan uno de éstos: o btpd o samba. Estos scripts se lanzan durante el arranque para arrancar los servicios de BitTorrent y Samba. En principio podría parecer que basta con añadir un nuevo script para que lo ejecute, pero no lo es: sólo ejecuta esos scripts durante el arranque. Así pues, lo que haremos será modificar uno de ellos para que, al encender el equipo, monte la partición correspondiente. Para ello editamos, utilizando vi, uno de ellos y añadimos al principio las líneas:

if [ -e "/tmp/hdd/volumes/HDD1/lost+found" ]
then
    echo "Particion EXT3 ya montada"
else
    mount /dev/ide/host0/bus0/target0/lun0/part3 /tmp/hdd/volumes/HDD1
    echo "Montando particion EXT3"
fi

Este código comprobará si existe el directorio /tmp/hdd/volumes/HDD1/lost+found (que siempre existe en cualquier partición EXT3), en cuyo caso la partición estará montada y no hará nada; pero si no existe, entonces es que no está montada, así que procederá a hacerlo.

La próxima entrada espero empezar a intentar programar cosas para él.