Esto lo hice hace dos o tres semanas pero lo escribo ahora que tengo un rato en vacaciones.
Como contaba en otra entrada, mi actualización a la última versión de Kubuntu fue bien, excepto en un detalle importante para mí (vease el mencionado post si se quiere saber cuál era).
El caso es que decidí hacer algo que solo había intentado antes en una ocasión: Instalar una versión inferior del sistema encima de la más reciente. En este caso pasar del Kubuntu 8.10 Intrepid Ibex al anterior 8.04 Hardy Heron. Como esta última tiene LTS (Long Term Support) creo que podré vivir tres años con ella hasta que saquen la próxima, y para entonces espero no necesitar ya lo que me hace falta de esta.
Antes de comenzar el proceso, me hago copia de seguridad en otro disco de todos los datos y configuraciones de mi sistema actual. Básicamente el directorio /home y el /etc.
Me bajo la ISO para empezar la reinstalación, y antes de tostarla se me ocurre que es una buena ocasión para, de paso, poner a prueba la utilidad Unetbootin. Con ella y la ISO del CD genero una memoria USB autoarrancable y reinicio el ordenador. Le digo que arranque desde el USB y... ¡voilá! aparece el menú de arranque de Kubuntu.
Selecciono la opción para instalarlo en el disco duro y arranca sin problemas. Le digo que el particionado de los discos lo quiero hacer manual, e indico los puntos de montaje de cada partición. Me aseguro bien de desactivar la opción que formateará las particiones y finalizo la configuración de los discos. A continuación comenzará la copia de ficheros al disco duro. ¿Se dará cuenta el instalador de que ya hay un sistema instalado? ¿Conservará las configuraciones y los datos existentes? La respuesta a la primera pregunta es que sí; no aparece ningún cartel con grandes letras anunciándolo pero antes de iniciar la copia de archivos se deinstalan muchos paquetes que había en el sistema y que podrían dar problemas al hacer el downgrade. Sobre las configuraciones de los programas instalados, la respuesta es que en general NO se conservan, así que hice bien en salvar el directorio /etc con todas ellas.
A continuación comienza la copia e instalación de los paquetes de la versión que estoy instalando, de la misma forma en que se hace normalmente. Al leerlos desde la memoria USB 2.0 en lugar del CD, el proceso es muy rápido. Cuando finaliza, se reinicia el ordenador y terminan de instalarse algunos paquetes.
En cuestión de 20 minutos tengo el sistema otra vez funcionando como antes. Mis datos de /home siguen ahí intactos, lo único que echo en falta es la personalización del escritorio, que no está como lo tenía antes de empezar esta odisea. Pero, sorprendentemente tampoco está como si acabara de hacer una instalación nueva, algunas cosas sí que las ha guardado. Teniendo en cuenta que estoy volviendo desde KDE 4.1 a la versión 3.5 es una agradable sorpresa comprobar que la versión más nueva no machacó todo lo de la vieja y que seguía guardando las configuraciones de forma similar.
Lo siguiente que hago es instalar y configurar Synce y Raki para poder conectar mi PDA. Tengo que buscarlos por la web porque tampoco venían de serie con la versión 8.04, aunque sí que están en uno de los repositorios oficiales de Ubuntu. Una vez más, lo vuelvo a hacer funcionar sin problemas.
En las dos o tres semanas que han pasado desde que hice el downgrade no he tenido ningún problema, solo alguna utilidad o aplicación que he tenido que instalar porque no estaba después del downgrade, o reconfigurar alguna cosilla que, gracias a que guardé el directorio /etc, solo he tenido que copiar el fichero de configuración encima del nuevo.
Solo me queda decir que tanto Unetbootin como Kubuntu 8.04 se han comportado muy bien en todo el proceso, durante el que no han dado ni un solo problema ni ha habido que hacer nada raro.
Mostrando entradas con la etiqueta Ubuntu. Mostrar todas las entradas
Mostrando entradas con la etiqueta Ubuntu. Mostrar todas las entradas
martes, 30 de diciembre de 2008
jueves, 4 de diciembre de 2008
Synce en KDE
Hace poco he actualizado mi Kubuntu a la última versión de ese sistema, la 8.10 Intrepid Ibex.
El proceso de actualización fue bien, sin que haya nada que destacar, salvo que en esta versión desaparece el KDE 3.5 y se instala por defecto la versión 4.1. Es muy bonita y tiene muchas cosas nuevas, algunas de ellas muy radicales, como que la carpeta del Escritorio pasa a ser una carpeta más y todos los accesos directos y carpetas que tuviéramos creados antes desaparecen del nuevo, pasando a ser ficheros normales y corrientes. También está muy bien el visor de documentos (y) PDFs (Okular se llama) que permite hacer anotaciones y marcas sobre el texto. Y muchas más cosas que no describiré aquí (como los plasmoides, o las mejoras en efectos gráficos).
Lo que no está tan bien es lo que han hecho con el software para conectarse a PDAs. En la versión 3.5 estaba el paquete synce-kde para conectar con el aparato y con Raki y Kcemirror se podía acceder a sus ficheros y controlarla con el ratón. Este paquete ha sido sustituido en la versión 4.1 por otro llamado synce-kpm. Se supone que tiene las mismas funcionalidades, pero está pensado para dispositivos con Windows Mobile 5 o 6, los que son más viejos y llevan versiones anteriores no se podrán conectar, o lo harán muy limitadamente.
Lo peor es que no se puede volver a instalar el software antiguo, el paquete synce-kde no funciona con la nueva versión y por ello ha desaparecido de los repositorios de Intrepid. Debido a que lo necesito para trabajar con mi "vieja" PDA, que el OpenOffice que trae sigue siendo el 2.4 (y no el 3.0), y a que al entorno aun le quedan algunos detalles por pulir, estoy pensando seriamente volver a instalarme la versión 8.04, que además es LTS. Lo que significa que durante 3 años tendrá actualizaciones de seguridad, y si en este tiempo jubilo mi actual PDA y me hago con otra más nueva, siempre estaré a tiempo de actualizar.
El proceso de actualización fue bien, sin que haya nada que destacar, salvo que en esta versión desaparece el KDE 3.5 y se instala por defecto la versión 4.1. Es muy bonita y tiene muchas cosas nuevas, algunas de ellas muy radicales, como que la carpeta del Escritorio pasa a ser una carpeta más y todos los accesos directos y carpetas que tuviéramos creados antes desaparecen del nuevo, pasando a ser ficheros normales y corrientes. También está muy bien el visor de documentos (y) PDFs (Okular se llama) que permite hacer anotaciones y marcas sobre el texto. Y muchas más cosas que no describiré aquí (como los plasmoides, o las mejoras en efectos gráficos).
Lo que no está tan bien es lo que han hecho con el software para conectarse a PDAs. En la versión 3.5 estaba el paquete synce-kde para conectar con el aparato y con Raki y Kcemirror se podía acceder a sus ficheros y controlarla con el ratón. Este paquete ha sido sustituido en la versión 4.1 por otro llamado synce-kpm. Se supone que tiene las mismas funcionalidades, pero está pensado para dispositivos con Windows Mobile 5 o 6, los que son más viejos y llevan versiones anteriores no se podrán conectar, o lo harán muy limitadamente.
Lo peor es que no se puede volver a instalar el software antiguo, el paquete synce-kde no funciona con la nueva versión y por ello ha desaparecido de los repositorios de Intrepid. Debido a que lo necesito para trabajar con mi "vieja" PDA, que el OpenOffice que trae sigue siendo el 2.4 (y no el 3.0), y a que al entorno aun le quedan algunos detalles por pulir, estoy pensando seriamente volver a instalarme la versión 8.04, que además es LTS. Lo que significa que durante 3 años tendrá actualizaciones de seguridad, y si en este tiempo jubilo mi actual PDA y me hago con otra más nueva, siempre estaré a tiempo de actualizar.
viernes, 5 de septiembre de 2008
Ubuntu en un IBM 760XL
Hace unos meses rescaté del olvido un viejo portátil que compré hace algunos años de segunda mano, y decidí darle una segunda vida instalándole algo más moderno que el Windows 98 que llevaba. Al tener tantos años sus prestaciones no son precisamente el último grito:
- Procesador Pentium MMX a 166 Mhz
- 64 Mb de RAM
- 9 Gb de disco duro

¿Se le podría instalar un sistema operativo de última generación? Y no me estoy refiriendo a Windows Vista, por supuesto :-) Probemos con Ubuntu...
El arranque
El primer problema es cómo arrancar la instalación. El equipo dispone de un lector de CD-ROM pero no tiene la capacidad de arrancar desde un CD(eso lo inventaron allá por el año 1998, este portátil es anterior). La única forma de hacerlo es desde disquete, pero la instalación de Ubuntu y la mayoría de distros actuales no permiten iniciar la instalación arrancando con ellos.
Tras googlear un poco doy con la solución, que resulta que viene en el mismo CD de instalación de Ubuntu: Se trata de una utilidad llamada Smart Boot Manager (SBM), que es un disquete desde el que es posible arrancar a su vez el CD, aunque el ordenador no esté preparado para ello. La imagen del disquete está en el directorio install del CD de Ubuntu, con unas instrucciones que se resumen en que para generarlo basta ejecutar algo como:
dd if=sbm.bin of=/dev/fd0
Una vez se consigue iniciar el ordenador con el CD, ya se puede hacer la instalación del resto del sistema de la manera habitual... o casi.
Elección del sistema
El Ubuntu para escritorio al que estamos acostumbrados es muy bonito, muy fácil de instalar y tiene todo el software que se puede necesitar, pero en nuestro caso ese es precisamente su mayor problema: No quiero entorno gráfico ni software como OpenOffice o K3B, solo que arranque y después ya instalaré por red lo que vaya haciendo falta.
Con las versiones de escritorio no se puede elegir una instalación así, pero en cambio la versión de servidor sí que lo permite (la instalación de un sistema mínimo) y además se puede hacer en modo consola (sin entorno gráfico). Así que, paradójicamente, instalo la versión más potente en el equipo más humilde.
Instalación
No hay mucho que decir. Se copian los ficheros al disco duro, detecta la tarjeta de red PCMCIA que tengo pinchada en el portátil, y todo va como la seda. Tras finalizar el proceso se reinicia y configuro el ssh para conectarme desde otro equipo y continuar configurándolo de forma más cómoda. Antes de hacer nada más aplico las últimas actualizaciones con aptitude update; aptitude upgrade y reinicio para que arranque con el último kernel.
Problema al arrancar
Para mi horror, depués de actualizar el kernel y reiniciar el proceso se interrumpe con un mensaje de error:
"ALERT! /dev/disk/by-uuid/xxxxxxxxxxx Does not exist, dropping to a shell"
...y aparece un shell reducido cuyo prompt es
(initramfs)
Así que toca googlear para averiguar qué significa y cómo arreglarlo. Parece ser que cuando, tras actualizar el kernel, se genera el disco ram de inicio no se cargan ciertos drivers para dispositivos IDE muy antiguos y por esa razón cuando arranca da el error de que no encuentra el disco duro.
Para solucionarlo en el shell reducido del ramfs hay que cargar los módulos ide, montar el sistema y regenerar el disco ram (el initrd):
Cargamos los módulos IDE:
(initramfs) modprobe ide-disk
(initramfs) modprobe ide-generic
Creamos un directorio y montamos en él la partición raiz:
(initramfs) mkdir /mnt
(initramfs) mount -t ext3 /dev/hda1 /mnt
En vez de /dev/hda1 habrá que poner el nombre de la partición raiz de tu sistema. En el comando mount hay que especificar el sistema de ficheros (ext3) ya que al ser una versión reducida no es capaz de averiguarlo por sí misma.
Convertimos el directorio que acabamos de montar en el nuevo raiz.
(initramfs) chroot /mnt
Al hacer esto se me quedaba congelado el shell y no continuaba. Si ocurre esto, se puede interrumpir con CTRL+D y ejecutarlo de nuevo indicando el comando a ejecutar con ese nuevo raiz, que será el intérprete bash para que podamos seguir introduciendo comandos: chroot /mnt bash
Montamos /proc y /sys:
# mount /proc
# mount /sys
Vamos a /boot, borramos el initrd de nuestra versión de kernel y lo regeneramos con el comando yaird. Si tenemos el /boot en una partición separada habrá que montarlo también.
# cd /boot
# rm initrd.img-2.6.24-19-generic
# /usr/sbin/yaird -o initrd.img-2.6.24-19-generic
Se generará el fichero del initrd, y además veremos que tiene bastante menos tamaño que el original. Reiniciamos, y cuando arranque ya no volverá a salir el error. Lo malo es que cuando se actualice de nuevo la versión del kernel, probablemente volverá a ocurrir lo mismo.
Y ahora que ya funciona el ordenador y arranca ¿para qué se puede usar con su limitada potencia? Bueno, diría que eso es casi lo de menos, lo divertido es hacerlo funcionar, pero lo he estado usando para capturar tráfico de redes wifi vecinas con fines puramente educacionales ;-)
- Procesador Pentium MMX a 166 Mhz
- 64 Mb de RAM
- 9 Gb de disco duro

¿Se le podría instalar un sistema operativo de última generación? Y no me estoy refiriendo a Windows Vista, por supuesto :-) Probemos con Ubuntu...
El arranque
El primer problema es cómo arrancar la instalación. El equipo dispone de un lector de CD-ROM pero no tiene la capacidad de arrancar desde un CD
Tras googlear un poco doy con la solución, que resulta que viene en el mismo CD de instalación de Ubuntu: Se trata de una utilidad llamada Smart Boot Manager (SBM), que es un disquete desde el que es posible arrancar a su vez el CD, aunque el ordenador no esté preparado para ello. La imagen del disquete está en el directorio install del CD de Ubuntu, con unas instrucciones que se resumen en que para generarlo basta ejecutar algo como:
dd if=sbm.bin of=/dev/fd0
Una vez se consigue iniciar el ordenador con el CD, ya se puede hacer la instalación del resto del sistema de la manera habitual... o casi.
Elección del sistema
El Ubuntu para escritorio al que estamos acostumbrados es muy bonito, muy fácil de instalar y tiene todo el software que se puede necesitar, pero en nuestro caso ese es precisamente su mayor problema: No quiero entorno gráfico ni software como OpenOffice o K3B, solo que arranque y después ya instalaré por red lo que vaya haciendo falta.
Con las versiones de escritorio no se puede elegir una instalación así, pero en cambio la versión de servidor sí que lo permite (la instalación de un sistema mínimo) y además se puede hacer en modo consola (sin entorno gráfico). Así que, paradójicamente, instalo la versión más potente en el equipo más humilde.
Instalación
No hay mucho que decir. Se copian los ficheros al disco duro, detecta la tarjeta de red PCMCIA que tengo pinchada en el portátil, y todo va como la seda. Tras finalizar el proceso se reinicia y configuro el ssh para conectarme desde otro equipo y continuar configurándolo de forma más cómoda. Antes de hacer nada más aplico las últimas actualizaciones con aptitude update; aptitude upgrade y reinicio para que arranque con el último kernel.
Problema al arrancar
Para mi horror, depués de actualizar el kernel y reiniciar el proceso se interrumpe con un mensaje de error:
"ALERT! /dev/disk/by-uuid/xxxxxxxxxxx Does not exist, dropping to a shell"
...y aparece un shell reducido cuyo prompt es
(initramfs)
Así que toca googlear para averiguar qué significa y cómo arreglarlo. Parece ser que cuando, tras actualizar el kernel, se genera el disco ram de inicio no se cargan ciertos drivers para dispositivos IDE muy antiguos y por esa razón cuando arranca da el error de que no encuentra el disco duro.
Para solucionarlo en el shell reducido del ramfs hay que cargar los módulos ide, montar el sistema y regenerar el disco ram (el initrd):
Cargamos los módulos IDE:
(initramfs) modprobe ide-disk
(initramfs) modprobe ide-generic
Creamos un directorio y montamos en él la partición raiz:
(initramfs) mkdir /mnt
(initramfs) mount -t ext3 /dev/hda1 /mnt
En vez de /dev/hda1 habrá que poner el nombre de la partición raiz de tu sistema. En el comando mount hay que especificar el sistema de ficheros (ext3) ya que al ser una versión reducida no es capaz de averiguarlo por sí misma.
Convertimos el directorio que acabamos de montar en el nuevo raiz.
(initramfs) chroot /mnt
Al hacer esto se me quedaba congelado el shell y no continuaba. Si ocurre esto, se puede interrumpir con CTRL+D y ejecutarlo de nuevo indicando el comando a ejecutar con ese nuevo raiz, que será el intérprete bash para que podamos seguir introduciendo comandos: chroot /mnt bash
Montamos /proc y /sys:
# mount /proc
# mount /sys
Vamos a /boot, borramos el initrd de nuestra versión de kernel y lo regeneramos con el comando yaird. Si tenemos el /boot en una partición separada habrá que montarlo también.
# cd /boot
# rm initrd.img-2.6.24-19-generic
# /usr/sbin/yaird -o initrd.img-2.6.24-19-generic
Se generará el fichero del initrd, y además veremos que tiene bastante menos tamaño que el original. Reiniciamos, y cuando arranque ya no volverá a salir el error. Lo malo es que cuando se actualice de nuevo la versión del kernel, probablemente volverá a ocurrir lo mismo.
Y ahora que ya funciona el ordenador y arranca ¿para qué se puede usar con su limitada potencia? Bueno, diría que eso es casi lo de menos, lo divertido es hacerlo funcionar, pero lo he estado usando para capturar tráfico de redes wifi vecinas con fines puramente educacionales ;-)
miércoles, 12 de diciembre de 2007
Configuración de un NAP bluetooth en Ubuntu Linux
En la jerga de bluetooth un NAP es un Network Access Point. Es decir, podemos hacer que nuestro ordenador actúe cómo router o pasarela para conectarse a Internet desde algún dispositivo que se comunique por bluetooth, como una PDA o un teléfono móvil.
Ubuntu tiene unas buenas utilidades gráficas para el manejo de dispositivos bluetooth, pero están orientadas al intercambio de ficheros y utilización como módem de los teléfonos móviles. No he sido capaz de configurar un NAP solo con esas utilidades, así que hay que hacerlo por línea de comandos. Para ello, hay que configurar por un lado la parte concreta de bluetooth, y por otro la parte más general de red del sistema. Estos pasos están pensados para Ubuntu y Debian, pero en otros sabores de Linux serán similares.
Configuración de la parte bluetooth
Para empezar, si no lo tenemos ya hay que instalar las utilidades bluetooth, ejecutando como root:
aptitude install bluez-utils
Lo primero será comprobar que el sistema detecta el adaptador de bluetooth que tengamos en el PC, mediante el comando:
hcitool dev
Deberá aparecer algo parecido a:
Devices:
hci0 00:03:7A:EE:B6:16
Donde hci0 es el dispositivo bluetooth y los números su dirección MAC. Si no aparece nada, es que el sistema no está detectando el adaptador.
Editar el fichero /etc/default/bluetooth. Está muy bien comentado qué es cada parámetro de los que aparecen en él, para nuestros propósitos será necesario asegurarse de que, al menos, los siguiente valores están así:
BLUETOOTH_ENABLED = 1
PAND_ENABLED = 1
PAND_OPTIONS="--devup /etc/bluetooth/pan/dev-up"
PAND_OPTIONS=$PAND_OPTIONS" --listen --role NAP "
SDPTOOL_OPTIONS="add NAP"
Aquí hay un par de cosas importantes que no vienen configuradas por defecto y que no he visto bien explicado en ningún sitio: En la primera línea PAND_OPTIONS indicamos la ruta de un script que se ejecutará cuando se establezca la conexión para levantar el interface. Este script no existe, hay que crearlo; es muy simple y más abajo se explica cómo hacerlo. El otro detalle es que en la otra línea donde pone PAND_OPTIONS, si no le añadimos lo que hemos puesto en la línea anterior se perderá. Para que no ocurra, se pone primero el valor que ya tenía, con $PAND_OPTIONS, y a continuación se le concatenan los nuevos valores.
A continuación, editar el fichero /etc/bluetooth/hcid.conf, y modificar la que pone passkey, donde indicaremos un password para la conexión desde la PDA. Más abajo donde pone Default link mode deberá poner: lm accept,master;
En el paquete bluez-utils hay una cosa mal en el script de arranque /etc/init.d/bluetooth, y es que no se lanza el demonio del servicio SDP, que se encarga de mostrar los servicios ofrecidos por nuestro servidor a los dispositivos que se quieran conectar a él. Para que lo lance deberemos buscar en el mencionado fichero la parte donde pone start) y veremos que hay varias líneas donde pone 'start_algo || true'. Añadiremos run_sdptool || true
Configuración de la parte de red del sistema
Cuando se establezca la conexión bluetooth se creará un interface llamado bnep0, que deberá tener su dirección IP. Para hacerlo más simple, suponemos que esta dirección es estática, y lo configuramos en el fichero donde se encuentran todos los interfaces de red del sistema, en /etc/network/interfaces :
auto bnep0
iface bnep0 inet static
address 192.168.2.1
netmask 255.255.255.0
gateway 192.168.0.1 (o el que tengamos en nuestra conexión a Internet por defecto)
Con esto configuramos la IP, pero el interface no estará activo hasta que no se conecte un dispositivo como una PDA. Para activarlo cuando llegue ese momento es necesario un pequeño script al que nos hemos referido más arriba. Lo habíamos configurado para que se llamara /etc/bluetooth/pan/dev-up, pero podría estar en cualquier otro sitio. Su contenido es el siguiente:
#!/bin/sh
ifup --force $1
La opción de --force es mejor ponerla porque a veces al terminar la conexión el interface se queda creado y la siguiente vez no se vuelve a levantar porque se piensa que sigue activo. El script este es ejecutado por el demonio que atiende las conexiones bluetooth, y le pasa como parámetro el nombre del interfaz creado, en nuestro caso bnep0.
Para que el PC haga de router y conseguir así que la PDA se conecte a internet, deberemos ejecutar estos dos comandos:
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Suponiendo que sea eth0 la tarjeta de red por la que salimos. Estos comandos pueden ponerse en algún script de arranque para que se ejecuten al iniciar el sistema.
Para terminar, reiniciaremos los servicios de bluetooth y de red para asegurarnos de que los cambios se aplican:
/etc/init.d/networking restart
/etc/init.d/bluetooth restart
Conexión desde la PDA
Esta parte ya depende del dispositivo que tengamos. En mi caso, una PDA HP iPAQ.
Lo primero es configurarle una dirección IP. Por simplificar, se la pongo también estática y la configuro como tarjeta de red. Esto también es importante, he visto muchos tutoriales que para hacer esto mismo usan una conexión serie, como si fuera un módem. En nuestro caso todo lo contrario, lo hacemos como si fuera una tarjeta ethernet.
A continuación, activar el interface bluetooth y escanear en busca de dispositivos. Deberá aparecer nuestro PC. Lo seleccionaremos y saldrán los servicios ofrecidos. Debería aparecer uno llamado "Network Access Point" o similar. Lo seleccionaremos y nos pedirá que introduzcamos un PIN, que es el que habremos configurado en el fichero /etc/bluetooth/hcid.conf
Y si todo va bien, se establecerá la conexión. En nuetro PC al ejecutar un ifconfig aparecerá el interface bnep0 y si hacemos ping a la IP de la PDA deberá responder. Parece complicado, pero después de hacerlo tres o cuatro veces es muy sencillo :-)
Más información:
http://bluez.sourceforge.net/contrib/HOWTO-PAN
http://quozl.netrek.org/bluetooth/
http://www.triptico.com/software/bluetooth.html
Ubuntu tiene unas buenas utilidades gráficas para el manejo de dispositivos bluetooth, pero están orientadas al intercambio de ficheros y utilización como módem de los teléfonos móviles. No he sido capaz de configurar un NAP solo con esas utilidades, así que hay que hacerlo por línea de comandos. Para ello, hay que configurar por un lado la parte concreta de bluetooth, y por otro la parte más general de red del sistema. Estos pasos están pensados para Ubuntu y Debian, pero en otros sabores de Linux serán similares.
Configuración de la parte bluetooth
Para empezar, si no lo tenemos ya hay que instalar las utilidades bluetooth, ejecutando como root:
aptitude install bluez-utils
Lo primero será comprobar que el sistema detecta el adaptador de bluetooth que tengamos en el PC, mediante el comando:
hcitool dev
Deberá aparecer algo parecido a:
Devices:
hci0 00:03:7A:EE:B6:16
Donde hci0 es el dispositivo bluetooth y los números su dirección MAC. Si no aparece nada, es que el sistema no está detectando el adaptador.
Editar el fichero /etc/default/bluetooth. Está muy bien comentado qué es cada parámetro de los que aparecen en él, para nuestros propósitos será necesario asegurarse de que, al menos, los siguiente valores están así:
BLUETOOTH_ENABLED = 1
PAND_ENABLED = 1
PAND_OPTIONS="--devup /etc/bluetooth/pan/dev-up"
PAND_OPTIONS=$PAND_OPTIONS" --listen --role NAP "
SDPTOOL_OPTIONS="add NAP"
Aquí hay un par de cosas importantes que no vienen configuradas por defecto y que no he visto bien explicado en ningún sitio: En la primera línea PAND_OPTIONS indicamos la ruta de un script que se ejecutará cuando se establezca la conexión para levantar el interface. Este script no existe, hay que crearlo; es muy simple y más abajo se explica cómo hacerlo. El otro detalle es que en la otra línea donde pone PAND_OPTIONS, si no le añadimos lo que hemos puesto en la línea anterior se perderá. Para que no ocurra, se pone primero el valor que ya tenía, con $PAND_OPTIONS, y a continuación se le concatenan los nuevos valores.
A continuación, editar el fichero /etc/bluetooth/hcid.conf, y modificar la que pone passkey, donde indicaremos un password para la conexión desde la PDA. Más abajo donde pone Default link mode deberá poner: lm accept,master;
En el paquete bluez-utils hay una cosa mal en el script de arranque /etc/init.d/bluetooth, y es que no se lanza el demonio del servicio SDP, que se encarga de mostrar los servicios ofrecidos por nuestro servidor a los dispositivos que se quieran conectar a él. Para que lo lance deberemos buscar en el mencionado fichero la parte donde pone start) y veremos que hay varias líneas donde pone 'start_algo || true'. Añadiremos run_sdptool || true
Configuración de la parte de red del sistema
Cuando se establezca la conexión bluetooth se creará un interface llamado bnep0, que deberá tener su dirección IP. Para hacerlo más simple, suponemos que esta dirección es estática, y lo configuramos en el fichero donde se encuentran todos los interfaces de red del sistema, en /etc/network/interfaces :
auto bnep0
iface bnep0 inet static
address 192.168.2.1
netmask 255.255.255.0
gateway 192.168.0.1 (o el que tengamos en nuestra conexión a Internet por defecto)
Con esto configuramos la IP, pero el interface no estará activo hasta que no se conecte un dispositivo como una PDA. Para activarlo cuando llegue ese momento es necesario un pequeño script al que nos hemos referido más arriba. Lo habíamos configurado para que se llamara /etc/bluetooth/pan/dev-up, pero podría estar en cualquier otro sitio. Su contenido es el siguiente:
#!/bin/sh
ifup --force $1
La opción de --force es mejor ponerla porque a veces al terminar la conexión el interface se queda creado y la siguiente vez no se vuelve a levantar porque se piensa que sigue activo. El script este es ejecutado por el demonio que atiende las conexiones bluetooth, y le pasa como parámetro el nombre del interfaz creado, en nuestro caso bnep0.
Para que el PC haga de router y conseguir así que la PDA se conecte a internet, deberemos ejecutar estos dos comandos:
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Suponiendo que sea eth0 la tarjeta de red por la que salimos. Estos comandos pueden ponerse en algún script de arranque para que se ejecuten al iniciar el sistema.
Para terminar, reiniciaremos los servicios de bluetooth y de red para asegurarnos de que los cambios se aplican:
/etc/init.d/networking restart
/etc/init.d/bluetooth restart
Conexión desde la PDA
Esta parte ya depende del dispositivo que tengamos. En mi caso, una PDA HP iPAQ.
Lo primero es configurarle una dirección IP. Por simplificar, se la pongo también estática y la configuro como tarjeta de red. Esto también es importante, he visto muchos tutoriales que para hacer esto mismo usan una conexión serie, como si fuera un módem. En nuestro caso todo lo contrario, lo hacemos como si fuera una tarjeta ethernet.
A continuación, activar el interface bluetooth y escanear en busca de dispositivos. Deberá aparecer nuestro PC. Lo seleccionaremos y saldrán los servicios ofrecidos. Debería aparecer uno llamado "Network Access Point" o similar. Lo seleccionaremos y nos pedirá que introduzcamos un PIN, que es el que habremos configurado en el fichero /etc/bluetooth/hcid.conf
Y si todo va bien, se establecerá la conexión. En nuetro PC al ejecutar un ifconfig aparecerá el interface bnep0 y si hacemos ping a la IP de la PDA deberá responder. Parece complicado, pero después de hacerlo tres o cuatro veces es muy sencillo :-)
Más información:
http://bluez.sourceforge.net/contrib/HOWTO-PAN
http://quozl.netrek.org/bluetooth/
http://www.triptico.com/software/bluetooth.html
Suscribirse a:
Entradas (Atom)