domingo, 25 de julio de 2010

Compilacion de kernel

Para compilar el kernel se deben seguir los siguientes pasos:
# make menuconfig (para linea de comandos)
# make xconfig (para kde)
# make gconfig (para gnome)
Cualquiera de los tres para configurar que paquetes son agregados al kernel o son compilados como modulos

# make
Para compilar
# make modules
# make modules_install
# make install

En caso de necesitar initrd, se crea asi:
# mkinitrd -o initrd.img-$version $version

El instalador cambia el archivo de boot y guarda una copia del antiguo. El kernel anterior tambien queda guardado.

Es recomendable, adicionalmente, configurar el grub/lilo para que haga un link al kernel anterior en caso no funcione el kernel recientemente compilado.

lunes, 12 de julio de 2010

Reglas udev

Articulo sobre como escribir reglas udev

http://www.reactivated.net/writing_udev_rules.html

viernes, 9 de julio de 2010

Ing inversa de un dispositivo USB

La idea es instalar un Windows en una maquina virtual, instalar el driver del dispositivo USB en la maquina virtual y desde Linux (o el OS que haga de host) monitorear el puerto USB para descifrar como que tipo de comunicacion usa el dispositivo, la velocidad, etc.
Para monitorear un puerto USB se puede usar el modulo de kernel usbmon, que, de manera resumida, se puede iniciar asi:
#mount -t debugfs none_debugs /sys/kernel/debug
#modprobe usbmon

#ls -l /sys/kernel/debug/usb/usbmon/
0s 0u 1s 1t 1u 2s 2t 2u

Estos archivos tienen el formato: (numero_de_bus)(s|u|t). Se debe saber el numero de bus al que el dispositivo esta conectado. Esto se puede lograr con un
#dmesg
, o con un
#cat /proc/bus/usb/devices

Para monitorear el trafico hacemos:
#cat /sys/kernel/debug/usb/usbmon/2u

Luego de monitear todo el trafico necesario, usamos la libreria libusb para hacer la comunicacion con el puerto USB y hacer el driver. Libusb tiene implementaciones para Linux y Windows.

//FIXME