domingo, 5 de agosto de 2012

APT más rápido en los (dist-)upgrade

Este es otro tips que tengo para lograr descargar más rápido los paquetes cuando se hacen los (dist-)upgrade de, en mi caso, ubuntu.

Estos pasos sirven también cuando lo que se quiere es descargar solo los paquetes y hacer el (dist-)upgrade en otro momento (ojo, que cuando se quiera hacer el (dist-)upgrade puede que hayan paquetes nuevos y estos deberán ser descargados).

Los pasos serían los siguientes:

1.- Ganar privilegios


sudo -s


2.- Entrar al directorio de archivos descargados de APT


cd /var/cache/apt/archives


3.- Obtener el listado de archivos a descargar


apt-get -qq --print-uris upgrade > /tmp/files.txt


o


apt-get -qq --print-uris dist-upgrade > /tmp/files.txt


4.- Descargar los archivos (se empezara a colgar la máquina)


cat /tmp/files.txt | perl -n -e '/^([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+)$/; print "wget -q -O \"$2\" $1 &\n"; system("wget -q -O \"$2\" $1 &");'


5.- Esperar a que terminen todos los 'wget'


watch 'ps -efa | grep wget'


6.- Revisar los MD5


cat /tmp/files.txt | perl -n -e '/^([^ ]+) ([^ ]+) ([^ ]+) MD5Sum:([^ ]+)\n$/; $n=$2; $t1=$4; $_=`md5sum $n`; /^([^ ]+)/; $t2=$1; if ($t1 ne $t2) { print "ERROR: $n\n"; } else { print "OK: $n\n"; }' | grep ERROR


7.- En caso de que falle alguno, volver a descargarlo...

8.- Eliminar el archivo temporal


rm /tmp/files.txt


9.- Instalar los archivos descargados


apt-get upgrade


o


apt-get dist-upgrade


10.- FIN!

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

domingo, 11 de marzo de 2012

Control Remoto (IR) en Zotac Nano + XBMC (Dharma) + Ubuntu 11.10 (Oneiric)

Para los que tiene un Zotac Nano y montaron un centro multimedia en él y no saben como hacer para que XBMC reconozca el control remoto que viene con el equipo, aquí están los pasos:

1.- Instalar "lirc".

  1. sudo apt-get install lirc

Si pregunta algo durante la instalación, déjenlo en "none" (primera opción), ya que lo configuraremos a mano más adelante.

2.- Configurar hardware.conf

  1. sudo vi /etc/lirc/hardware.conf

Cambiar estos parámetros:

  1. REMOTE_DEVICE="/dev/lirc0"
  2. START_LIRCD="true"

3.- Configurar lircd.conf

  1. sudo vi /etc/lirc/lircd.conf

Pegar el siguiente texto:

  1. # Please make this file available to others
  2. # by sending it to <lirc@bartelmus.de>
  3. #
  4. # this config file was automatically generated
  5. # using lirc-0.9.0(default) on Sat Jan 14 16:23:13 2012
  6. #
  7. # contributed by
  8. #
  9. # brand:                       MyRemote.conf
  10. # model no. of remote control:
  11. # devices being controlled by this remote:
  12. #
  13. begin remote
  14.   name  MyRemote
  15.   bits           37
  16.   flags RC6|CONST_LENGTH
  17.   eps            30
  18.   aeps          100
  19.   header       2661   869
  20.   one           446   437
  21.   zero          446   437
  22.   gap          106433
  23.   toggle_bit_mask 0x8000
  24.   rc6_mask    0x100000000
  25.       begin codes
  26.           KEY_POWER                0x037FCB7B71
  27.           KEY_POWER2               0x037FCB7BC2
  28.           KEY_RECORD               0x037FCB7BC8
  29.           KEY_PAUSE                0x037FCB7BCF
  30.           KEY_STOP                 0x037FCB7BCE
  31.           KEY_REWIND               0x037FCB7BD6
  32.           KEY_PLAY                 0x037FCB7BD3
  33.           KEY_FASTFORWARD          0x037FCB7BD7
  34.           KEY_PREVIOUSSONG         0x037FCB7BDE
  35.           KEY_NEXTSONG             0x037FCB7BDF
  36.           KEY_BACK                 0x037FCB7B7C
  37.           KEY_WIN                  0x037FCB7BA2
  38.           KEY_INFO                 0x037FCB7B34
  39.           KEY_UP                   0x037FCB7BA7
  40.           KEY_LEFT                 0x037FCB7BA5
  41.           KEY_OK                   0x037FCB7BA3
  42.           KEY_RIGHT                0x037FCB7BA4
  43.           KEY_DOWN                 0x037FCB7BA6
  44.           KEY_VOLUMEUP             0x037FCB7BEF
  45.           KEY_VOLUMEDOWN           0x037FCB7BEE
  46.           KEY_MUTE                 0x037FCB7BF2
  47.           KEY_CHANNELUP            0x037FCB7BE1
  48.           KEY_CHANNELDOWN          0x037FCB7BE0
  49.           KEY_NUMERIC_1            0x037FCB7BFE
  50.           KEY_NUMERIC_2            0x037FCB7BFD
  51.           KEY_NUMERIC_3            0x037FCB7BFC
  52.           KEY_NUMERIC_4            0x037FCB7BFB
  53.           KEY_NUMERIC_5            0x037FCB7BFA
  54.           KEY_NUMERIC_6            0x037FCB7BF9
  55.           KEY_NUMERIC_7            0x037FCB7BF8
  56.           KEY_NUMERIC_8            0x037FCB7BF7
  57.           KEY_NUMERIC_9            0x037FCB7BF6
  58.           KEY_NUMERIC_STAR         0x037FCB7BCC
  59.           KEY_NUMERIC_0            0x037FCB7BFF
  60.           KEY_NUMERIC_POUND        0x037FCB7BCD
  61.           KEY_CLEAR                0x037FCB7BC5
  62.           KEY_X                    0x037FCB7BD0
  63.           KEY_Y                    0x037FCB7BC1
  64.           KEY_ENTER                0x037FCB7BCB
  65.           KEY_RED                  0x037FCB7B92
  66.           KEY_GREEN                0x037FCB7B91
  67.           KEY_YELLOW               0x037FCB7B90
  68.           KEY_BLUE                 0x037FCB7B8F
  69.       end codes
  70. end remote

4.- Configurar Lircmap.xml

  1. sudo vi /usr/share/xbmc/system/Lircmap.xml

Pegar el siguiente texto:

  1. <!-- This file contains the mapping of LIRC keys to XBMC keys used in Keymap.xml  -->
  2. <!--                                                                              -->
  3. <!-- How to add remotes                                                           -->
  4. <!-- <remote device="name_Lirc_calls_the_remote">                                 -->
  5. <!--                                                                              -->
  6. <!-- For the commands the layout following layout is used                         -->
  7. <!-- <XBMC_COMMAND>LircButtonName</XBMC_COMMAND>                                  -->
  8. <!--                                                                              -->
  9. <!-- For a list of XBMC_COMMAND's check out the <remote> sections of keymap.xml   -->
  10. <lircmap>
  11.     <remote device="MyRemote">
  12.         <play>KEY_PLAY</play>
  13.         <pause>KEY_PAUSE</pause>
  14.         <stop>KEY_STOP</stop>
  15.         <forward>KEY_FASTFORWARD</forward>
  16.         <reverse>KEY_REWIND</reverse>
  17.         <left>KEY_LEFT</left>
  18.         <right>KEY_RIGHT</right>
  19.         <up>KEY_UP</up>
  20.         <down>KEY_DOWN</down>
  21.         <select>KEY_OK</select>
  22.         <pageplus>KEY_CHANNELUP</pageplus>
  23.         <pageminus>KEY_CHANNELDOWN</pageminus>
  24.         <back>KEY_BACK</back>
  25.         <menu>KEY_Y</menu>
  26.         <title>KEY_X</title>
  27.         <info>KEY_INFO</info>
  28.         <skipplus>KEY_NEXTSONG</skipplus>
  29.         <skipminus>KEY_PREVIOUSSONG</skipminus>
  30.         <display>Display</display>
  31.         <start>KEY_ENTER</start>
  32.         <record>KEY_RECORD</record>
  33.         <volumeplus>KEY_VOLUMEUP</volumeplus>
  34.         <volumeminus>KEY_VOLUMEDOWN</volumeminus>
  35.         <mute>KEY_MUTE</mute>
  36.         <power>KEY_POWER2</power>
  37.         <myvideo>Videos</myvideo>
  38.         <mymusic>Music</mymusic>
  39.         <mypictures>Pictures</mypictures>
  40.         <mytv>TV</mytv>
  41.         <one>KEY_NUMERIC_1</one>
  42.         <two>KEY_NUMERIC_2</two>
  43.         <three>KEY_NUMERIC_3</three>
  44.         <four>KEY_NUMERIC_4</four>
  45.         <five>KEY_NUMERIC_5</five>
  46.         <six>KEY_NUMERIC_6</six>
  47.         <seven>KEY_NUMERIC_7</seven>
  48.         <eight>KEY_NUMERIC_8</eight>
  49.         <nine>KEY_NUMERIC_9</nine>
  50.         <zero>KEY_NUMERIC_0</zero>
  51.         <star>KEY_NUMERIC_STAR</star>
  52.         <hash>KEY_NUMERIC_POUND</hash>
  53.         <clear>KEY_CLEAR</clear>
  54.         <enter>KEY_WIN</enter>
  55.         <red>KEY_RED</red>
  56.         <green>KEY_GREEN</green>
  57.         <yellow>KEY_YELLOW</yellow>
  58.         <blue>KEY_BLUE</blue>
  59.         <teletext>Teletext</teletext>
  60.     </remote>
  61. </lircmap>

El XBMC se debe ejecutar con la opción "-l" por lo que será necesario tener que cambiarlo en el LightDM (o GDM, según versión de Ubuntu)

...enjoy!!