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.