En la web del periódico El país
Podeis encontrar una noticia que igual os interesa, y empieza así:
Erase que se era un señor llamado Bill Gates... y cito textualmente: "Microsoft acata una de las exigencias de la UE y facilita parte de su código".
El ordenador en cuestión se encenderá siguiendo los pasos dados en la receta Encendido remoto de un ordenador con Debian, mediante Wake On LAN . Entonces pedirá un servidor PXE. Para ello utilizaremos el servidor de dhcp 3 que soporta este tipo de servicio. Se necesita un servidor tftp, ya que es el único servidor soportado por PXE para la transmisión de ficheros. TFTP es un servidor ftp ligero. No tiene ningún tipo de autentificación así que cuidado con lo que ponéis en su directorio. Usaremos el servidor atftp. Necesitaremos un archivo llamado pxelinux.0 . Este archivo es el encargado de cargar el arranque, algo así como el GRUB en versión red. Existe una versión del GRUB que permite el arranque en red, aúnque parece ser que todavía no funciona correctamente.
pxelinux.0 es el que he usado yo. Seguramente existan versiones más nuevas, pero este me ha funcionado sin problemas. Necesitaremos también un núcleo para compilar y una imagen del sistema.
Configuración de dhcp
Necesitaremos el paquete debian dhcp3-server que será nuestro servidor PXE. Estas son las líneas que hay que añadir al dhcpd.conf
Aquí estamos indicando de donde se obtiene el pxelinux.0 y que grupo de máquinas van a obtener el arranque. La línea de next-server es por si el servidor tftp está en una máquina diferente a la del servidor dhcp. Si no es así, se puede eliminar. Le asignamos una ip fija. No es necesario, pero nos puede venir bien a la hora de hacer los primeros seguimientos de la máquina.
Configuración del servidor tftp
Necesitaremos el paquete debian atftp .
Si lo usamos, deberemos tener en el archivo /etc/default/atftpd la siguiente configuración:
Esta es mi configuración. /tftpboot es el directorio donde debe iremos poniendo los ficheros que vamos a enviar.
Configurando el arranque
Desde ahora tomamos como directorio de trabajo /tftpboot. Copiamos aquí el archivo pxelinus.0. Creamos un directorio llamado pxelinux.cfg . Este contendrá los archivos de configuración para cada máquina. Yo usaré Default , genérico para todas las máquinas. Se puede llegar a personalizar para una máquina determinada o un grupo de maquinas. Este archivo contiene la configuración del arranque y una serie de parámetros que podemos indicarle al kernel.
label linux
kernel bzImage
append nfsaddrs=192.168.0.1 root=192.168.0.1:/tftpboot/192.168.0.12
label indica el sistema operativo que vamos a arrancar.
kernel indica como se llama el fichero que contiene el kernel.
append son una serie de parámetros que podemos pasar al kernel. En la configuración que os doy indicamos que el servidor nfs está en un servidor concreto y donde monta el directorio raíz. Otra opción podría ser cargar el directorio raíz en RAM, siempre y cuando nuestros ordenadores dispongan de los suficientes megas.
Configurando nuestro Linux
Vamos a configurar el sistema que vamos a cargar en los clientes. Primero compilaremos el kernel. Simplemente sugeriros que incluyáis todo lo que valláis a usar en el núcleo, para no cargarlo como módulos. Aquí surge una duda de como seguir. Si vamos a montar el directorio raíz en RAM o NFS deberemos incluir diferentes módulos.
NFS
requiere de los módulos File systems Kernel automonter support File systems -> Network Filesystems: NFS File System Suport y Root File System on NFS .
RAM
no requiere de módulos especiales.
Creando nuestro sistema de ficheros
Vamos a crear ahora nuestra imagen initrd. Esta es una imagen comprimida de nuestro sistema de ficheros que solo es necesaria si usamos RAM para montar nuestro sistema de ficheros. Si usamos NFS todos estos procesos quedarán reducidos a ejecutar la orden debootstrap sobre el directorio del NFS. Dicho directorio debe estar en el del servidor tftp (/tftpboot en nuestro caso)
Creamos un fichero del tamaño de nuestro file system dd if=/dev/zero of=/home/pepe/fsfile bs=1K count=130000 . Con esto he creado un archivo llamado fsfile con un tamaño de 130MB.
Lo formateamos. Aquí os sugiero que si vais a montar vuestro sistema de ficheros en RAM lo formateéis en ext2, el journalism no tiene sentido aquí. mke2fs -j -b 4096 /home/pepe/fsfile . Lo formateo a ext3
(-j) con un inodo por cada 4 kb.
Montamos nuestro filesystem
mount -o loop -t ext3 /home/pepe/fsfile
Lo "llenamos". Podemos montar un sistema "mínimo" de muchas maneras. La mas fácil es la orden debootstrap, aunque de mínima tenga poco (104Mb).
debootstrap sarge /home/pepe/fsfile http://ftp.debian.org/debian. En el caso de querer algún paquete más podéis usar la orden chroot para cambiar el directorio raíz y luego usar el apt-get install
Cambiamos los archivos de configuración, los de arranque,etc.
Desmontamos el sistema de ficheros. umount /home/pepe/fsfile
Esta receta no se si tendrá muchas aplicaciones "domésticas", en ella vamos a tratar de crear n máquinas virtuales en una única máquina física. Esto permitirá crear (por ejemplo) n servidores, cada uno con unos servicios determinados en una misma máquina física. Con ello se consigue (entre otras cosas) proteger unos servicios mas "críticos" de otros más "vulnerables" (lo que pase en una máquina es independiente al resto).
Hola chicos, cómo estáis, os quiero un montón y no estoy borracho! ;)
No es ninguna locura. Podríamos movernos un poco y traer a Stallman a la ESI. Hace tiempo Paco me dijo que no era una idea rara y que Stallman, mientras tuviera X cosas mínimas, vendría encantado.
Beber agua embotellada es bueno, pero imaginad lo que sería beber del manantial de donde la cogen para embotellar!!
A ver, ¿cómo se formaliza esta propuesta y a quién tiene que llegar?
Que ilusión poder tocar a Ricardo SAltohombre!!
Si siempre os habéis preguntado como es el lugar donde se fabrican las placas base, os paso un interesantísimo enlace en el que podréis hacer un completo tour por una de las factorías del fabricante de placas base Gigabyte.
Comienza el viaje
Cómo activar el soporte SSL de apache-2 para utilizar HTTPS y navegación segura. Los pasos que se describen son para una Debian o sucedaneos, pero supongo que no será muy distinto a otra distro.
Su configuración está en /etc/bluetooth/hcid.conf y la base de datos con los pin en /etc/bluetooth/pinDB
Descubrimiento de servicios
El demonio del protocolo de descubrimiento de servicios SDP (Service discovery protocol) es sdpd
Gestión de SDP
#sdptool
sdptool - SDP tool v2.24
Usage:
sdptool [options] <command>[command parameters]
Options:
-h Display help
-i Specify source interface
Commands:
search Search for a service
browse Browse all available services
records Request all records
add Add local service
del Delete local service
get Get local service
setattr Set/Add attribute to a SDP record
setseq Set/Add attribute sequence to a SDP record
Services:
DID SP DUN LAN FAX OPUSH FTP HS HF SAP NAP GN PANU HID CIP CTP
A2SRC A2SNK AVRCT AVRTG SR1 SYNCML ACTIVESYNC HOTSYNC PALMOS
NOKID PCSUITE
Es importante resaltar que para que un servicio sea descubierto, debes añadirlo mediante un sdptool add <servicio>, la lista de abajo del comando anterior nos muestra los servicios disponibles.
Algunos comando útiles
Con hcitool scan obtendrás una lista de los dispositivos presentes a tu alrededor.
$hcitool scan
Scanning ...
00:15:A0:42:34:8D Nokia 6680
Muestra la dirección bluetooth y el nombre, puedes comprobar la dirección bluetooth en los nokia 66** tecleando el código “*#2820#”
Para obtener una lista de los servicios que ofrece cada dispositivo usamos la herramienta sdptool, en nuestro caso, y para ver lo que ofrece el móvil:
#sdptool browse 00:15:A0:42:34:8D
Browsing 00:15:A0:42:34:8D ...
Service Name: Hands-Free Audio Gateway
Service RecHandle: 0x10003
Service Class ID List:
"Handfree Audio Gateway" (0x111f)
"Generic Audio" (0x1203)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 2
Language Base Attr List:
code_ISO639: 0x454e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"Handfree Audio Gateway" (0x111f)
Version: 0x0101
Service Name: Headset Audio Gateway
Service RecHandle: 0x10004
Service Class ID List:
"Headset Audio Gateway" (0x1112)
"Generic Audio" (0x1203)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 3
Language Base Attr List:
code_ISO639: 0x454e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"Headset" (0x1108)
Version: 0x0100
...todos los servicios
Esto proporciona toda la información que necesitas acerca de todos los servicios presentes en el dispositivo, en este caso el teléfono móvil.
Servicio dial-up networking
Nos vamos a centrar en el servicio dial-up networking, para ello observamos que la salida del comando anterior nos presenta la siguiente información:
Service Name: Dial-Up Networking
Service RecHandle: 0x1000e
Service Class ID List:
"Dialup Networking" (0x1103)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 3
Language Base Attr List:
code_ISO639: 0x454e
encoding: 0x6a
base_offset: 0x100
Profile Descriptor List:
"Dialup Networking" (0x1103)
Version: 0x0100
Para indicarle al ordenador que vamos a usar ese servicio necesitas editar el archivos /etc/bluetooth/rfcomm.conf e insertar una entrada tal que:
donde el device es el identificador del movil y el channel el que nos indica el registro obtenido con sdptool, justo despues de “RFCOMM” (0×0003).
Reinicia para cargar la nueva configuración:
#/etc/init.d/bluez-utils restart
Restarting bluez-utils: hcid sdpd rfcomm.
#rfcomm release 1
#rfcomm connect 1
Connected /dev/rfcomm1 to 00:15:A0:42:34:8D on channel 10
Press CTRL-C for hangup
Ya tienes una conexión lista, con lo cual, por ejemplo, si estas en un portátil en mitad del campo y quieres conectarte a internet con tu
portátil a través de tu móvil tienes que configurar un enlace ppp a través del móvil.
Para eso, tienes comandos muy interesantes:
pand: TCP/IP sobre Bluetooth
—listen para el servidor
—connect para el cliente
/etc/bluetooth/pan/dev-up: pand ejecuta este script al levantar TCP/IP.
dund: Ejecutar PPP sobre Bluetooth RFCOMM
—listen para el servidor
—connect para el cliente
Si no has establecido una “relación de confianza” entre tu móvil y tu
portátil te pedirá en ambos dispositivos el pin.
Protocolo OBEX
Si quieres mandarle un archivo a tu teléfono puedes utilizar el protocolo OBEX. Con gnome-obex-send puedes mandarle un archivo y con gnome-obex-server debe aparecer una opción en nautilus, de forma que, si haces click en el botón derecho sobre un archivo debería aparecer una opcion para enviarlo via bluetooth.
Configurando un Headset
Una interesante aplicación es la de poder usar uno de esos micrófonos y auriculares bluetooth. Estos dispositivos implementan un servicio denominado headset.
Para ello existe un interesante proyecto basado en Alsa, lo puedes encontrar en bluetooth-alsa (no es paquete debian).
Dos errores que surgieron en la configuración son:
felix:#btsco
Error: control open (hw:0): No such device
Error: Can't find device. Bail
Esto indica que no tienes configurados los drivers de alsa y no encuentran los dispositivos. Prueba a instalar y ejecutar el alsaconf para instalar alsa.
Otro problema, despues de instalar los drivers de alsa puede ser:
felix:#btsco
Error: hwdep next device (hw:0): Operation not permitted
Error: control open (hw:1): No such device
Error: Can't find device. Bail
No tienes cargado el modulo del kernel snd-bt-sco, está en el directorio kernel del programa btsco, tienes que ejecutar make; make install en dicho directorio.
Si al hacer modprobe snd-bt-sco, no lo encuentra (y se te ha compilado todo bien) copia el .ko a mano a /lib/modules/2.6.14-2-386/kernel/drivers/ poniendo la versión del kernel que tengas (la mia es una 2.6.14-2-386).
Comentarios
Esta receta se irá ampliando conforme se prueben mas servicios y utilidades.
Bien, supongamos un procesador MIPS R4000. Si conseguimos un thread de usuario, sería posible de alguna forma conseguir ejecutar código a nivel de kernel desde ese thread?