viernes, 14 de marzo de 2008

Linksys WRT54GL - (OpenWRT) Montar la SD en el directorio raiz (/)

Cuando se acopla una tarjeta SD en el Linksys, y ésta se utiliza para agregar más programas, es necesario hacerlo (luego de editar el ipkg.conf donde se referencia a "sd") por medio del comando:

ipkg -d sd install nombre-paquete

pero se presenta un inconveniente en ciertos programas cuyas rutas de algunas librerías y algunos binarios usan /lib o /bin y no apuntan al punto de montaje de la sd (/mnt/sd/bin, /mnt/sd/lib) aun después de cambiar el PATH, lo que hace que estos programas no funcionen debidamente sin realizar ciertos cambios (cuando es posible).

Para solucionar esto una alternativa es montar la SD en el directorio raíz del OpenWRT y así se disponer de la tarjeta entera para la instalación de programas y sin la necesidad de cambiar nada referente al PATH, ni al ipkg.conf, ni algunas otras tareas.

Antes de continuar, hay que tener en cuenta que si se ha hecho algun script de automontaje (/etc/init.d/S55mmc) se debe anular para realizar este cambio.

El procedimiento mencionado a continuación se obtuvo de aquí y de aquí:

1. Preparación de la SD

mount -t ext2 /dev/mmc/disc0/part1 /mmc
mkdir /tmp/root
mount -o bind / /tmp/root
cp /tmp/root/* /mmc -a
umount /tmp/root
umount /mmc


SIN reiniciar, seguir con el paso 2

2. Configuración de arranque

rm /sbin/init
vi /sbin/init


agregar:
#!/bin/sh
echo "0x9c" > /proc/diag/gpiomask
insmod mmc
insmod ext2
boot_dev="/dev/mmc/disc0/part1"

sleep 15s
mount "$boot_dev" /mmc
[ -x /mmc/sbin/init ] && {
mount -o move /proc /mmc/proc && \
pivot_root /mmc /mmc/mmc && {
mount -o move /mmc/dev /dev
mount -o move /mmc/tmp /tmp
mount -o move /mmc/jffs2 /jffs2 2>&-
mount -o move /mmc/sys /sys 2>&-
}
}
exec /bin/busybox init
Finalmente permisos de ejecución,

chmod a+x /sbin/init

Reiniciar el Router (reboot), y esperar unos 50-60 segundos mientras arranca, y listo.

Para verificar se puede usar el comando df -h para ver algo como

Filesystem Size Used Available Use% Mounted on
/dev/root 1.0M 1.0M 0 100% /mmc/rom
none 7.0M 24.0k 7.0M 0% /tmp
/dev/mtdblock/4 2.2M 796.0k 1.4M 36% /mmc/jffs
/jffs 1.0M 1.0M 0 100% /mmc
/dev/mmc/disc0/part1 937.4M 5.4M 884.4M 1% /


Con esto ya es posible instalar cualquier aplicación con un ipkg install nombre-paquete.

Linksys WRT54GL - (OpenWRT) DynDNS con updatedd

Para configurar una cuenta de DynDNS y actualizarla automáticamente desde el router por ejemplo todos los días a las 00:00.

Instalación de los paquetes updatedd y updatedd-mod-dyndns, ambos están en los repositorios.

ipkg install updatedd updatedd-mod-dyndns

Luego de esto se agrega al cron la rutina diaria por medio de crontab -e, que no hace más que abrir/editar el archivo /etc/crontabs/root para escribirle:

0 0 * * * updatedd dyndns login:pass nombre.homelinux.org

Si se desea cambiar para las 5:30 horas, simplemente sería:

30 5 * * * updatedd dyndns login:pass nombre.homelinux.org

Luego de eso posiblemente sea necesario reiniciar el cron.

domingo, 27 de enero de 2008

Linksys WRT54GL - (OpenWRT) lighttpd y PHP5 en SD

Luego de montar una SD de 1GB en el WRT54GL, es hora de aprovecharla...

NOTAS:

  • Repositorios usados
src whiterussian http://downloads.openwrt.org/whiterussian/packages
src non-free http://downloads.openwrt.org/whiterussian/packages/non-free
src backports http://downloads.openwrt.org/backports/0.9
  • SD montada en /mnt/sd, con sitema de archivos ext2

1. lighttpd en SD

a. Instalación básica

~# ipkg -d sd install lighttpd lighttpd-mod-status lighttpd-mod-cgi

b. Configuración
  • Editar el archivo /mnt/sd/etc/default/lighttpd
Cambiar:
OPTIONS="-f /etc/lighttpd.conf"
Por:
OPTIONS="-f /mnt/sd/etc/lighttpd.conf"
  • Editar el archivo /mnt/sd/etc/lighttpd.conf
Habilitar los modulos
"mod_status"
"mod_cgi"

Cambiar:
server.document-root = "/www/"
Por:
server.document-root = "/mnt/sd/www/"
  • Editar el archivo /mnt/sd/etc/init.d/lighttpd
Cambiar:
DEFAULT=/etc/default/$BIN
LOG_D=/var/log/$BIN
RUN_D=/var/run

Por:
DEFAULT=/mnt/sd/etc/default/$BIN
LOG_D=/mnt/sd/var/log/$BIN
RUN_D=/mnt/sd/var/run

En mi caso, cambié el contenido total del archivo pues el que venía por defecto no funcionaba bien:
#!/bin/sh

BINDIR=/mnt/sd/usr/sbin/
BIN=lighttpd
DEFAULT=/mnt/sd/etc/default/$BIN
LOG_D=/mnt/sd/var/log/$BIN
RUN_D=/mnt/sd/var/run
PID_F=$RUN_D/$BIN.pid

start() {
[ -f $DEFAULT ] && . $DEFAULT
mkdir -p $LOG_D
mkdir -p $RUN_D
${BINDIR}${BIN} $OPTIONS
}
stop() {
#[ -f $PID_F ] && kill $(cat $PID_F)
killall lighttpd
}


Para iniciar el servicio basta con ejecutar
/mnt/sd/etc/init.d/lighttpd start
  • Inhabilitar el servidor web que venía por defecto en el router
~# mv /etc/init.d/S50httpd /etc/init.d/K50httpd

c. Autoarranque

~# cp /mnt/sd/etc/init.d/lighttpd /etc/init.d/S80lighttpd

Por si acaso no se ha hecho:
~# chmod +x /etc/init.d/S80lighttpd

~# reboot

+ NOTA: Posiblemente por la versión del lighttpd, no se inicie en el arranque,
se puede ver el log del sistema para saber qué pasa. Esto al parecer es
por la versión (lighttpd-1.4.11-2)

~# logread

Puede haber problema con la ruta de librerías y módulos que deberían estar
en /usr/lib pero están en /mnt/sd/usr/lib:

libpcre.so.0
libssl.so.0.9.8
libcrypto.so.0.9.8
libz.so.1 (para PHP)
mod_status.so
mod_cgi.so

Para cada uno hacer un enlace:
~# ln -s /mnt/sd/usr/lib/libpcre.so.0 /usr/lib/libpcre.so.0

Con esto ya debe arrancar el servidor web sin nada (sólo html). Ahora el PHP.


2. php5 en SD

a. Instalación básica

~# ipkg -d sd install php5 php5-cgi php5-mod-gd

b. Configuración

- Editar la configuración del lighttpd /mnt/sd/etc/lighttpd.conf

Cambiar:
#### CGI module
#cgi.assign = ( ".pl" => "/usr/bin/perl",
# ".cgi" => "/usr/bin/perl" )

Por:
#### CGI module
cgi.assign = ( ".php" => "/mnt/sd/usr/bin/php")
#cgi.assign = ( ".pl" => "/usr/bin/perl",
# ".cgi" => "/usr/bin/perl" )


Cambiar:
#status.status-url = "/server-status"
#status.config-url = "/server-config"

Por:
status.status-url = "/status"
status.config-url = "/config"


- Editar la configuración del PHP5 /mnt/sd/etc/php.ini

Cambiar:
extension_dir = "/usr/lib/php"
Por:
extension_dir = "/mnt/sd/usr/lib/php"

Habilitar:
extension=gd.so

Luego de esto guardar y reiniciar, se puede crear un archivo info.php que contenga la línea:

martes, 28 de agosto de 2007

Configuración EPSON Stylus C92

Luego de buscar cuáles controladores eran los aptos para esta impresora en el Debian Etch (stable), descubrí en algunas páginas que esta impresora es sucesora de la Stylus C79, por lo cual busqué en los drivers en la configuración de impresoras que trae el SO. Lamentablemente tampoco estaba en este listado, lo que me llevó nuevamente a google, esta vez con una respuesta acertada llegué a:

http://openprinting.org/show_printer.cgi?recnum=Epson-Stylus_C79

Donde dice:

"Worked on Debian 4.0 Etch configured as Epson Stylus C68 with cups, package cupsys-driver-gutenprint."

Efectivamente, estos drivers Stylus C68 si están en la lista de las impresoras Epson del Debian, instalarlos y listo, todo funcionando.

miércoles, 8 de agosto de 2007

Configuración Tarjeta TV Kworld Terminator (saa7134)

Pues bien luego de leer algunos foros para la configuración de una tarjeta de TV PCI Terminator de Kworld que funciona con el módulo saa7134 incorporado en el Debian Etch (stable), configuré la mia para usarla con el tvtime:

Antes que nada, consultamos el sistema para caracteristicas del dispositivo PCI,

debianDLAM:~$ lspci |grep SAA
00:07.0 Multimedia controller: Philips Semiconductors SAA7133/SAA7135 Video Broadcast Decoder (rev d0)


Algunos datos adicionales de los módulos que carga el sistema para este dispositivo,

debianDLAM:~$ lsmod |grep saa7134
saa7134 107936 1
video_buf 23428 1 saa7134
compat_ioctl32 1792 1 saa7134
ir_kbd_i2c 8976 1 saa7134
i2c_core 20096 7 nvidiafb,i2c_algo_bit,tuner,nvidia,i2c_viapro,saa7134,ir_kbd_i2c
ir_common 28164 2 saa7134,ir_kbd_i2c
videodev 21440 2 saa7134
v4l1_compat 12356 2 saa7134,videodev
v4l2_common 20736 3 tuner,saa7134,videodev


Ahora si, para la carga manual de esta tarjeta simplemente se cambian los parámetros del módulo, removiéndolo previamente:

debianDLAM:/home/david# rmmod saa7134
debianDLAM:/home/david# modprobe saa7134 card=65 tuner=54


Como imagino, estar reconfigurando este módulo cada resulta incomodo, entonces cargamos el módulo al arranque del sistema con las opciones correctas, para esto, editamos (o creamos) el archivo /etc/modprobe.conf con las siguientes líneas:

alias char-major-81 videodev
alias char-major-81-0 saa7134
options saa7134 card=65 tuner=54 alsa=0


Reiniciamos y listo, configurada la TV con una Terminator de Kworld con chip Phillips.

No tuve que agregar el módulo saa7134 en /etc/modules pues este ya arranca por defecto desde que es instalado el Debian, simplemente lo que hay que hacer es cambiarle estos parámetros para identificar la tarjeta correctamente.

viernes, 15 de junio de 2007

Instalación D-Link DWL-G510

He adquirido una D-Link DWL-G510 C2 (según la caja) luego de mi intento fallido en Ubuntu Feisty Fawn de la DWL-G122 C1 que en últimas resultó estar mala y por eso se apagaba.


Esta G510 dispone de varias versiones (rev), para averiguarla se ejecuta desde consola el comando lspci filtrando un poco su listado:

$ lspci |grep Network
00:08.0 Network controller: RaLink RT2561/RT61 rev B 802.11g


Lo extraño es que en la caja dice que es C2, por lo cual buscando en la red conseguí los controladores de rt2x00, siendo precisos la versión CVS que conteniene la carpeta rt61-cvs-2007061521. También existe la Beta, pero para el caso no funcionó.

Al descomprimir la carpeta y entrar a Module, se encuentra un README con el cual es suficiente llevar a cabo la instalación. Concretamente:

$make
$sudo make install

$modprobe rt61


Aquí ya queda cargado el módulo de la tarjeta, ahora para ponerla en funcionamiento.

$sudo ifconfig ra0 up
$sudo ifconfig ra0 scan


En este punto la tarjeta ya debe haber buscado conexión con el Wi-Router o con el Access Point cercano y permitido. Si existe algún inconveniente con la configuración, el README puede ser de ayuda.

Para más alternativas e información de los posibles controladores para las versiones de este dispositivo, se puede consultar madwifi. Al parecer la rev C2 la tomó como rev B y no tuve mayor inconveniente.

viernes, 1 de junio de 2007

Instalación DB Designer 4

Para la instalación de DB Designer 4 en Ubuntu Feisty se realizó inicialmente, la descarga de los siguientes archivos:

  1. DB Designer (rpm) de fabFORCE. Actualmente está la versión DBDesigner4-0.5.4-0.i586.rpm
  2. Librerías de xlibs: Entrar en http://www.filefactory.com/file/1d4082/ , dar click en Download for free with FileFactory Basic y seguir los pasos.
  3. Librerías Kylix de http://kylixlibs.sourceforge.net/down.html. Actualmente la versión kylixlibs3-borqt_3.0-1_i386.deb . También se puede descargar la rpm y usar el alien.
  4. Driver dbExpress. Actualmente la versión 3.20 para linux http://crlab.com/dbx/dbxmda.tar.gz
En segunda instancia, la instalación:
  1. xlibs: sudo dpkg -i xlibs_6.8.2-77_all.deb
  2. kylix: sudo dpkg -i kylixlibs3-borqt_3.0-1_i386.deb y su enlace sudo ln -s /usr/lib/kylix3/libborqt-6.9.0-qt2.3.so /lib/libborqt-6.9-qt2.3.so
  3. DB Designer: Conversión del rpm sudo alien DBDesigner4-0.5.4-0.i586.rpm e instalación sudo dpkg -i dbdesigner4_0.5.4-1_i386.deb
  4. dbExpress: Descomprimir sudo tar -zxvf dbxmda.tar.gz Copiar la librería sudo cp DbxMda/libsqlmda.so.3.20 /usr/lib/
  5. Actualización de las librerías para que incluya las agregadas sudo ldconfig.
Finalmente la configuración del programa.
  • Abrir DB Designer /opt/DBDesigner4/DBDesigner4.
  • Menú Database -> Connect to Database
  • New Database Connection y completar con lo mostrado en las imágenes

Nota: Sólo se cambian los campos de LibraryName y VendorLib como aparece en las imágenes (de acuerdo a la versión).

Posiblemente GetDriverFunc tenga como valor getSQLDriverMYSQL, debe cambiarse a getSQLDriverMySQL o sale como error:


Más información visitar El Blog de ERiDeM