Welcome, connect your terminal

Archive for the ‘Hardware’ Category

El mediacenter

Aug-31-2011 By dodger

Ultimamente varias personas me han preguntado por la composición de mi mediacenter y a veces es un poco complicado hacerme entender.
Asi que voy a colgar un pequeño esquema:

Básicamente está compuesto en la parte mediacenter en sí por:

  • LCD LG (or whatever)
  • WDTV Live
  • CH3HNAS
  • TP-Link TL-WR841N

Y en la parte “desktop” por:

  • TP-Link TL-WR841N
  • PC
  • Router ADSL

Los dos router TP-link son gemelos para evita problemas con el WDS.
La gracia está en que mediante WDS sin pasar cables, todo está interconectado y en la misma red, de esta forma el WDTV puede salir a internet, igual que el NAS y desde la parte contraria desde el/los pc’s (e internet) se puede acceder al entorno mediacenter.

Por qué esto y uno otra solución como por ejemplo el típico popcorn/mediatank? La respuesta es simple… no creo que haya uno de estos mediaplayers que soporte 4TB de disco ;-)

Respecto al precio:

Para lo que es en sí y la flexibilidad que provee, creo que está bastante bien :)

Respecto al tema de protocolos, el WDTV accede al NAS mediante SAMBA, hice pruebas por NFS y aunque parezca increible la velocidad de transferencia era penosa. Por samba reproduzco FULLHD sin problema alguno y eso que el switch del router es de 100mbps y el nas, también (en mi caso el router es un poco más antiguo que el que indico).

Hace unos días que tenía problemas de conectividad en mi casa.
Estaba un poco mosqueado por que si a 3MB le quitas 2,5MB pues te quedas en diciendo “el modem 56k está volviendo!”.
Asi que después de casi quemarme las manos intentando coger el router, decidí abrirlo y mi sorpresa ha sido muy grata:

Router con mucho mucho calor 01
Router con mucho mucho calor 02

Un par de bobinas se han derretido “un poquito” :D aunque no lo suficiente para salir ardiendo :P
Asi que como no tenía ningún ventilador mini a mano para tunear la caja del router, he decidido ponerlo en un sitio donde siempre hay una corriente de aire generada… dentro de la caja del PC :)
Router con un poco menos de calor 01
Y de paso, le he puesto una de las sondas térmicas que trae la caja para monitorizar el estado general dentro de la misma.
Esta mañana cuando he arrancado el pc se ha puesto a pitar como loco, 60ºC y tengo la sonda en el único disipador del router (se ve la sonda en la última imagen).
No es una solución demasiado buena, pero de momento tendrá que quedarse así, hasta que pase por la tienda de ventiladores a comprar algo apropiado.

CH3HNAS: cambiando puntos de montaje

Aug-22-2011 By dodger

A vueltas con el NAS, no he encontrado la manera de cambiar los puntos de montaje por defecto para los discos duros.
Y la verdad, no me gustaba la idea de tener el 2º disco en “/home/Disk_2″, asi que aprovechando el sistema “funplug”, he decido añadir un script propio para montar en durante el boot el 2º disco donde yo quiero.

El script es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/bin/sh
# EXIT CODES:
#  0 OK
#  1 MOUNT FAIL
#  2 UMOUNT FAIL
#  99 undefined error

DISK2="/home/Disk_2"
DEVICE2="/dev/sdb1"
MYMOUNT="/home/Public/mountpoint"
# check if mounted
checkmounted()
{
    # returns: 0 umounted, 1 wrong, 2 OK
    local MOUNTED="$(df | grep "^$DEVICE2")"
    if [[ "$MOUNTED" ]]
    then
        if [[ "$(echo $MOUNTED | grep $MYMOUNT)" ]]
        then
            return 2
        else
            return 1
        fi
    else
        return 0
    fi
}
# mount
mount_it()
{
    mount $DEVICE2 $MYMOUNT
    sleep 2
    checkmounted
    AUX=$?
    if [ $AUX -ne 2 ]
    then
        echo "FAIL mounting"
        exit 1
    fi
}
# umount
umount_it()
{
    umount -lf $DISK2
    sleep 2
        checkmounted
        AUX=$?
        if [ $AUX -ne 0 ]
        then        
            echo "FAIL umouting"
            exit 2
    fi
}
# check again


main()
{
    checkmounted
    AUX=$?
    case $AUX in
    0)
        mount_it
    ;;
    1)
        umount_it
        mount_it
        exit 0
    ;;
    2)
        echo "OK"
        exit 0
    ;;
    *)
        echo "FAIL STATUS"
        exit 99
    ;;
    esac
}
main

Como véis, únicamente compruebo que está montada (variable $DISK2), desmonto y monto en el sitio que yo quiero (variable $MYMOUNT).

New adventures with CH3HNAS

Jul-5-2011 By dodger

Hi folks!
Following with my CH3HNAS adventures, I’ve decided to build my own cross-compiling environment based on the wonderful instructions from Henk-Jan.
To avoid unexpected issues on my Arch distro, I’ve created a new VM running debian.
Here I found the 1st issue, there’s no gcc-4.1 on the last debian version, so I setted up lenny’s repos:

1
2
3
4
5
6
7
cp /etc/apt/sources.list /etc/apt/sources.list.orig
echo "deb http://ftp.us.debian.org/debian/ lenny main contrib non-free" > /etc/apt/sources.list
echo "deb-src http://ftp.us.debian.org/debian/ lenny main contrib non-free" >> /etc/apt/sources.list
apt-get update
apt-get install gcc-4.1 g++-4.1
mv /etc/apt/sources.list /etc/apt/sources.list.lenny
cp -fv /etc/apt/sources.list.orig /etc/apt/sources.list

Having the minimal debian distro, “bzip2″ is necessary too.

I get an estrange error at the 1st step’s while “making” the build environment:

1
2
scripts/unifdef.c:209: error: conflicting types for 'getline'
/usr/include/stdio.h:XXX: note: previous declaration of 'getline' was here

I was running crazy with that till I found this simply solution.
The problem is that if you want to use the “Makefile” provided, the kernel source is bzip’ed, so callme fool, but I bunzipped/bziped again with the patch inside :)

1
2
3
4
5
cd OXNAS810/src/rootfs/buildroot/../buildroot-archives/
tar xjfv linux-2.6.24.7.tar.bz2
sed -i "s/getline/uc_&/" ./linux-2.6.24.7/scripts/unifdef.c
mv linux-2.6.24.7.tar.bz2 linux-2.6.24.7.tar.bz2.orig
tar cjfv linux-2.6.24.7.tar.bz2 linux-2.6.24.7

And then I simply run:

1
make

To build the environment.

Resulta que ayer fui a buscar mi tarjeta gráfica en reparación desde hace como 4 meses, no me quejo del tiempo que han tardado (ya que volvió a mis manos igual de quemada que se fue).
Antes de nada, mi gráfica era una “Asus Nvidia GTS250 512MB” osea, gama media.

Cuando felizmente fui a buscarla el dependiente/becario sin comentarme nada sacó una tarjeta que no era la mía del almacén y se puso a escribir unas cosas en su Pc; transcribo aproximadamente la conversación:

dodger: Perdona mi curiosidad, pero me puedes indicar qué estas haciendo?
becario: Es un cambio en garantía
dodger: Si… pero… me tendrás que informar del cambio, ya que no me has dicho ni siquiera que me la íbais a cambiar, yo venía a por mi gráfica.
becario: Ah, vale, pues es un cambio en garantía, nos han enviado esta gráfica para realizar el cambio.
dodger: de acuerdo, me la dejas ver?

Reviso la gráfica y veo una “Club 3d Nvidia GT440“, sigamos con la conversación:

dodger: Perdona, me dejáis un pc en el que pueda buscar una referencia de esta gráfica, ya que no la conozco
becario: no te preocupes, es una tarjeta superior, mira, tiene 1GB de RAM y la tuya tenía 512MB

En este punto es en el que se disparan todas las alarmas de mi cabeza pensando: “Esta es la típica bola que le sueltas a alguien que si no tiene ni p*** idea cuela“:

dodger: Ok, pero no me importa mucho la ram, me puedes dejar un pc?
becario: bueno… (estaba flipando el chico) espera, mira ves allí con mi compañero que te puede buscar lo que le digas.

Esta parte me la salto, pero podéis echar un ojo al siguiente link y ver en qué puesto estaba mi gráfica y en qué puesto está la que me intentaban endiñar.

Vuelvo a hablar con el becario y le comento que me niego a aceptar esta gráfica ya que es muy inferior a la mia, por no decir que no es ni de la misma marca…
El becario dice que tiene que hablar con el jefe… A lo que ya me veo sacando la artillería pesada :D

Jefe: Me comenta becario que tienes problemas con el cambio.
dodger: si, como le comentaba … blablabla (lo mismo que antes)
Jefe: Si, pero esta tarjeta es superior, no ves que tiene más memoria.

Pensando: Are you fucking kidding me? He venido 1000 veces, me conoces tio… No intentes tomarme el pelo

La verdad es que no sé si me entendió mucho:

dodger: (MODO PACIENCIA INFINITA) Me da igual la ram, no la voy a usar, quiero potencia de proceso y velocidad que fué lo que compré.
Jefe: Bueno, espera, voy a buscar alguna equivalencia.

No subí el tono, pero estaba a punto de soltarle algo como “le vas a tomar el pelo a la (con perdón) sudamericana que tengo a mi lado y está flipando, que pa algo me dedico a esto y LEO

Total, que parece que al final, tomó exactamente la misma tabla que he puesto antes de tom’s hardware y me pediran una ASUS GTS450.

Conclusión, mucho cuidado con la gente, aunque os conozca os intentarán timar a SACO … Y chicos, me parece que habéis perdido un cliente ;)

CH3HNAS

Apr-7-2011 By dodger

Ayer me decidí a “pegar” un repaso a este magnífico NAS, ya en su día intenté habilitar el funplug proveniente del CH3SNAS, pero lo que más me interesaba, openssh (u openvpn) no conseguí que funcionase.

Asi que investigando, descubrí que un compañero freak, ha sacado sus propios scripts/repositorio personalizado para el CH3HNAS:
* http://visscher.dyndns-home.com/ (ejecutado desde el propio NAS según el autor).
* http://henkjan.net/

Siguiendo instrucciones ya para empezar me dio error el script de instalación, pero esta vez tenía que ser si o sí, así que revisé el script de instalación (setuphfp) y me sorprendió bastante la sencillez, paso por paso, ejecuté:

1
2
3
4
5
6
7
8
9
10
11
12
13
DEFAULT_ROOT=/home/Public/funplug/hfp
REPOSITORY=http://visscher.dyndns-home.com/packages
mkdir -p ${dir}
mkdir ${dir}/tmp
mkdir ${dir}/sbin
cd ${dir}/..
ln -s hfp ffp
cd ${dir}/sbin
wget ${REPOSITORY}/hfppkg
chmod +x hfppkg
${dir}/sbin/hfppkg update
${dir}/sbin/hfppkg -c install setuphfp
${dir}/sbin/hfppkg install busybox

Con lo que ya está “instalado” el hfp y busybox.
Omito que estuve revisando el script hfppkg :)

Revisando el sistema de arranque, ví que el proceso es el siguiente:

/etc/init.d/rc.sysinit ->
/home/Public/funplug/ffp/etc/rc ->
/home/Public/funplug/ffp/etc/start/*.sh

Es decir, desde el rc.sysinit (que no se puede “alterar” ya que está dentro de la parte de la “BIOS” del NAS y se reescribe cada arranque), está hardcodeado arrancar el script /home/Public/funplug/ffp/etc/rc.
Desde este script, entre otras cosas (a gusto del consumidor, ya que está dentro del disco duro), se arrancarán todos los scripts “*.sh” dentro del directorio /home/Public/funplug/ffp/etc/start/ que tengan permisos de ejecución.

En mi caso y para no cargar demasiado el NAS, he optado por quitar del arranque el telnet y el propio hfp que no sirve para mucho.

Según Henk-Jan “openssh” reemplaza dropbear, que tampoco me interesa demasiado, lo que yo quiero es arrancar openssh desde otro puerto, asi que… instalo el paquete y procedo a cambiar el script de arranque, lo he dejado así:

1
vi /home/Public/funplug/hfp/start/sshd.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/hfp/bin/sh

# PROVIDE: sshd done

. ${HFP:-/hfp}/etc/hfp.subr

name="sshd"
command="${HFP:-/hfp}/sbin/$name"
required_files="${HFP:-/hfp}/etc/ssh/sshd_config"
# sshd_flags="-p 22"

start_cmd="sshd_start"

sshd_start()
{
        echo "Running dropbear processes:"
        proc_start ${command}
}

run_rc_command "${1}"

Duro, eh!!!??? :D
Por supuesto, he cambiado el fichero de configuración del sshd según mis necesidades (fichero “/home/Public/funplug/hfp/etc/ssh/sshd_config“), por ejemplo para denegar “root” login y permitir pubkeys :)
De todas formas si no queréis cambiar el fichero de config, en el propio script de arranque del sshd, existe la variable “sshd_flags” que le indica al demonio en qué puerto arrancar.