Mostrando entradas con la etiqueta dd-wrt. Mostrar todas las entradas
Mostrando entradas con la etiqueta dd-wrt. Mostrar todas las entradas

jueves, 15 de marzo de 2012

Instalar opkg en DD-WRT con Atheros

Update: Esta entrada fue reconstruida completamente, debido a un par de problemas en la instalación de ciertos paquetes con los apuntes anteriores.
 
Lo pasos descritos a continuación corresponden a un resumen personal del documento publicado por "How-To Geek", el cual puede ser consultado en el siguiente link

* Para instalar el comando opkg, es necesario que el router soporte almacenamiento externo (hardware) y que dicho almacenamiento este con formado de archivos "jffs".

* El router utilizado, el cual funcionó perfecto (ahora si), fue el Linksys E2100l (el cual posee una tarjeta Atheros), con la versión de DD-WRT v24-sp2 (12/20/11) std.

Los pasos son los siguientes:

1.- Se debe configurar el router para que monte automáticamente la unidad USB en "/jffs".
Esto se puede configurar en:


Service -> USB -> Disk Mount Point -> /jffs


2.- Nos conectamos al router mediante telnet o ssh y ejecutamos lo siguiente:


# Creamos un directorio temporal.
mkdir /tmp/1
cd /tmp/1

# Instalamos opkg (buscar versión más nueva).
wget http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages/opkg_618-2_ar71xx.ipk
ipkg install opkg_618-2_ar71xx.ipk

# Descargamos las librerías de opkg.
wget http://downloads.openwrt.org/snapshots/trunk/ar71xx/openwrt-ar71xx-generic-rootfs.tar.gz

# Copiamos las librerías (los mensajes de omisión son válidos).
tar xvzf openwrt-ar71xx-generic-rootfs.tar.gz
cp -Pp /tmp/1/lib/* /jffs/usr/lib/

# Ocupamos las nuevas librerías.
export LD_LIBRARY_PATH=/jffs/usr/lib:$LD_LIBRARY_PATH

# Le damos permisos de escritura/lectura al "/etc".
mkdir -p /jffs/geek/etc
cp -a /etc/* /jffs/geek/etc/
mount -o bind /jffs/geek/etc/ /etc/

# Hacemos algo parecido con "/opt".
mkdir -p /jffs/opt
mount -o bind /jffs/opt/ /opt/

# Eliminamos el "opkg.conf".
rm /jffs/etc/opkg.conf

# Recreamos el "opkg.conf" en "/etc".
cat > /etc/opkg.conf << EOF
src/gz snapshots http://downloads.openwrt.org/snapshots/trunk/ar71xx/packages
dest root /opt
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay
EOF


# Probamos el opkg.
opkg update
opkg list


3.- Descargamos y extraemos el script de inicio:


http://www.howtogeek.com/wp-content/uploads/2011/12/geek-init1.1.zip


4.- Lo movemos dentro del router a la ruta:


/jffs/geek/etc/geek-init.sh


5.- Le damos permisos de ejecución.


chmod +x /jffs/geek/etc/geek-init.sh


6.- Dentro del WebGUI -> Administration -> Commands, agregamos la siguiente linea al "Startup":


/jffs/geek/etc/geek-init.sh web-gui


Reboot & Enjoy

Fuente:
http://www.howtogeek.com/98408/how-to-install-additional-software-on-your-router-dd-wrt/




Bonus:
Agregar la siguiente linea al script "geek-init.sh":

export PS1='\[\033[01;31m\]\u@\h \[\033[01;34m\]\W \$ \[\033[00m\]' >>/tmp/root/.profile


Arreglar ipkg en DD-WRT

Estos son los pasos que utilizo para dejar funcionando el ipkg en un DD-WRT.

Después de ejecutar todos los pasos y instalar aplicaciones, siempre me sale el mensaje de "permission denied" cuando quiero ejecutar cualquiera de las aplicaciones instaladas. El tema es que no tengo idea como se soluciona eso, es por esto que no utilizo ipkg y si opkg :D

Si alguien se quiere animar a solucionar ese problema, puede seguir mis pasos para que, por lo menos, le funciones el ipkg y luego ver como solucionar el otro drama.

Inicialmente me guié del sitio:
http://busfire.com/installing-software-in-dd-wrt

1.- Lo primero que hay que hacer es configurar el router para que monte automáticamente la unidad USB en "/opt".

Esto se puede configurar en:

  1. Service -> USB -> Disk Mount Point -> /opt

2.- Ejecutar los siguientes comandos para copiar ciertos archivos a la unidad USB (para lograr permisos de escritura):

  1. cp -a /usr/ /opt/
  2. cp -a /bin/ /opt/
  3. cp -a /etc/ /opt/

3.- Crear el directorio por defecto de ipkg haciendo lo siguiente:

  1. mkdir -p /opt/jffs/tmp/ipkg

4.- Montar los directorio que fueron copiados al USB sobre los directorios originales, así se ganan los permisos de escritura (ya que se escribiría dentro de la unidad USB):

  1. mount /opt/jffs /jffs
  2. mount /opt/usr /usr
  3. mount /opt/bin /bin
  4. mount /opt/etc /etc

5.- El script de actualización de ipkg usa de forma equivocada la opción "-passive-ftp" del wget. Esto se corrije ejecutando:

  1. cp /bin/ipkg /bin/ipkg.orig
  2. cat /bin/ipkg.orig |sed -e "s/--passive-ftp //" > /bin/ipkg

6.- Con estos cambios ya se puede ejecutar el ipkg:

  1. ipkg update
  2. ipkg list

Si todo sale bien, es porque todo salió bien jajaja :P

7.- Finalmente quedaría agregar al booteo del router los comandos para re-montar los directorios de la unidad USB:

  1. Administration -> Commands

Escribir lo siguiente:

  1. mount /opt/jffs /jffs
  2. mount /opt/usr /usr
  3. mount /opt/bin /bin
  4. mount /opt/etc /etc

Y guardar con el botón: "Save Startup"

DATO:

El archivo de configuración "/etc/ipkg.conf" debe decir lo siguiente:

  1. src whiterussian http://downloads.openwrt.org/whiterussian/packages
  2. src non-free http://downloads.openwrt.org/whiterussian/packages/non-free
  3. src backports http://downloads.openwrt.org/backports/rc5
  4. dest root /jffs
  5. dest smbfs /tmp/smbshare
  6. dest ram /tmp