Archives: September 2007, October 2007, November 2007, December 2007, January 2008, February 2008, June 2008, July 2008, August 2008, September 2008, October 2008, November 2008, December 2008, February 2009, April 2009, May 2009
kiriadas Siguiente


kir OpenWrt, wavemon e ainda mais - Subscribe
Descargo en primer lugar toda la rama de desarrollo del svn de OpenWrt:

~$ svn co https://svn.openwrt.org/openwrt/trunk/

Error validando el certificado del servidor de 'https://svn.openwrt.org:443':
- El certificado no fue emitido por una autoridad marcada como

( Bla, bla, bla... )

- "Huella": a1:0a:d8:2d:af:4e:67:92:18:a0:27:b6:9f:2b:e1:12:08:28:a0:b1
¿(R)echazar, aceptar (t)emporariamente o aceptar (p)ermanentemente? t

Se nos crea en el HOME un directorio trunk/ con todo el tinglado necesario para compilar .
Es necesario tener instalados los siguientes paquetes gcc, binutils, patch, bzip2, flex, bison,make, gettext, pkg-config, unzip, ibz-dev y libc headers para que no nos de error el
~/trunk$ make menuconfig donde podremos configurar el toolchain y el firmware:



Hago los cambios oportunos y salgo guardándolos.
Continúo con un interminable
~/trunk$ make
que descargará las fuentes, construirá las herramientas para la compilación cruzada y compilará el firmware.

:~/trunk$ make
++ mkdir -p /home/kir/trunk/staging_dir/toolchain-mips_gcc4.1.2
++ cd /home/kir/trunk/staging_dir/toolchain-mips_gcc4.1.2
++ mkdir -p bin lib include stamp
Checking 'bison'... ok.
make[1] world
make[2] tools/install

( Más bla, bla, bla )

make[2] package/rootfs-prepare
make[3] package/preconfig
make[2] target/install
make[3] -C target/linux install
make[3] -C target/sdk install
make[2] package/index


En ~/trunk/bin tendremos nuestro nuevo firmware con el que podremos flashear la fonera.

*Compilar programas

Preparo un script llamado sdk el cual al invocarlo con el menu ( uso pekwm como gestor de ventanas ) exporta la variable $PATH con la ruta hacia los binarios del compilador y la variable CC para que use el compilador de C para architectura MIPS.

export PATH=$PATH:/home/kir/trunk/staging_dir/toolchain-mips_gcc4.1.2/bin/
export CC=mips-linux-uclibc-gcc
cd /home/kir/trunk/package
TERM="xterm -fn fixed +sb -bg black -fg green -T sdk"
$TERM


Doy permiso de ejecución al script y lo guardo en un directorio en la ruta del PATH.

En ~/.pekwm/menu añado una entrada que llama a un xterm con los settings anteriores:
Entry = "SDK" { Actions = "Exec $TERM -iconic -e sdk &" }

* wavemon

Descargo las sources de wavemon con apt en /home/kir/trunk/package , aplico el parche http://kir.sdf-eu.org/wavemon_patch/ y hago un ./configure --host=mips-linux.
No da ningun error y ejecuto un make:
Ahora sí que da error, no encuentra ncurses.h
mips-linux-uclibc-gcc -O2 -Wall -c -o ui.o ui.c
ui.c:25:21: error: ncurses.h: No such file or directory

Creo que toca compilar ncurses.

$ cd build_dir/mips/ncurses-5.6/
./configure --host=mips-linux
make

Copio los archivos de ~/trunk/build_dir/mips/ncurses-5.6/lib
y ~/trunk/build_dir/mips/ncurses-5.6/include a ~/trunk/staging_dir/toolchain-mips_gcc4.1.2/include
y bin/
respectivamente.Creo el enlace simbólico ncurses.h que apunta a curses.h y repito el make para wavemon.
Aparecen varios warning pero finalmente compila sin errores:
file wavemon
wavemon: ELF 32-bit MSB executable, MIPS, version 1 (SYSV), dynamically linked (uses shared libs), not stripped
ls -l wavemon
-rwxr-xr-x 1 kir kir 78695 2008-09-17 09:34 wavemon

A continuación "estripo" el binario para que ocupe menos:
mips-linux-strip wavemon
file wavemon
wavemon: ELF 32-bit MSB executable, MIPS, version 1 (SYSV), dynamically linked (uses shared libs), stripped
ls -l wavemon
-rwxr-xr-x 1 kir kir 71280 2008-09-17 09:41 wavemon
.
Con strip el binario se redujo de 78965 a 71280 bytes.
Sólo queda pasarlo a la fonera con scp, wget o como nos venga en gana y disfrutarlo:

* Netdiscover

Descargo las fuentes de netdiscover con apt:
~/trunk/package$ apt-get source netdiscover
cd netdiscover-0.3beta6/
~/trunk/package/netdiscover-0.3beta6$ ./configure --host=mips-linux
.....
checking for pcap.h... no
configure: error: Cannot find pcap.h - You need libpcap installed.


Necesita libpcap, que ya está en
~/trunk$ cd build_dir/mips/libpcap-0.9.8/

En ~/trunk/build_dir/mips/libpcap-0.9.8/ipkg-install/usr tenemos los directorios include/ y lib/ . Copio su contenido a ~/trunk/staging_dir/toolchain-mips_gcc4.1.2/include y lib/ como anteriormente y repito el .configure
./configure --host=mips-linux

checking for libnet.h... no
configure: error: Cannot find libnet.h - You need libnet installed.


Bien, ya tragó con libpcap pero se atraganta con libnet, así que lo descargo.
~/trunk/package$ wget http://downloads.openwrt.org/sources/libnet.tar.gz
~/trunk/package$ tar zxvf libnet.tar.gz
~/trunk/package$ cd libnet/

El configure no da problemas pero make muestra un error:
In file included from libnet_asn1.c:60:
../include/libnet.h:117:10: error: macro names must be identifiers

Edito la línea que es un #define 1 y la cambio a #define LIBNET_BIG_ENDIAN 1
A continuación ejecuto el make sin ningún error (aunque da varios warnings) pero no me aparece ningun directorio con las librerias.
Cambio la estrategia e instalo otra versión desde el mismo ftp de OpenWrt: wget http://downloads.openwrt.org/sources/libnet-1.0.2a.tar.gz

Descomprimo, cambio al directorio, bla, bla, bla... y no funciona.

Nuevo intento descargando libnet con apt
~/trunk/package$ apt-get source libnet1
...
In file included from libnet_asn1.c:60:
../include/libnet.h:117:10: error: macro names must be identifiers

Ya empezamos ...
Edito y añado LIBNET_BIG_ENDIAN a la linea del #define 1 (#define LIBNET_BIG_ENDIAN 1) y voilà que compila el jodido!
Ahora toca copiar los archivos .h y las librerias como anteriormente.. y sigue sin ir la cosa.

Vuelvo a ejecutar el configure con la opción --prefix:
./configure --host=mips --prefix=/home/kir/trunk/staging_dir/toolchain-mips_gcc4.1.2/
make
make install


Compila y se instala sin errores; cambio al directorio de netdiscover y
~/trunk/package/netdiscover-0.3beta6$ ./configure --host=mips-linux

y....

checking libnet.h usability... yes
checking libnet.h presence... yes
checking for libnet.h... yes

~/trunk/package/netdiscover-0.3beta6$ make
O.K.
cd src
file netdiscover
netdiscover: ELF 32-bit MSB executable, MIPS, version 1 (SYSV), dynamically linked (uses shared libs), not stripped
ls -l netdiscover
-rwxr-xr-x 1 kir kir 441081 2008-09-18 09:36 netdiscover
mips-linux-strip netdiscover
file netdiscover
netdiscover: ELF 32-bit MSB executable, MIPS, version 1 (SYSV), dynamically linked (uses shared libs), stripped
ls -l netdiscover
-rwxr-xr-x 1 kir kir 367388 2008-09-18 09:38 netdiscover


Parece ser que para usar nuevas librerías, hay que compilarlas hay que usando la opción --prefix en el ./configure; así le indicamos el compilador dónde está el lib/ y el /include .

Los binarios están en http://kir.sdf-eu.org/kamikaze_808
0 Comentarios
Mood: flippant

kir Diccionario jazaro Sep 25th, 2008 4:56:19 am - Subscribe
El autor actual de este libro le asegura al lector que no tendrá que morir si lo lee.
Así da comienzo una de las grandes obras literarias del siglo XX : Diccionario jázaro, escrita en serbocroata por el serbio Milorad Pavić.

Los jázaros fueron un pueblo de origen turco que pobló el territorio entre los mares Caspio y Negro hasta finales del siglo X en que el príncipe Sviatoslav, sin bajar del caballo se comió el imperio jázaro como si fuera una manzana.
Antes de la caida del imperio, el khagán -soberano jázaro- tuvo un sueño y convocó para que lo intepretaran a tres representantes de las tres religiones (cristianismo, judaismo e islam) prometiendo convertirse él y su pueblo a la religión de quien diese de éste una interpretación más satisfactoria.
Como representantes de la religión cristiana fueron los hermanos Constantino (S. Cirilo) y Metodio de Tesalónica que conocían la lengua de sus súbditos eslavos, que en invierno llevaban pájaros en la camisa para calentarse y tenían las almas barbudas.
Farabi ibn Kora fue el representante del islam ante el khagán jázaro e Isaak Sangari el representante judío. La polémica entre los tres representantes y el khagán es descrita por el filósofo y poeta tudelano Yehudá Haleví en el libro Kitab al Khazarí, escrito en 1141.

Se hace difícil explicar el argumento de esta novela léxico, como la subtitula el autor. Se trata de una supuesta segunda edición de un diccionario impreso en latín, árabe, hebreo, griego y serbio y editado en Prusia en 1691 por el editor polaco Ioannes Daubmannus. La edición fue destruida en 1692 por orden de la Inquisición, excepto dos ejemplares que se salvaron de la quema y siguieron en circulación. El Diccionario jázaro consta de tres diccionarios que el editor recibió de un monje cristiano ortodoxo llamado Teoktisto, antiguo escribiente en el monasterio de Nikolje.
Cada uno de los diccionarios consta de las entradas referentes a los personajes, hechos y lugares de la polémica jázara desde el punto de vista de los distintos participantes en ésta.
A su vez autor recrea una historia de los hechos en tres épocas, siglo X, siglo XVII y época actual, donde se entrelazan personajes, historia y ficción.
Libro lleno de poesía, historia y sorprendentes metáforas. Recomiendo su lectura a pesar de lo que dice el autor en la última página: "Leer un libro tan voluminoso significa pasar mucho tiempo solo. Y estar mucho tiempo sin una persona cuya presencia es indispensable, porque la lectura a cuatro manos no se usa todavía".

Aquellos afortunados que dominen la lengua inglesa pueden leer esta versión de The Dictionary of the Khazars siguiendo los enlaces hipertexto.
0 Comentarios
Mood: blessed

kir Fotografia Sep 25th, 2008 7:14:04 am - Subscribe
http://www.stahlseite.de/
http://www.msiphoto.net/index.html
http://www.industriekultur-fotografie.de/
http://www.hfinster.de/


http://www.pawelwojcik.com/grandfathersgirls/


http://www.flickr.com/photos/22875780@N07/
1 Comentarios
Mood: eek!

kir rss Sep 29th, 2008 6:05:58 pm - Subscribe


· snownews
Snownews es un lector de RSS en modo texto para consolas UNIX.
Necesita que estén instaladas las librerías Ncurses 5.0 o superior, libxml2, gettex y libiconv. Podemos descargar las fuentes de http://kiza.kcore.de/software/snownews/download/snownews-1.5.10.tar.gz y compilarlo, (./configure; make ; make install) o bien instalar el binario que seguramente tendremos disponible en los repositorios de nuestra distribución linux.
Una vez iniciado entramos en la pantalla principal donde podemos añadir, borrar y actualizar los feeds. A la izquierda nos muestra la lista de los sitios agregados y a la derecha el número de noticias nuevas de esta y opcionalmente una etiqueta que escogeremos a nuestro gusto. Con las flechas de direccion (arriba, abajo) nos movemos entre los feeds y con Enter seleccionamos y pasamos a la segunda pantalla. Aquí se nos muestra la lista de noticias correspondientes al sitio seleccionado, en distinto color que indica las que ya hemos leido y las que no. Nuevamente con las teclas de cursor seleccionamos y con Enter pasamos a ver un resúmen de la noticia. Pulsando o nos abre un navegador web en el que podemos ver la noticia completa. Podemos usar el navegador por defecto del sistema o configurarlo con el que más nos guste. Pulsando h en cualquier pantalla tendremos un menú de ayuda para esa pantalla. Los comandos son simples, de una sola tecla.















Los comandos principales de la primera pantalla son:


a Añade un nuevo RSS
B Cambia el browser por defecto
D Borra el Rss seleccionado
c Renombra el feed
R Recarga todos los feeds
r Recarga el feed seleccionado
m Marca todo como leido
s Ordena los feeds por orden alfabético
C Permite etiquetar los feeds
f Aplica un filtro
F Elimina el filtro
E Muestra el log de errores


En ~/.snownews tenemos los archivos de configuración, donde podemos cambiar, editandolos, el navegador por defecto, las teclas asignadas a comandos o definir la conversión de entidades XML.

· raggle

Raggle es otro agregador RSS para consola, escrito en Ruby. Tiene teclas personalizables, render básico de HTML, soporte para varias versiones de RSS, soporte de screen, detección de browser, etc.
Podemos descargar el código fuente de http://raggle.org/files/ si no lo tenemos disponible en los repositorios.
Consta de una pantalla dividida en 3 ventanas. En la ventana de la izquierda tenemos la lista de sitios agregados; en la derecha, arriba, el título de los posts de la URL seleccionada y en la ventana inferior una descripción y el texto del post. Nos movemos entre las ventanas con la tecla Tab o con las flechas Derecha, Izquierda.
Con las teclas de dirección nos moveremos arriba y abajo en la lista o al las ventanas anterior o siguiente.















Las teclas más usuales son estas:


Tab Cambia entre las ventanas
Ret Selecciona ítem
a Añade una URL
DEL Borra el RSS seleccionado
o Abre el feed actual en el navegador
e Edita las opciones del feed actual
m Marca como ya leido
s Ordena la lista
c Selecciona una categoría a para ver
C Cierra la ventana actual
? Muestra un popup con las teclas de comando
! Sale al shell; con exit volvemos a raggle


En las páginas man hay una descripción completa de todas las teclas y opciones del programa.
0 Comentarios
Mood: achy

kir Consolas virtuales Sep 29th, 2008 6:22:30 pm - Subscribe



En cualquier instalación estándar de linux disponemos de 6 terminales de consola. Pulsando ALT + F1...F6 accedemos a cada uno de ellos.
Con screen se puede iniciar una sesión con tantos terminales virtuales como queramos en un mismo terminal. Con dvtm podremos abrir distintos terminales visibles dentro del mismo terminal.

· dvtm
dvtm es un gestor dinámico de terminales virtuales. Nos permite dividir el terminal en dos o más terminales virtuales y cambiar entre ellos con una combinación de teclas. Quizás se entienda mejor esto en la captura:


Una vez descargado el código fuente y desempaquetado editamos el archivo config.mk si queremos cambiar el directorio de instalación (por defecto /usr/local) y config.h para modificar el comportamiento de las teclas. Asegurandonos de tener instalado libncurses5 o libncursesw5 (si nuestras locales son utf8) ejecutamos make y make install.
Ejecutamos el programa escribiendo dvtm en una consola. El manejo del programa es simple; pulsando Ctrl + g ( así es como viene configurado por defecto) y a continuación otra tecla se ejecutará la acción deseada.
Las teclas básicas (precedidas de Ctrl + g) son:

c Crea una nueva ventana de shell.
j Cambia entre ventanas.
1..n Va a la ventana número n.
space Cambia entre distintos esquemas de organización en las ventanas.
. Minimiza la ventana actual.
l Incrementa el ancho e la ventana.
h Decrementa el ancho de la ventana.

Para una información más completa sobre todas las combinaciones consultar las páginas del manual.


· screen
Screen es una herramieta que suele venir incluida en cualquier distribución Linux que permite, entre otras cosas el uso de varios terminales en un mismo terminal.
El comando screen a secas nos abrirá un terminal con un shell donde podemos lanzar una aplicación. Podemos abrir una sesión screen y una vez en ella pulsar C-a d y dejar libre el terminal, mientras que las aplicaciones seguirán corriendo. Un screen -r nos recuperará la sesión.
Si la aplicación es lanzada en consola TTY, en X Window la recuperamos con screen -x.
Por ejemplo, se puede abrir un screen con irssi en consola y seguir el chat desde un entorno de ventanas, pero si rompe xorg, las aplicaciones seguirán ejecutándose en la consola.
A su vez, si ejecutamos la combinación de teclas Ctrl a y a continuación c(reate) nos creará otro shell superpuesto al anterior. Todas los comandos de tecla en screen van precedidos de la combinación Ctrl a que en adelante omitiré. Podemos ir de un shell a otro pulsando n(ext) o p(revious).

Tambien podemos definir en /etc/screenrc una serie de aplicaciones que se iniciarán automáticamente al ejecutar el comando screen :

/etc/screenrc
startup_message off
deflogin on
vbell on
vbell_msg " Wuff ---- Wuff!! "
defscrollback 1024
bind ^k
bind quit
bind K kill
bind I login on
bind O login off
bind } history
termcapinfo vt100 dl=5E[M
hardstatus off
termcapinfo xterm*|rxvt*|kterm*|Eterm* hs:ts=E]0;:fs=(barra invertida)007:ds=E]0;(barra invertida)007
hardstatus string "%h%? users: %u%?"
termcapinfo xterm*|linux*|rxvt*|Eterm* OP
termcapinfo xterm 'is=E[rE[mE[2JE[HE[?7hE[?1;4;6l'
screen -t rtorrent rtorrent
screen -t orph orph
screen -t irssi irssi
hardstatus on
hardstatus string "%{.kB}%-w%{.kY}%n %t%{-}%+w %=%{..B} %H %{..Y} %d/%m %C%a "
hardstatus alwayslastline














La penúltima línea del script de configuración sirve para establecer la línea de estado en la parte inferior de la pantalla, mostrando las shells abiertas numeradas y el nombre de la aplicación que se está ejecutando en cada una de ellas. Tambien muestra el nombre del host, la fecha y la hora.

Teclas más usuales dentro de screen (todas precedidas de Ctrl +a)

c Crea una nueva ventana
n Va a la próxima ventana
p Va a la ventana anterior
0..9 Va a la ventana según la numeración
" Lista las ventanas abiertas, pudiendo navegar entre ellas
con j y k y pulsando Enter para seleccionar
w Lista de ventanas no interactiva
A Cambia el nombre de la ventana
[ Copiar
] Pegar
? Ayuda
d Despega la sesión screen del terminal


Screen tiene muchas funcionalidades más que se alejan del alcance de este escrito; man screen es fundamental.
0 Comentarios
Mood: twisted