viernes, 24 de junio de 2022

Fresh Cloud Images in Proxmox Virtual Environment

Proxmox Virtual Environment.
The Idea was simple:
I download VM templates, so then I base my experimental/development VMs on this downloaded templates. Everything via API.

Well, current PVE API does not support importing hard drives via API.

So I've been working with packer in series of actions which generates fresh generated cloud images ready to use in proxmox.

The project is hosted on github

https://github.com/mabeett/pve-cloud-templates-packer

There is a lot of future work: other distros, more settings for the templates and so on.

domingo, 20 de febrero de 2022

Preventing keyboard and mouse from waking up suspended computer

 Scenario

Laptop computer, Linux environment, external keyboard, monitor and mouse connected.

After suspension an insignificant movement wakes up the system. Sometimes mices have high resolution, so a very minor movement wakes up the laptop

ACPI

The first solution I found was via ACPI setup, but ditn't like it.

mabeett@nowhere:~$ cat /proc/acpi/wakeup
Device	S-state	  Status   Sysfs node
GLAN	  S4	*disabled
XHC	  S3	*enabled   pci:0000:00:14.0
XDCI	  S4	*disabled
HDAS	  S4	*disabled  pci:0000:00:1f.3
mabeett@nowhere:~$

udev device tailored made

So, again, udev might be my friend. The quick-fast way is generating rule for the device as mentioned in arch wiki.

mabeett@nowhere:~$ lsusb -v   | egrep -i  'Leno|mouse|keyb'
Bus 001 Device 007: ID 17ef:608d Lenovo 
  idVendor           0x17ef Lenovo
      bInterfaceProtocol      2 Mouse
Bus 001 Device 005: ID 17ef:6099 Lenovo 
  idVendor           0x17ef Lenovo
      bInterfaceProtocol      1 Keyboard

mabeett@nowhere:~$ cat 50-non-power-on-mouse.rules 
## mouse 
ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ATTRS{idVendor}=="17ef", ATTR{idProduct}=="608d", ATTR{power/wakeup}="disabled"
# keyboard
ACTION=="add", SUBSYSTEM=="usb", DRIVERS=="usb", ATTRS{idVendor}=="17ef", ATTR{idProduct}=="6099", ATTR{power/wakeup}="disabled"

But I don't like it since I might change keyboard/mouse and with the change I should add a new rule. Then, I explored.

udev for HID devices

Forgetting the path for the device:

mabeett@nowhere:~$ dmesg  | grep Lenovo |  grep -i mouse | grep -P  "usb.+?:"
[    2.873048] usb 1-3.3: Product: Lenovo USB Optical Mouse
[    2.879777] input: PixArt Lenovo USB Optical Mouse as /devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.3/1-3.3:1.0/0003:17EF:608D.0005/input/input14
[    2.888588] hid-generic 0003:17EF:608D.0005: input,hidraw4: USB HID v1.11 Mouse [PixArt Lenovo USB Optical Mouse] on usb-0000:00:14.0-3.3/input0
mabeett@nowhere:~$ 

There it is a path for exploring dev with udevadm info -a -p ${PATH}

mabeett@nowhere:~$ udevadm info -a -p /devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.3/1-3.3:1.0/0003:17EF:608D.0005/input/input14

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.3/1-3.3:1.0/0003:17EF:608D.0005/input/input14':
    KERNEL=="input14"
    SUBSYSTEM=="input"
    DRIVER==""
    ATTR{properties}=="0"
    ATTR{uniq}==""
    ATTR{name}=="PixArt Lenovo USB Optical Mouse"
    ATTR{inhibited}=="0"
    ATTR{phys}=="usb-0000:00:14.0-3.3/input0"

  looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.3/1-3.3:1.0/0003:17EF:608D.0005':
    KERNELS=="0003:17EF:608D.0005"
    SUBSYSTEMS=="hid"
    DRIVERS=="hid-generic"
    ATTRS{country}=="00"

  looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.3/1-3.3:1.0':
    KERNELS=="1-3.3:1.0"
    SUBSYSTEMS=="usb"
    DRIVERS=="usbhid"
    ATTRS{bInterfaceSubClass}=="01"
    ATTRS{supports_autosuspend}=="1"
    ATTRS{bInterfaceProtocol}=="02"
    ATTRS{bNumEndpoints}=="01"
    ATTRS{bInterfaceClass}=="03"
    ATTRS{authorized}=="1"
    ATTRS{bInterfaceNumber}=="00"
    ATTRS{bAlternateSetting}==" 0"

  looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.3':
    KERNELS=="1-3.3"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bDeviceClass}=="00"
    ATTRS{idProduct}=="608d"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bMaxPower}=="100mA"
    ATTRS{quirks}=="0x0"
    ATTRS{speed}=="1.5"
    ATTRS{removable}=="unknown"
    ATTRS{tx_lanes}=="1"
    ATTRS{ltm_capable}=="no"
    ATTRS{bcdDevice}=="0100"
    ATTRS{urbnum}=="42757"
    ATTRS{version}==" 2.00"
    ATTRS{busnum}=="1"
    ATTRS{authorized}=="1"
    ATTRS{product}=="Lenovo USB Optical Mouse"
    ATTRS{devpath}=="3.3"
    ATTRS{devnum}=="7"
    ATTRS{idVendor}=="17ef"
    ATTRS{bmAttributes}=="a0"
    ATTRS{maxchild}=="0"
    ATTRS{manufacturer}=="PixArt"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{rx_lanes}=="1"
    ATTRS{bMaxPacketSize0}=="8"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{configuration}==""
    ATTRS{bDeviceProtocol}=="00"

  looking at parent device '/devices/pci0000:00/0000:00:14.0/usb1/1-3':
    KERNELS=="1-3"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
   [...]

The device
/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.3/1-3.3:1.0
indicates being detected as USB-HID device (
DRIVERS=="usbhid"
), but the path with the
power/wakeup
path is one level up:
/devices/pci0000:00/0000:00:14.0/usb1/1-3/1-3.3'
The approach is to invoke ../ in the attribute:
mabeett@nowhere:~$ cat /etc/udev/rules.d/52-non-power-on-hid.rules
# Disables USB HID devices (as mouse/keyboard) wakeup from suspend

ACTION=="add", SUBSYSTEM=="usb", DRIVER=="usbhid", TAG+="usb_hid_donot_wakeup"
ACTION=="add", SUBSYSTEM=="usb", DRIVER=="usbhid", ATTR{../power/wakeup}="disabled"
With this rule any HID connnected device will be disabled for wakeup.
The tag is going to be used for debugging porpouses.
I may see all the mathched/confugured devices at /run interface
mabeett@nowhere:~$ ls /run/udev/tags/usb_hid_donot_wakeup/
+usb:1-3.3:1.0

References

lunes, 9 de julio de 2012

Recambio de disco RAID1 en SB850 softRAID

Hardware

Equipo de escritorio con Placa Madre Asus M4A89TD PRO - Chipset AMD SB850. El chipset soporta Raid de mentirita (AKA fakeRAID). Tiene dos discos haciendo RAID1 (espejado). Como se puede ver en los artículos específicos, el fakeRAID de la controladora muy poco por la conformación del RAID, ya que el trabajo de sincronización lo hace el procesador principal.

Software

Ubuntu 10.04.4 LTS, Linux 2.6.32. Ubuntu viene con dmraid instalado. La instalación resultó muy sencilla.

El problema, comportamiento

Al iniciar sesión los usuarios demoraban mucho tiempo en poder lanzar aplicaciones. Luego podían trabajar normalmente hasta que sin causa clara en un momento las aplicaciones no respondían con un comportamiento típico de bloqueo de espera activa. Los bloqueos no discriminaban inicios de sesión GUIs, etc. Anulé la ejecución de algunos demonios suponiendo que en cada arranque bloqueaban entrada/salida de disco, ya que no se apreciaban abusos de memoria RAM, iotop tampoco acusaba un gran caudal de tránsito de datos.

El kernel mataba a algunos procesos porque se bloqueaban
Jun 13 09:55:57 melezca kernel: [  961.870114] INFO: task dpkg:2667 blocked for more than 120 seconds.
Jun 13 09:55:57 melezca kernel: [  961.870122] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Jun 13 09:55:57 melezca kernel: [  961.870129] dpkg          D 0000000000000000     0  2667   2638 0x00000000
Jun 13 09:55:57 melezca kernel: [  961.870141]  ffff8800bd6f1de8 0000000000000086 0000000000015c00 0000000000015c00
Jun 13 09:55:57 melezca kernel: [  961.870152]  ffff88011a2c9aa8 ffff8800bd6f1fd8 0000000000015c00 ffff88011a2c96f0
Jun 13 09:55:57 melezca kernel: [  961.870160]  0000000000015c00 ffff8800bd6f1fd8 0000000000015c00 ffff88011a2c9aa8
Jun 13 09:55:57 melezca kernel: [  961.870169] Call Trace:
Jun 13 09:55:57 melezca kernel: [  961.870186]  [] jbd2_log_wait_commit+0xc5/0x150
Jun 13 09:55:57 melezca kernel: [  961.870197]  [] ? flush_cpu_workqueue+0x4e/0xa0
Jun 13 09:55:57 melezca kernel: [  961.870206]  [] ? autoremove_wake_function+0x0/0x40
Jun 13 09:55:57 melezca kernel: [  961.870214]  [] ? _spin_lock+0xe/0x20
Jun 13 09:55:57 melezca kernel: [  961.870223]  [] ext4_sync_fs+0x7f/0xb0
Jun 13 09:55:57 melezca kernel: [  961.870232]  [] sync_quota_sb+0x5e/0x130
Jun 13 09:55:57 melezca kernel: [  961.870241]  [] __sync_filesystem+0x7a/0x90
Jun 13 09:55:57 melezca kernel: [  961.870249]  [] sync_filesystems+0xd9/0x130
Jun 13 09:55:57 melezca kernel: [  961.870256]  [] sys_sync+0x21/0x40
Jun 13 09:55:57 melezca kernel: [  961.870266]  [] system_call_fastpath+0x16/0x1b

Causa

Uno de los discos del RAID estaba roto. S.M.A.R.T. arrancaba apagado, tal vez por la controladora. Al activarlo y leer los registros la entrada "197 - 0xC5 - Current Pending Sector Count" tenía un valor distinto de cero y variable con la actividad en el sistema de archivos.

Para constatar inicié el sistema, luego desconecté la ficha SATA del disco sospechoso (los drivers y la controladora admiten hotplug), y las asfixias se detuvieron.


La solución

Conceptualmente la solución sería comprar un disco igual, indicarle a "la controladora" que es un spare drive, desconectar el roto para para que migre el RAID al nuevo disco. Por desgracia ese ajuste no se puede hacer en el menú del BIOS y ni tampoco se pueden realizar estas operaciones con dmraid, porque no está portada totalmente para metadatos de Promise FastTrack.

La (nauseabunda) manera que encontré fue instalar windows en un cuarto disco IDE. Allí instalar RAIDXpert y realizar las operaciones mencionadas. AMD no provee manera de recomponer el RAID. :(

Conclusiones


  • Un disco puede estar afectando al sistema sin disparar alarmas de SMART, en ese sentido resulta oportuno verificar los registros 0xC5 de cada disco,
  • Aparentemente la controladora RAID desactiva SMART,
  • Hay actividades de mantenimiento muy livianas y esenciales que precisan de acceso a disco (login vía ssh), es tortuoso trabajar con el disco roto.
  • Los manuales de uso de los chipsets tienen información falsa. El manual actualizado de RAIDXpert indica como instalar y usarlo en Linux y no binario para Linux no existe.

lunes, 11 de abril de 2011

Linux: udev para varios dispositivos USB

Las computadoras de escritorio relativamente nuevas y notebooks no traen puerto paralelo. Así que una de las maneras de solucionarlo es usando una placa pci-paralelo o un adaptador USB.
El escenario y problema
Tengo a CUPS con dos impresoras conectadas al USB, una vía un adaptador a paralelo y la otra es una chorro de tinta que ya es USB. La corro de tinta es Hewlett Packard y el backend para cups es hplib así que la URI es algo como hp:/usb/DeskJet_840C?serial=NumeroDeSerie la referencia es absoluta al aparato, solucionado. Pero con el adaptador se usa el backend parallel, la URI es parallel:/dev/usblp0 y ahí empieza el problema: la HP también tiene un archivo en /dev/usblpN, y a veces le toca un N=0 y otras N=1
Implementación
La encontré con udev. En el directorio /etc/udev/rules.d/ se agregan las reglas locales para renombrar los dispositivos o crear enlaces simbólicos.
Para poder encontar algunos datos que permitan individualizar al periférico:
matias@melezca:~$ udevadm info -q path -n /dev/usblp1
/devices/pci0000:00/0000:00:12.0/usb4/4-5/4-5:1.0/usb/lp1

matias@melezca:~$ udevadm info -a -p /devices/pci0000:00/0000:00:12.0/usb4/4-5/4-5:1.0/usb/lp1

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

looking at device '/devices/pci0000:00/0000:00:12.0/usb4/4-5/4-5:1.0/usb/lp1':
KERNEL=="lp1"
SUBSYSTEM=="usb"
DRIVER==""

looking at parent device '/devices/pci0000:00/0000:00:12.0/usb4/4-5/4-5:1.0':
KERNELS=="4-5:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="usblp"
ATTRS{bInterfaceNumber}=="00"
ATTRS{bAlternateSetting}==" 1"
ATTRS{bNumEndpoints}=="02"
ATTRS{bInterfaceClass}=="07"
ATTRS{bInterfaceSubClass}=="01"
ATTRS{bInterfaceProtocol}=="02"
ATTRS{modalias}=="usb:v067Bp2305d0200dc00dsc00dp00ic07isc01ip02"
ATTRS{supports_autosuspend}=="1"

looking at parent device '/devices/pci0000:00/0000:00:12.0/usb4/4-5':
KERNELS=="4-5"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{configuration}==""
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}=="a0"
ATTRS{bMaxPower}=="100mA"
ATTRS{urbnum}=="19"
ATTRS{idVendor}=="067b"
ATTRS{idProduct}=="2305"
ATTRS{bcdDevice}=="0200"
ATTRS{bDeviceClass}=="00"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="8"
ATTRS{speed}=="12"
ATTRS{busnum}=="4"
ATTRS{devnum}=="3"
ATTRS{version}==" 1.00"
ATTRS{maxchild}=="0"
ATTRS{quirks}=="0x0"
ATTRS{authorized}=="1"
ATTRS{product}=="IEEE-1284 Controller"

looking at parent device '/devices/pci0000:00/0000:00:12.0/usb4':
KERNELS=="usb4"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{configuration}==""
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}=="e0"
ATTRS{bMaxPower}==" 0mA"
ATTRS{urbnum}=="55"
ATTRS{idVendor}=="1d6b"
ATTRS{idProduct}=="0001"
ATTRS{bcdDevice}=="0206"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="12"
ATTRS{busnum}=="4"
ATTRS{devnum}=="1"
ATTRS{version}==" 1.10"
ATTRS{maxchild}=="5"
ATTRS{quirks}=="0x0"
ATTRS{authorized}=="1"
ATTRS{manufacturer}=="Linux 2.6.32-30-generic ohci_hcd"
ATTRS{product}=="OHCI Host Controller"
ATTRS{serial}=="0000:00:12.0"
ATTRS{authorized_default}=="1"

looking at parent device '/devices/pci0000:00/0000:00:12.0':
KERNELS=="0000:00:12.0"
SUBSYSTEMS=="pci"
DRIVERS=="ohci_hcd"
ATTRS{vendor}=="0x1002"
ATTRS{device}=="0x4397"
ATTRS{subsystem_vendor}=="0x1002"
ATTRS{subsystem_device}=="0x4397"
ATTRS{class}=="0x0c0310"
ATTRS{irq}=="18"
ATTRS{local_cpus}=="00000000,0000000f"
ATTRS{local_cpulist}=="0-3"
ATTRS{modalias}=="pci:v00001002d00004397sv00001002sd00004397bc0Csc03i10"
ATTRS{numa_node}=="0"
ATTRS{broken_parity_status}=="0"
ATTRS{msi_bus}==""

looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""

matias@melezca:~$
Con esa información es suficiente para generar un archivo de reglas locales con esta información:
matias@melezca:~$ cat /etc/udev/rules.d/80-melezca.rules
# Creado 20110410
# Adaptador puerto paralelo para que tenga un symlink y lo tome siempre con el mismo nombre cups
SUBSYSTEM=="usb", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2305", ATTRS{bcdDevice}=="0200", SYMLINK+="usb2Parallel"
matias@melezca:~$
No elegí renombrar porque no tiene mucho sentido forzar un nombre.
El backend para la impresora queda como:
DeviceURI parallel:/dev/usb2Parallel
Y problema solucionado.
Observaciones (?)
Con udev alcanzaría para individualizar cualquier dispositivo y usar una referencia fija.
Es vital para varios dispositicos con el mismo rol en puerto USB
Referencias
http://en.wikipedia.org/wiki/Udev
http://www.reactivated.net/writing_udev_rules.html

martes, 14 de julio de 2009

Discos Duros y la mar en coche

Sucesos en los últimos 4 meses me han llevado a comprar disco duro, a cambiarlo y recambiarlo 4 veces, me hubiera gustado encontrarme alguna vez con una publicación que explique estas cosas triviales después de que uno las vive :-(

No es tan limitada la cantidad de marcas de discos

Me paso de comprar apurado no mirar y al llegar a casa encontrarme con un disco de una marca desconocida, que no tenía siquiera página web MediaMax, no soporte, no actualizaciones.

Los discos pueden fallar aunque no acusen sectores defectuosos (SMART)

La clave esta en leer los parámetos SMART, los discos contemporáneos tienen una zona reservada para reubicar sectores defectuosos, entonces al encontrar un sector defectuoso, éste se graba en la zona reservada. Un registro se incrementa en una unidad y esos datos y muchos otros se pueden leer via S.M.A.R.T. Un programa para leerlos es smartmontools y una GUI para éste es gsmartcontrol. En lo personal la GUI me parece muy cómoda, pero no lo veo cómodo para servers, las explicaciones del artículo de Wikipedia ayudan también.

dd no ayuda mucho para pruebas de fuerza bruta (secuencial vs bloque)

Dejé el 2do disco de cambio que ya era de una marca que conocía probando con lectura y escritura permanente con dd, en el disco en bruto. Sin embargo eso no alcanzó, porque aparentemente había un problema con el dimensionamiento del disco que hacía que el funcionamiento como dispositivo de bloque fallara, concretamente los problemas estaban al escribir archivos, y en la última de las particiones que me quedaba por copiar :(

badblocks -w demora y no dejarlo terminar puede dar problemas

Para probar más use badblocks escribiendo cosas, pero se demoraba tanto que lo interrumpí en alguna de las etapas, luego particioné, cree las particiones pero al momento de escribir archivos ya estaban llenas algunas de ellas? resulta que las secuencias de escrituras se confundían con alguna secuencia tipo "final" de archivo en FAT o que se yo qué que me obligó a llenar el disco de ceros nuevamente.

domingo, 14 de septiembre de 2008

Placa WireLess Realtek 8185L

La historia
Necesitaba comprar una placa wireless que sea compatible con GNU/Linux, a quién le toque se ahorra algunos varios minutos consultado: La primera lista la conocí de haber preguntado en la lista del Lugmen, pero modelo que me ofrecían no aparecía. El segundo lo conocí buscando los drivers para mi placa. Cansado entonces de tantas vueltas me decidí por una edimax EW-7326Ig con chipset Realtek.

Drivers para placa chipset Realtek 8185L
Entonces la placa en cuestión es:
 MAbeeTT@nowhere someplace/ $: lspci -nn | grep -i 8185
03:05.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL-8185 IEEE 802.11a/b/g Wireless LAN Controller [10ec:8185] (rev 20) 
MAbeeTT@nowhere someplace/ $: lspci -vv -d 10ec:8185
03:05.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8185 IEEE 802.11a/b/g Wireless LAN Controller (rev 20)
        Subsystem: Realtek Semiconductor Co., Ltd. RTL-8185 IEEE 802.11a/b/g Wireless LAN Controller
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 64 (8000ns min, 16000ns max), Cache Line Size: 32 bytes
        Interrupt: pin A routed to IRQ 21
        Region 0: I/O ports at cc00 [size=256]
        Region 1: Memory at fdeff000 (32-bit, non-prefetchable) [size=512]
        Capabilities: <access denied>

Tenemos varias alternativas:
  • Ndiswrapper: Ndiswrapper es un proyecto que haciendo uso de la API de los drivers para windows los implementa en el kernel linux sin emulación.

    Para hacer andar el drivers de windows bajo ndiswrapper no hay que hacer otra cosa que instalarlo, si uno quiere evadir la línea de comando alcanza con instalar ndisgtk.
    Como el driver está hecho para windows arrastra un problema propio de windows, cada cierto volumen de información transferido se interrumpe la conexión. He probado sin ninguna opción de seguridad, WPA, WPA2, WEP y es indistinto. No deja de ser una opción práctica para quien no le gusa mucho juaquear

  • Drivers de Realtek: Bajé los drivers de Realtek pero no estaba preparando las cabeceras del kernel versión 2.6.24 que viene en ubuntu 8.04 así que tiraba algunos errores de compilación. Urgando encontré éste interesante HOWTO de Will Daniels. En líneas generales lo que uno tiene que hacer es bajarse el driver del sitio de él, en la parte de los scripts de compilación se aplica un parche. Luego uno agrega los módulos a /lib/modules/ e indica los módulos a cargar en /etc/modules. Para WPA la versión de nm-applet no escribe /etc/modules/interfaces de la manera en que el driver lo necesita así que hay que seguir más pasos por acá

Futuro
Un dato interesante es que hay versiones backports del kernel en ubuntu que incluyen al driver en el paquete Debian, pero no era una opción que me entusiasme, por ahora. De hecho en kernel.org la versión 2.6.26 (y posiblemente alguna anterior) ya incluye el driver.

lunes, 21 de julio de 2008

De Cobos, el Campo, Cristina o de lo triste que es ver cómo funciona el país

Desde Enero hasta la fecha han pasado tantas cosas que uno difícilmente con lo poco hábil que es pueda expresar todo lo que piensa y siente.

Cuando la fórmula Cristina Fernández de Kirchner - Julio Cobos ganaba las elecciones, gran parte del país y el periodismo lo veían como un éxito lapidario, indiscutible, los Kirchner no solo revalidaban su capacidad de gestión sino que generaron un espacio político distinto al de los esquemas tradicionales Justicialismo/Radicalismo/Movientos extremos denominado Concertación Ciudadana. A pesar de que eso no gravitó en mi voto (no los voté, quiero decir), muchas personas aquí en Mendoza votaron la fórmula porque creyeron que Cobos aportaría muchas cosas del sentir local.

En los 7 meses siguientes a la asunción de la fórmula ganadora, las cosas cambiaron vertiginosamente. Nestor Kirchner no se iba a ir de vacaciones a descansar y a intercambiar ideas en un Café literario sino que fue por la presidencia del Partido Justicialista, Cobos es una persona de perfil bajo, pero gran parte del país lo veíamos más bien pintado, como un cuadro. Los Radicales Concertadores (Radicales K) no existían políticamente en ninguna de sus formas.

En Marzo de Lousteau firmó una resolución y se fue de vacaciones. Cuando Semana Santa se acercaba y empezaron los cortes agropecuarios, muchos ni sabíamos de qué se trataba, tal vez estaban desde antes. Varios se fueron de vacaciones por el fin de semana largo los que nos quedamos en casa, escuchamos el discurso de la Presidenta (o este si parece muy cruda la versión de perfil); a partir de ese momento nada fue igual. Ese fue el principio de una catarata de discursos del la Presidenta y de NK que no comentaban cosas de un país.

Cuando CFK ganó las elecciones, no estaba contento; no era mi candidata; pero me sentía parte de un país, de una cosa, no muy sólida, heterogénea, pero al fin y al cabo una sola cosa: con un himno, con una bandera propia, sin rumbo definido, pero me sentía parte de un colectivo del cual no compartía muchas cosas; pero era parte de eso. No sé a partir de qué día me hablaron con un vocabulario desconocido para mí, alejado, no el de la campaña.

Los discursos no me gustaron nada y menos las actitudes de las plazas llenas de gente ni de un lado ni del otro, claro que lo que más me irritó fue la actitud del Gobierno, por decirme implícitamente "ellos o nosotros" y no quiero estar con unos ni los otros. Un gobierno que demora meses en decir que tiene apuro en cobrar unos impuestos que no serían tales para construir hospitales, después abaratar los alimentos, después pagar compromisos crediticios no suena muy convincente. No estando conforme uno con tales argumentos, por dudar ya era calificado por la voz oficialista de oligarca, como si las cosas fueran blanco sobre negro.

Suponer que quien vive en el campo es rico porque tiene una 4x4 es tan errado como creer que un ingeniero es rico porque tiene una computadora, o un maestro una biblioteca llena de libros o los mismos senadores nacionales son ricos porque viajan mucho y seguido en avión. Con las herramienta de trabajo no se juega; después de todo si uno tiene la razón (en cualquiera de estos dos supuestos bandos en los que uno estuvo cuasi obligado a estar adherido) no ncesita chicanear con cosas tan mundanas como esas.

Esa supuesta batalla campal que instalaron funcionarios del Poder Ejecutivo nacional fue la que conllevó que los agropecuarios se involucrasen más en el tema que averiguasen cuáles eran sus senadores y diputados que preguntaran por sus gobernadores y hasta que fueran violentos. Fue por eso mismo que no todos los intendentes actuaron de igual modo aún siendo oficialistas y eso es lógico porque muchos intendentes no tienen un vallado en la puerta que los blinde del calor de la expresión (no necesariamente popular pero igualmente incómoda) de los manifestantes. El mismo análisis cabe para algunos senadores, aún oficialistas.

Julio Cobos, quien para mí no es un genio y un gran diestro de la política hizo cosas sencillas y necesarias, escuchó a todos los dirigentes de todas las agrupaciones agropecuarias, todos los sectores involucrados tuvieron la oportunidad de conversar su problemática con el VicePresidente. Cuando varios senadores oficialistas ( y del mismo partido de CFK, no solo concertadores ) dieron el NO para poner en empate la elección de aprobación del proyecto del ley y se jugaron todo o nada en el vicepresidente Cobos fue claro: no dijo que no apoyaba las retenciones como manera de regulación/recaudación ni que "estaba con el campo" sino que pidió un cuarto intermedio. Él esperaba modificaciones, después de todo el Senado es el Congreso de las provincias donde cada provincia tiene igual cantidad de representantes no era posible que la ley entrara como por un tubo y saliera sin modificaciones.

"Mi voto no es positivo". Un supuesto héroe nacional por haber hecho una cosa elemental: hacer uso del sentido común, no dejarse llevar por una actitud tribunera: ellos o nosotros, los buenos vs. los malos. No digo que en lugar de él hubiera hecho lo mismo y entiendo la actitud popular de una sociedad que descree de todo que pone el despertador y se encuentra con una noticia así.

La oposición al día siguiente adoraba, hablan de volver a integrarlo a la UCR, cuando lo echaron contra su voluntad, lo calificaron de campanita, ese grado de oportunismo no me parece aceptable.

Ahora los políticos oficialistas hablan de lealtad, como si ser leal al partido estuviera por encima de lo que uno mismo cree; quieren soldados cuando están en el poder: que no piensen que obedezcan. Eso sí para los spots de elecciones concertación, transversalidad, etc. Vamos... si no ha pasado un año de las elecciones no nos tomen por estúpidos. Inicialmente tomaron las cosas como si el ellos, el gobierno. los mercados, el país se cayera en picada, a más de una semana veo las cosas mucho mejor, un país tranquilo, un gobierno que se oxigena, con tiempo para redactar una ley en paz; con paciencia, escuchando a todos los sectores involucrados en definitiva desde abajo sin revanchismos ni contratiempos.