Para tener un servidor MySQL corriendo en Slackware es necesario hacer un par de cosas adicionales a lo que dice los archivos de configuracion de MySQL, aqui lo necesario para levantar MySQL:
# chown mysql /var/lib/mysql/mysql/*
# chown mysql /var/lib/mysql/*
# mysql_install_db
# chown -R mysql:mysql /var/lib/mysql
# /etc/rc.d/rc.mysqld start
con eso queda listo, solo hay que cambiar el password del root de esta manera:
lunes, 25 de octubre de 2010
lunes, 30 de agosto de 2010
Correr programas Libusb sin privilegios de root
http://code.google.com/p/picusb/wiki/libusb_and_udev
jueves, 5 de agosto de 2010
Estandar de jerarquia de archivos
El link muestra el estandard de jerarquia de archivos, un documento escencial para entender la estructura de del sistema de archivos de cualquier distribucion linux.
Filesystem Hierarchy Standard
Filesystem Hierarchy Standard
miércoles, 4 de agosto de 2010
Broadcom BCM57780 Slackware 13.1
La tarjeta de red Ethernet Broadcom BCM67780 que viene en la Lenovo Y560 por un error de modulos no inicia la interfaz eth0. Para esto se puede hacer lo siguiente:
# modprobe -r broadcom
# modprobe -r tg3
# modprobe broadcom
# modprobe tg3
# /etc/rc.d/rc.inet1 restart
# dhcpcd eth0
Esto es un poco raro ya que cuando se hace:
# lcpci -vvv
09:00.0 Ethernet controller: Broadcom Corporation NetLink BCM57780 Gigabit Ethernet PCIe (rev 01)
Subsystem: Lenovo Device 38cf
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-SERR-
Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 00000000fee0f00c Data: 41d1
Capabilities: [cc] Express (v2) Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us,>
# modprobe -r broadcom
# modprobe -r tg3
# modprobe broadcom
# modprobe tg3
# /etc/rc.d/rc.inet1 restart
# dhcpcd eth0
Esto es un poco raro ya que cuando se hace:
# lcpci -vvv
09:00.0 Ethernet controller: Broadcom Corporation NetLink BCM57780 Gigabit Ethernet PCIe (rev 01)
Subsystem: Lenovo Device 38cf
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
Capabilities: [50] MSI: Enable+ Count=1/1 Maskable- 64bit+
Address: 00000000fee0f00c Data: 41d1
Capabilities: [cc] Express (v2) Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <4us,>
domingo, 1 de agosto de 2010
Frame buffer de inicio
Slackware 13.1 instalado en una Lenovo Y560 demora en cargar el kernel, y al iniciar sale este mensaje antes de entrar al modo de video normal:
Console: switching to colour frame buffer device 128x48
fb0: VESA VGA frame buffer device
Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
Console: switching to colour frame buffer device 128x48
fb0: VESA VGA frame buffer device
Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
Compilacion de kernel x86_64
Compilando el kernel para 64 bits (se supone correctamente configurado con #make menuconfig)
Al compilar sale este error:
arch/i386/boot/boot.h: Assembler messages:
arch/i386/boot/boot.h:112: Error: bad register name `%dil'
make[1]: *** [arch/x86_64/boot/video.o] Error 1
make: *** [bzImage] Error 2
Lo que puedo entender es que quiere compilar archivos de i386 porque debe haber algun driver o modulo que no tiene version para 64 e intenta compilarlo para 32. Lo que se debe hacer es cambiar la linea 112 que dice ahi: de la siguiente manera:
asm volatile("movb %%fs:%1,%0" : "=r" (v) : "m" (*(u8 *)addr));
por:
asm volatile("movb %%fs:%1,%0" : "=q" (v) : "m" (*(u8 *)addr));
El tag r se refiere a un registro de proposito general, y como se ha configurado para 64, el %dil cumple con esto; sin embargo, en x86 este registro no existe. Solo se necesita un registro que pueda accesar al byte mas bajo, y esto se consigue colocando el tag q.
Una mejor explicacion se puede conseguir aqui.
Hay que recalcar que en esa pagina usa como ejemplo un int y un char, y para nuestro es equivalente ya que se esta usando un u8. (Para los que no saben que es un u8 busquen en google: "kernel data types").
Disculpen la redaccion mediocre, pero esto solo es con fines de archivo.
Al compilar sale este error:
arch/i386/boot/boot.h: Assembler messages:
arch/i386/boot/boot.h:112: Error: bad register name `%dil'
make[1]: *** [arch/x86_64/boot/video.o] Error 1
make: *** [bzImage] Error 2
Lo que puedo entender es que quiere compilar archivos de i386 porque debe haber algun driver o modulo que no tiene version para 64 e intenta compilarlo para 32. Lo que se debe hacer es cambiar la linea 112 que dice ahi: de la siguiente manera:
asm volatile("movb %%fs:%1,%0" : "=r" (v) : "m" (*(u8 *)addr));
por:
asm volatile("movb %%fs:%1,%0" : "=q" (v) : "m" (*(u8 *)addr));
El tag r se refiere a un registro de proposito general, y como se ha configurado para 64, el %dil cumple con esto; sin embargo, en x86 este registro no existe. Solo se necesita un registro que pueda accesar al byte mas bajo, y esto se consigue colocando el tag q.
Una mejor explicacion se puede conseguir aqui.
Hay que recalcar que en esa pagina usa como ejemplo un int y un char, y para nuestro es equivalente ya que se esta usando un u8. (Para los que no saben que es un u8 busquen en google: "kernel data types").
Disculpen la redaccion mediocre, pero esto solo es con fines de archivo.
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.
# 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
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
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
Suscribirse a:
Entradas (Atom)