Ankalima


Por qué vendemos tan barata nuestra libertad ?? Por qué no perseguimos nuestros sueños con más ahínco ?? Por qué no amamos más ??

viernes, enero 06, 2006

Conceptos y Comandos WIFI para FreeBSD 5.3 RELEASE y Slackware 10.1



Que es wifi ?



*Un conjunto de standars que regulan la conexión entre tarjetas (hardware) o interfaces  (software) que transmiten tramas tcp/ip sin cables, es decir haciendo uso de determinadas  frecuencias de radio reservadas en el espectro radioeléctrico para este fin. Las  frecuencias reservadas varían según los estandars o los países.

Para qué se usa ?


*802.11 (WiFi) es un conjunto de standars para redes wireless (del que hablaremos en este  documento)

*Tres estándar 802.11 se usan comúnmente:

-802.11b a 2.4GHz, 11Mbit de velocidad máxima. (el más común)

-802.11g a 2.4GHz, 54Mbit de velocidad máxima. (relativamente nuevo, compatible con su  antecesor 802.11b)

-802.11a a 5.8GHz, 54MBit de velocidad máxima. (Menos popular y de menor alcance.)

IEEE 802.11


-802.11a (5 Ghz)
-802.11b (2.4 Ghz) 11 Mbps
-802.11c Define características de AP como bridges.
-802.11d Permite el uso de 802.11 en países restringidos por el uso de las frecuencias.
-802.11e Define el uso de Os.
-802.11f Define el enlace entre SETA y AP. Roaming
-802.11g (2.4 Ghz a más velocidad que 802.11b , 54 Mbps ) Compatible con 802.11b
-802.11h Superior al 802.11a permite asignación dinámica de canales (coexistencia  con el HyperLAN). Regula la potencia en función de la distancia.
-802.11i Estándar que define la encriptación y la autentificación segura ,  es el estándar que implementara una forma segura de trabajar
-802.11j Estándar que permitirá la armonización entre el IEEE, el ETSI  HyperLAN2, ARIB e HISWANa.(Japón)
-802.11m Propuesto para mantenimiento de redes inalámbricas.

Hardware 802.11


Access Point (PA o Punto de Acceso):


*Es el centro de la red wireless. Los access points pueden funcionar como simples Bridges,
 o pueden contener ruteo, NAT, u otras funcionalidades.

Wireless NIC (Tarjetas wifi):


*La tarjeta wireless cliente es la que permite a tu computadora conectarse a una red wireless.
 Tanto *Linux como *BSD la tratan como un dispositivo estándar de red, del tipo: ath0,  dl0, wlan0. Algunas tarjetas puedes operar como PA.

*Las tarjetas wifi pueden conectarse a buses tipo PCI, ISA, compactflash, PCMCIA, CardBus, USB.

Antenas:


*Las antenas son el elemento radiante que en cierta forma, modelan la forma con que la sale  potencia de el equipo RF,
 no agregan poder de transmisión, pero de su calidad, posición y  orientación, depende mucho la calidad y
 estabilidad de la señal de RF y por lo tanto la estabilidad y calidad de la red.

*Algunas antenas externas mejoran mucho el alcance, la calidad y la estabilidad de una red wifi

*Existen en el mercado antenas omnidirecionales y direccionales, de polarización vertical y  parabólicas.

Vista rápida de 802.11


*Cada red 802.11 se define por su SSID, o Service Set Identifier. Esto define básicamente  el nombre de la red.

*Pueden coexistir distintas redes wireless en el mismo canal, pero el ancho de banda se  reducirá significativamente.

*Las redes 802.11b/g tienen que estar por lo menos a 3 canales de distancia entre sí.

Como funcionan las redes wifi


*Cuando un cliente quiere unirse a una red, escucha a través de los canales buscando la  señal más fuerte y el ssid deseado.

*Las redes operan en modo infraestructura (BSS) y son coordinadas por un AP, o en modo Ad-hoc  (IBSS), lo cual no requiere un AP.

Modo Infraestructura (BSS)


*El modo infraestructura (requiere un AP): Generalmente hay menos problemas que con Ad-hoc
 (no todos los fabricantes implementan Ad-hoc de la misma forma).

*En infraestructura los interfaces wifi pueden configurarse de distintos modos

**Modo Managed


  Los clientes se asocian/autentifican contra
  un access point (AP) o tarjeta en modo Master.
  Es necesario conocer el ESSID de la red. Si no
  se conoce se puede detectar entrando en modo
  Monitor

**Modo Monitor


  La tarjeta escucha en un canal específico
  sin enviar ningún paquete.
  No le importan los CRC's de los paquetes.
  ¡No es lo mismo que el modo promiscuo!

**Modo Master


  La tarjeta se pone en modo AP y acepta
  conexiones de otras tarjetas que estén
  funcionando en modo Managed. Es necesario
  establecer el ESSID, la IP y en su caso
  la clave WEP

Modo Ad-hoc (IBSS)


*Puede resultar más barato si solo se conectan 2 o 3 computadoras.
 Todas las computadores deben verse entre sí y no hay un punto coordinador.

*Todas las máquinas deben de tener sus interfaces wifi en modo ad-hoc

**Modo Ad-hoc ( Punto a Punto )


  En este modo los equipos se conectan entre
  sí. Similar al crossover en redes
  cableadas pero permite conectar mas de 2 equipos.
  No existe un AP que gestione todo el
  tráfico de la red. La cobertura de la
  red depende del alcance de los equipos.

Hardware wifi soportado en *BSD y *Linux


*El soporte wireless en Linux es relativamente nuevo y no siempre es un trámite  fácil.

Como configurar una tarjeta wifi:



-1. Identificar el chipset de la tarjeta

-2. Bajar (conseguir) e instalar el driver.

-3. Configurar Pcmcia-cs si es necesario.

-4. Configurar los parámetros de la interfaz para hacer funcionar la red wireless.

*Lo más importante del tipo de tarjeta es el chipset que contiene. La mayoría de las  companías como Linksys,
 Dlink, Netgear, no fabrican sus propias tarjetas, sino que compran el chipset a otra  compañía y le colocan la etiqueta,
 lo cual es bueno porque cientos de modelos y marcas pueden juntarse en alrededor de 8 o 10  clases de chip.
 Lo malo de eso es que cuando se compra una tarjeta casi nunca indica en la caja que chipset  contiene, y es difícil saber que es lo que tiene dentro.

Tarjetas que se pueden configurar bien en *BSD y *Linux:



*Algunos de estos chips tienen soporte en el kernel tanto en los Linux como en los *BSD,
 para el resto es necesario compilar los módulos de forma externa y enlazarlos con el  kernel.
 Otros chips no tienen soporte en Linux y *BSD y no hablaremos de ellos en este documento.

-Intersil Prism2: Linksys, Netgear, Dlink, Senao, teletronics usan el chip Prism2, es uno de los  más comunes.

-Orinoco.

-PrismGT Intersil 802.11 a/b/g chipset.

-SMC 802.11B/G cards, and others.

-Atheros 802.11A/B/G.

-Realtek 8180.

Como identificar una tarjeta wifi



-Como primer paso, se puede identificar el chip de la tarjeta mirando si la marca/modelo aparece  en la lista que mantiene LinuxWlan (AbsolutValue Systems) en esta web:

http://www.linux-wlan.org/docs/wlan_adapters.html.gz



-Si no hay suerte, se intenta de otra forma:

*Para tarjetas PCI o mini-PCI:

-Ejecutar lspci

*Para tarjetas pcmcia:

-Insertar la tarjeta, y ejecutar cardctl ident, para obtener la información.

*Para tarjetas USB:

-Ejecutar dmesg y buscar el ID del fabricante.

*Otra buena idea es buscar en www.google.com y bajar e instalar el driver (controlador,  módulo o módulos)

*Como ya se dijo anteriormente, muy pocos chips están soportados directamente en el kernel  de *Linux o *BSD.
 Si se necesitan drivers que no están en el kernel, generalmente se presentan de esta forma:

-1. Drivers independientes que se compilan en su propio directorio con un script estándar de  configuración
 y makefile (./configure y make). Generalmente es necesario tener el código fuente del  kernel, que esté instalado
 y los links que apuntan al directorio de las fuentes.

-2. Drivers que patchean o se instalan sobre el paquete pcmcia-cs. Estos drivers requieren tener  el código fuente de pcmcia-cs, el cual hay que bajarlo directamente u obtener el  paquete source de la distribución que se está usando.

-3. Drivers binarios incluídos en la distribución.


Cosas de Debian



En Debian Linux : también puede hacerse bajando los kernel-headers del kernel  correspondiente,

"apt-get install kernel-headers-2.6.x"

Algunas bibliotecas para compilar adecuadamente (make menuconfig)

"apt-get install libncurses5-dev"

Compilador de c en Linux

"apt-get install gcc"

también hará falta make

"apt-get install make"

con esto debertía ser suficiente para, por lo menos, compilarlos.
Una vez hecho esto, ejecutar "dmesg" y ver el módulo o módulos creados,
cargarlo con "modprobe <nombre_modulo>" o "insmod <nombre_modulo>" y en su caso insertarlo
en el fichero /etc/modules para que se carguen automáticamente al arranque del sistema.

Configuración



*En primer lugar se puede usar "ifconfig" para ver los interfaces de que disponibles
 después es posible usar "iwconfig" para configurar los interfaces wifi. En  *BSD se debe de hacer la configuración, también con "ifconfig"

Usando iwconfig



*Algunos comandos básicos:

(en el resto del documento se usa un interfaz llamado wlan0, pero puede ser ath0, rl0, eth1 o  cualquier otro)

*Establecer el SSID:

"iwconfig wlan0 essid ElNombreQueSeQuiera"

(o el nombre del ESSID de la red a la que se quiere asociar (conectar) el interfaz wlan0.

*Si se setea el essid como "" se le está diciendo a la la tarjeta que se asocie  a cualquier red disponible.También se puede, simplemente no usar la opción essid.

*Establecer el cifrado:

"iwconfig wlan0 key cafedad123" (la clave debe escribirse en hexadecimal, como e sta de 64 bits 0009090909).

*Quitar el cifrado

"iwconfig wlan0 key off"

*Cambiando de modos

*Modos posibles en infraestructura (BSS)

-Modo managed, el más común, pone la tarjeta en modo cliente de un AP.

"iwconfig wlan0 mode managed"

-Modo AP. No todos los drivers soportan este modo.

"iwconfig wlan0 mode master"

-Modo monitor (sniffers como kismet utilizan este modo para capturar las tramas 802.11)

"iwconfig wlan0 mode monitor"

*Modo ad-hoc (IBSS)

-Modo ad-hoc (todas las interfaces en la red ad-hoc tienen que estar en este modo o no  funcionarán).

"iwconfig wlan0 mode ad-hoc"

*Otros comandos útiles

"iwconfig wlan0 channel 11"

-Cambia el canal de TX-RX, este comando es útil en modo AP, cuando se esta en modo managed  o cliente, la tarjeta escanea todos los canales automáticamente buscando el SSID  deseado.

Cosas de Debian



**Un ejemplo de configuración para el /etc/network/interfaces de las Debian Linux  sería

iface wlan0 inet static
  address 192.168.1.2
  netmask 255.255.255.0
  network 192.168.1.0
  broadcast 192.168.1.255
  gateway 192.168.1.1
  wireless_essid nombre_de_ssid
  wireless_key la_clave_para_acceder

  Esto producirá las siguientes llamadas al levantar wlan0:

  iwconfig wlan0 essid nombre_de_ssid
  iwconfig wlan0 key la_clave_para_acceder

Tarjetas multimodo 802.11 a/b/g




"iwpriv wlan0 mode 1" - solo 802.11a.

"iwpriv wlan0 mode 2" - solo 802.11b.

"iwpriv wlan0 mode 3" - solo 802.11g.

"iwpriv wlan0 mode 0" - (default) automático

Como hacer un AP-bridge rápido




"ifconfig wlan0 0.0.0.0"

"ifconfig eth0 0.0.0.0"

"iwconfig wlan0 mode master"

"iwconfig wlan0 essid holamundo channell 11"

Como habilitar el modo bridge (es necesario bridge-utils y tener habilitado en el kernel  802.1d Ethernet Bridging)




"brctl addbr br0"

"brctl addif br0 eth0"

"brctl addif br0 wlan0"

"ifconfig br0 192.168.1.1 up"

Herramientas y Comandos



*Tanto *BSD como *Linux disponen de más comandos. Estos son algunos de los más  usados para la configuración de las tarjetas wireless, así como para conocer el  estado de los interfaces y en su caso scanear redes wireless. Estos comandos están  disponibles en los paquetes, "wireless-tools" y "BSD-airtools"

**iwconfig <interfaz> <opciones>

  Modo: <mode {Master,managed,monitor..}>
  Frecuencia: <freq {frecuencia}>
  Canal: <channel {canal}>
  Velocidad: <rate>
  Clave: <key {s:ascii | hex }>

**iwpriv <interfaz> <comando>

  iwpriv ath0
  ath0 Available private ioctls :
  wpa (000A) : set 1 int & get 0
  get_wpa (000A) : set 0 & get 1 int
  driver_caps (0010) : set 1 int & get 0
  get_driver_caps (0010) : set 0 & get 1 int
  maccmd (0011) : set 1 int & get 0
  hide_ssid (0013) : set 1 int & get 0
  get_hide_ssid (0013) : set 0 & get 1 int

**iwlist <interfaz> <comando>

  iwlist ath0 scanning
  ath0 Scan completed :
  Cell 01 - Address: 00:12:D9:B3:7C:50
  ESSID:"alumnos"
  Mode:Master
  Frequency:2.437 GHz (Channel 6)
  Quality=31/94 Signal level=-64 dBm Noise level=-95
  dBm
  Encryption key:off

**Iwevent

  Recolecta los eventos que ocurren en la
  interfaz wifi.
  Cambios de SSID
  Frecuencia
  Canal
 

**Iwspy

  Similar a /proc/net/wireless
  Recolecta estadísticas de uno o varios AP o
  de varias interfaces de red
  cat /proc/net/wireless
  Inter-| sta-| Quality | Discarded packets | Missed | WE
  face | tus | link level noise | nwid crypt frag retry misc | beacon | 17
  ath0: 0004 30. 191. 161. 0 0 0 1 1 0

Introducción a la detección de redes



-Poner la tarjeta en modo monitor :

"iwconfig wlan0 mode monitor"

-Quizás esto no funcione, entonces:

"iwpriv wlan0 monitor 1 1"

-Lanzar un sniffer (husmeador), de los siguientes:

Sniffers de redes inalámbricas :



GNU/LINUX : Airtraf, AirSnort, Kismet, Airodump, Wellenreiter, etc ..
BSD : WiStumble, dstumbler, etc ..

*Los mas usados de estos son el Kismet, Airodump y dstumbler.

Para configurar el kismet :



*No funciona por defecto así que deberemos editar el /etc/kismet/kismet.conf

 suiduser=username
 source=cardtype,iface,name
 Cardtype {madwifi_b | prism2
  Orinoco }
  channelhop=true

  Kismet

  H menú de ayuda
  I Info detallada de la red
  S Diferentes maneras de ordenar las redes
  D Muestra las cadenas de datos
  P Muestra los tipos de paquetes

**Conceptos básicos.



  ESSID

  Extended Service Set IDentifier : Nombre identificativo de la red
  Es necesario conocerlo para pasar a ser un usuario legítimo  (asociación) de la red.

  Beacon Frames

  Tramas que anuncian la red. Portan el ESSID y son enviadas cada
  100 milisegundos.

  Management Frames

  Tramas usadas en el proceso de autentificación.El cliente y el AP  intercambian varios management frames en dicho proceso.

  Proceso de Autentificación/Asociación:

  Cliente Access Point
  Beacon Frame
  Authentication Request
  Authentication Challenge
  Authentication Response
  Authentication Result
  Authentication Challenge
  Authentication Response
  Authentication Result

wep



Wired Equivalent Privacy

Wep: Conceptos Básicos



Nace con el objetivo de proporcionar seguridad equivalente a la de las redes cableadas

Basado en el algoritmo RC4

  Usa claves de 64,128 y 256 bits
  En realidad son 40,104 y 232 bits
  24 bits -> IV (Vector de inicialización)
  Uso de checksums (CRCs).
  Esta llave se genera a partir de una passphrase automáticamente.
  Existe software que permite introducir la llave manualmente.
  La llave o passphrase deben conocerla todos los clientes

Vulnerabilidades en WEP

-Deficiencias en la encriptación

  Características lineales del CRC
  Descubierto en la Univ. de California en Berkeley
  Se calcula el CRC del payload

-Dos graves problemas:

- El ICV no es independiente de la clave y del IV
- El CRC es lineal:
- CRC(m xor k) = CRC(m) xor CRC(k)
- Uso de "bit flipping"

- MIC independiente de la llave:
- No existe un mecanismo de chequeo dependiente de la llave (MIC)
- Conocido el plaintext de una trama es posible inyectar en la red.

- Tamaño del IV demasiado corto
- El tamaño del IV son 24 bits, luego 2^24 = 16.777.216 posibles IV's 16.777.216 tramas se  generan en pocas horas con tráfico intenso.
- Si un AP envia paquetes de 1500 bytes completaría todo el espacio de 16M
 posibilidades en 1500*8/(11*10^6)2^24 =~ 1800 segundos (5 horas)

- Reutilización del IV
- WEP no utiliza el algoritmo RC4 con cuidado
- Distintos ciphertexts pueden tener el mismo IV -> ataques estadísticos
- Esto deriva en análisis estadísticos que permiten obtener la clave

- Reutilización del IV
- Debido al corto espacio de los IV's (16M) es probable que se intercepten dos tramas con el mismo  IV
- El estándar define que cambiar el IV es opcional
- El IV es normalmente un contador que comienza desde cero y aumenta de uno en uno.

Conclusion:



Un atacante con suficientes paquetes puede descifrar ciphertext incluso sin conocer la llave.

- Supongamos Z = RC4(key,IV)
- Los ciphertext son:
- C=P xor Z ; C'=P' xor Z
- C xor C' =(P xor Z)xor(P' xor Z) =>
  (P xor P') xor (Z xor Z) = (P xor P')

Si conocemos uno de los plaintexts es fácil conocer el otro estadísticamente.

Ataque por fuerza bruta:

- La passphrase suelen ser caracteres ASCII escribibles por lo que el bit de más peso es  siempre '0'
- Solo tendremos que buscar desde 00:00:00:00 a 7F:7F:7F:7F
- El PRNG es un generador lineal congruente por lo que sólo las semillas de 00:00:00:00 a  00:FF:FF:FF
  son únicas!!

Ataque inductivo de Arbaugh

- Se basa en características lineales del CRC
- MIC independiente de la llave

- Necesitamos conocer parte del texto cifrado -> es fácil reconocer por ejemplo un  DHCPDISCOVER (en los headers) origen 0.0.0.0 destino 255.255.255.255
- Creamos un ICMP con el tamaño del texto capturado mas un byte
- Si obtenemos respuesta conocemos un parte más del keystream, si no probamos con otro  (solo hay 255 posibilidades)

- Debilidades del algoritmo de Key Scheduling de RC4 (FMS)
- IV vulnerable:
- El desarrollo de RC4 sólo afecta a bytes ya conocidos
- Resolved condition: (A,B+3,X) no es necesario desarrollar RC4 (9000 de los 16.777.216 posibles)

Necesitamos capturar

  1500 a 400 IV's debiles
  5 a 10 millones de paquetes cifrados
  5 a 6 horas a varios días

Más vulnerabilidades en WEP

- Debilidades del algoritmo de Key Scheduling de RC4 (FMS)
- Esta vulnerabilidad fue publicada en 2001
- Desde entonces los fabricantes han ido modificando el firmware hasta hacerlo invulnerable
- Últimamente el FMS "Strikes back" ya que los fabricantes parecen haberse  olvidado de él.

- Vulnerabilidades nuevas Korek Attacks ( Korek es el hacker de Aircrack )
- Estadísticos
- Requieren de 300.000 a 500.000 paquetes (Muchísimos menos que los demás ataques!!)
- Se requieren muchos IV's diferentes, el resto del ataque se hace estadísticamente sobre  las tramas capturadas
- Si se intenta con pocos IV's diferentes es como la fuerza bruta.

CRÉDITOS



-Para la elaboración de este documento se ha recopilado información de los "man"
 de los programas que figuran en los ejemplos de órdenes.

-Se ha hecho uso de información contenida en otros ducumentos que ya están en la red  Internet, como el escrito por Antonio Storni, llamado:

Wireless con software libre



que puede encontrarse en: http://www.cafeconf.org/modules/mydownloads/
junto a otros ducumentos muy interesantes sobre software libre.

*Me pareció buena idea reunir algunas de mis experiencias con wifi en un pequeño HOWTO, se  lo dije a mi tocayo y paisano y de momento hemos hecho este documento. Seguiremos  ampliándolo y corrigiéndolo porque wifi es todavía joven y sigue evolucionando.

*Añadiremos algunos conceptos sobre antenas y radiación electromagnética.  Probablemente algo de bricolaje útil para construir o mejorar elementos radiantes,  tan importantes en cualquiera de las tecnologías que usen el espectro  radioeléctrico en lugar de cables para unir host y redes.

*El presente documento es obra de los abajo firmantes y, aunque no está todo lo completo q ue deseamos, nos parece que ya puede ser de utilidad y por eso lo cuelgo aquí junto  a otros, con el mismo propósito.

*Si encontráis que algo es erróneo o pudiera estar más claro, no  dudéis en hacernos llegar un correo electrónico y las correcciones o ampliaciones serán incluídas, de inmediato.

Salute fratres

Colaboradores:

Jorge R. (PeriBrown en #wifi y #linux_novatos)
Jorge G. (madre en #wifi y #linux_novatos)

lunes, diciembre 12, 2005

Lamentos





He encontrado estas "quejas" en una web de humor. No figura el nombre del autor, así que consideraré que lo escribió algún operador, de algún Help Desk, de alguna empresa.

Probablemente se trate de una de esas empresas en las que muchos empleados usan Windows y tienen un departamento de informática en el que trabajan profesionales como el que escribió este lamento.

Y hasta es posible que tengan subcontratada alguna empresa externa para que se encargue del Help Desk. A esto le suelen llamar: outsourcing, porque queda como más fino que decir:

"Los de arriba han prohibido terminantemente cualquier gasto* en informática hasta nueva orden, pero como los del departamento de informática no dan abasto, hemos hecho un apaño. Una empresa de trabajo temporal se encargará del exceso".

Los informáticos de la ETT, no son de la plantilla, por lo tanto pasan a ser unos parias al servicio de "los fijos" y como tales, se encargarán de los peores trabajos, sin rechistar.

El Help Desk suele ser el subdepartamento informático más aborrecido por los de la plantilla y además, se nota. Yo he convivido con algunos en los sótanos más infectos de este tipo de empresas.

Así que, en homenaje a estos esforzados currantes (excepto a los pelotas, sin mucha idea de nada que no sea lamerle el culo a quien sea, para entrar en el reino de los cielos, es decir, la plantilla), que saben apreciar el valor de la libertad* de no pertenecer a la plantilla.

También he conocido a algunos freelances de este sector, verdaderos guerreros solitarios que con unos diskettes, un Pen Drive, quizá un CD Live (Linux, por supuesto), mucho HOWTO y muchas horas de cosola a las espaldas, hacen el trabajo socio sin mancharse las manos y desaparecen. Pero esos nunca escribirían esto:



1. Cuando el informático le diga que acude en su ayuda, puede desconectarse de la red e irse a por un café. No es ningún problema para nosotros acordarnos de todos los passwords de usuario.

2. Cuando nos llame para decirnos que cambiemos su ordenador de sitio, asegúrese de que lo deja bien enterrado bajo media de tonelada de postales, fotos de sus niños, animalitos de toda clase, flores secas, trofeos varios, etc. Nosotros, como no tenemos vida privada, nos encanta echar un vistazo a la suya.

3. Cuando el informático le envíe un e-mail de importancia alta, bórrelo inmediatamente sin leer. Seguramente es que estamos haciendo pruebas.

4. Cuando el informático esté comiendo en su mesa, entre sin ningún miramiento y explíquele sus problemas esperando a que se le responda en el acto. Estamos aquí para servirle y siempre a punto para solucionar problemas.

5. Cuando el informático esté tomando un café tranquilamente, pregúntele algo acerca de ordenadores. La única razón por la que nos vamos a tomar café es para atender a las personas que no tienen e-mail o teléfono.

6. Mande todos sus mensajes en mayúsculas. El servidor de correo lo recogerá inmediatamente y lo tratará como mensaje urgente.

7. Cuando llame al teléfono del informático, pulse 5 para saltarse el mensaje que le dice que está de vacaciones y grabe su mensaje. Entonces espere exactamente 24 horas antes de mandar un e-mail directamente a su jefe quejándose de que no ha recibido ninguna respuesta a su llamada. Usted no se merece este trato.

8. Cuando la fotocopiadora no funcione, llame al informático. La fotocopiadora tiene cable, ¿no?

9. Cuando su módem le dé el mensaje de 'NO HAY TONO DE MARCADO' en casa, llame al informático. Podemos solucionar problemas de teléfono desde donde sea.

10. Cuando su ordenador no funcione, tírelo encima de la silla del informático y no deje ningún papel con su nombre ni la descripción del problema. Nos gusta el misterio.

11. Cuando el informático le esté explicando cómo cambiar algún parámetro de su configuración, lea el periódico. De hecho no esperamos que usted tenga que hacer nada; simplemente nos encanta oírnos a nosotros mismos cuando explicamos algo.

12. Cuando les demos alguna explicación sobre algún programa, no se moleste en aprender. Siempre estaremos ahí para volver a hacerlo.

13. Cuando la impresora no imprima, reenvíe su trabajo al menos 20 veces. A veces, los trabajos que intenta imprimir desaparecen en el cosmos sin razón aparente.

14. Cuando la impresora no imprima tras los 20 intentos, envíe su trabajo a todas las demás impresoras de la empresa. Seguro que alguna lo hará.

15. No use la ayuda que viene en los programas. Estas ayudas on-line sólo son para gilipollas.

16. Cuando vaya hacer algún cursillo de informática, no dude en practicar con la red de la empresa e instalar y probar todo lo que desee. Estaremos encantados de trabajar hasta la madrugada para arreglar lo que sea necesario.

17. Cuando vengamos a reparar su ordenador y esté usted comiendo, degluta a gusto su almuerzo en nuestra cara. Funcionamos mejor bajo presión.

18. Nunca nos dé las gracias. ¡Nos encanta nuestro trabajo y encima nos pagan!

19. Cuando el informático le pregunte si ha instalado algún nuevo programa en su ordenador, mienta. ¡A nadie le importa lo que usted tiene en su PC!

20. Si el cable de su ratón siempre tira el gatito de porcelana que tiene usted encima de la mesa, levante el ordenador y pille el cable con él. Los cables de ratón están diseñados para aguantar 80 kilos de peso.

21. Si la tecla Enter de su teclado no funciona, échele la culpa a la actualización del correo electrónico. Los teclados funcionan mucho mejor con medio kilito de migas de galleta, uñas mordidas, pelos de barba, cabellos y manchas secas de Coca Cola debajo de las teclas.

22. Cuando el sistema le muestre la típica ventana de 'Está usted seguro...', conteste siempre que 'Sí' o 'Aceptar'. ¡Joder! Si no estuviera usted seguro no lo habría hecho, ¿verdad?

23. Siéntase completamente libre para decir 'No tengo ni idea acerca de esta mierda de informática'. A nosotros nunca nos ha molestado que la gente diga que nuestra profesión es una mierda.

24. Cuando necesite cambiar el cartucho de toner, llame al informático. El cambio de cartucho es una tarea extremadamente complicada y Hewlett-Packard recomienda que sólo la realice un ingeniero con un Master en Física Nuclear.

25. Cuando le suceda algo a su ordenador, pida a su secretaria (si la tiene) que llame a Help Desk. A los que trabajamos en un Help Desk nos encanta tener que tratar con una tercera persona que no tiene ni idea de cual es su problema.

26. Cuando escanee la foto de su última juerga, de 30 Megas, a tope de colores y resolución, envíela a todo el mundo a través de su correo electrónico y, por supuesto, indique alta prioridad. Tenemos montooooones de megas libres en el servidor y un procesador de la leche.

27. Cuando tenga que imprimir tropocientos mil folios, no se le ocurra ir imprimiendo de poco en poco... ¡mándelos todos de una vez! Los demás pueden esperar... usted tiene prioridad.

28. Cuando se encuentre por casualidad a su informático durante el fin de semana, no dude en hacerle preguntas acerca de ordenadores. Nosotros trabajamos 24 horas al día, 7 días a la semana, incluida la playa en verano, la nieve en invierno, supermercados, cines, etc.

29. Si su hijos estudian informática... ¡tráigalos el fin de semana a la oficina! Ahí estaremos para prestarles cualquier equipo, reparar su base de datos de Access hecha trizas por su copia ilegal de Visual Basic, etc.

30. Cuando nos traiga su ordenador clónico de casa para que se lo reparemos gratis, por favor recuérdenos que es urgente para que por la tarde pueda usted jugar al Solitario. ¡Ahí estaremos! Nos sobra tanto tiempo y el día es tan largo... De todas formas, todo el mundo sabe que perdemos constantemente el tiempo ¡navegando por Internet!

miércoles, noviembre 30, 2005

Compilación y optimización del kernel en FreeBSD



INTRODUCCIÓN

Si lo que buscáis es una forma rápida de hacer un nuevo kernel para vuestro FreeBSD, podéis bajar directamente la sección COMPILAR pasando de unos antecedentes que a lo mejor ya conocéis o no queréis conocer porque lo que os interesa ahora es, ir directamente al grano.
Si el nuevo kernel no arranca o surge cualquier otro problema, siempre podéis volver sobre vuestros pasos y leer estos párrafos para recuperarlo, si tenéis una copia de este documento en otra computadora o en papel.
Yo por mi parte soy un poco orejudo* y como tal, amo a los árboles y no uso impresora.

OBJETIVO

Hacer un nuevo kernel (núcleo del sistema operativo - en adelante OS), de una forma ¡¡segura!! . Esto es, sin cometer errores graves que impidan el arranque de la máquina o un comportamiento errático del OS.

ANTECEDENTES Software y hardware

Este kernel lo compilamos en un PC portátil que dispone de un microprocesador Intel, modelo: "Mobile Intel(R) Pentium(R) 4 CPU 3.06GHz (3066.79-MHz 686-class CPU) y aunque no garantizo que todo salga igual en máquinas con otros microprocesadores, puedo asegurar que los resultados serán muy parecidos. Es aconsejable que antes de comenzar a configurar lo que va a ser el nuevo kernel, sepamos de que tipo procesador disponemos. Para ello podemos ejecutar la siguiente orden:

 # dmesg -a | grep CPU <---- es importante respetar las mayúsculas en el  argumento CPU >

 El resultado de la ejecución de la orden anterior en la máquina que usamos es este:

  CPU: Mobile Intel(R) Pentium(R) 4 CPU 3.06GHz (3066.79-MHz 686-class CPU)
  Hyperthreading: 2 logical CPUs
  FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
  cpu0: CPU on acpi0
  cpu1: CPU on acpi0
  SMP: AP CPU #1 Launched!

Evidentemente, en otras máquinas puede (y es lo más probable), ser otro. Si leemos con atención la información anterior, vemos que se trata de un chip fabricado y licenciado por la industria Intel (en realidad las empresas que se dedican a la fabricación de estos complejos artilugios, no pasan de media docena en tod o el mundo).

El modelo es Pentium 4 HT. El kernel de esta máquina ya ha sido compilado específicamente con y para este procesador con soporte para SMP (Symmetric MultiProcessor) y como se puede ver detecta perfectamente que dispone de 2 CPU lógicas (que es lo que viene a significar la tecnología Hyperthreading, hoy desplazada por los modelos Centrino). Si disponéis de un
microprocesador de este tipo, es posible que dmesg lo identifique como un Intel Xeon (sobre todo si se trata de un kernel Linux). No es lo mismo, los Xeon disponen de dos CPU "físicas".

ACPI (Advanced Configuration and Power Management support) se encarga de habilitar las CPUs lógicas por separado a partir de ese momento se repartirán la carga de trabajo y si ejecutáis la orden top -S podréis ver que está haciendo cada una de ellas, prácticamente en tiempo real. Existen programas que permiten manejar algunas opciones de estos microprocesadores tan "especiales". De todas formas, las más básicas, las que tienen que ver con el ahorro de energía están previstas en FreeBSD con algunas opciones de configuración adecuadas, como estas líneas:

 performance_cx_lowest="LOW" # Online CPU idle state
 performance_throttle_state="HIGH" # Online throttling state
 economy_cx_lowest="LOW" # Offline CPU idle state
 economy_throttle_state="HIGH" # Offline throttling state

que figuran por defecto en vuestro /etc/defauts/rc.conf. Con esta configuración se consigue que las CPUs trabajen sólo cuando o es necesario y generalmente, descansen mucho. De esta forma se reduce el exceso de temperatura, el tiempo de funcionamiento de los extractores de calor y el consumo de energía en general. Algo muy importante cuando las máquinas portátiles funcionan con baterías.

Lo importante, lo que necesitamos saber para el archivo de configuración, está en la primera línea del resultado que arroja el dmesg y es esto: (3066.79-MHz 686-class CPU), exactamente 686. Se trata de chips mejorados para la arquitectura i386. Esta cadena es la que debemos de poner en la segunda línea del archivo de configuración, justo debajo de la primera i386 que es genérica y obligatoria en PCs. De esta forma, el nuevo kernel identificará correctamente el procesador y usará todas sus mejoras y capacidades añadidas.

Es aconsejable leer detenidamente toda la información que ofrece un dmesg -a para añadir en la configuración del nuevo kernel, soporte para los diversos dispositivos de los que nuestra máquina dispone. Para conocer estos dispositivos leed con atención la información que os ofrecerá la siguiente orden:

  # pciconf -lv

 Veréis entre otras, líneas parecidas a estas:

 ohci0@pci0:19:0: class=0x0c0310 card=0xff101179 chip=0x43471002 rev=0x01  hdr=0x00
 atapci0@pci0:20:1: class=0x01018a card=0xff101179 chip=0x43491002 rev=0x00  hdr=0x00
 isab0@pci0:20:3: class=0x060100 card=0xff101179 chip=0x434c1002 rev=0x00  hdr=0x00
 pcib2@pci0:20:4: class=0x060401 card=0x00000000 chip=0x43421002 rev=0x00  hdr=0x01
 drm0@pci1:5:0: class=0x030000 card=0xff101179 chip=0x44371002 rev=0x00  hdr=0x00
 ath0@pci2:4:0: class=0x020000 card=0x7064144f chip=0x0013168c rev=0x01  hdr=0x00
 rl0@pci2:7:0: class=0x020000 card=0xff101179 chip=0x813910ec rev=0x10  hdr=0x00
 fwohci0@pci2:10:0: class=0x0c0010 card=0xff101179 chip=0x8026104c rev=0x00  hdr=0x00

que os servirán para saber que debéis añadir soporte para dispositivos USB, ATA, ISA, wifi, ethernet, FireWire y DRI si vuestra tarjeta gráfica soporta aceleración por hardware.
No me extenderé más en este punto, es evidente que cuanta más información tengáis acerca del hardware de la máquina mejor conoceréis las posibilidades que para él provee el archivo de configuración del nuevo kernel y mejores resultados obtendréis. Pero también lo es que, si no sale redondo a la primera, lo conseguiréis en las próximas compilaciones.


FILOSOFÍA

Primero hablaremos de las razones por las que se suele hacer un nuevo kernel. Generalmente, cuando se instala el OS, el kernel que se instala es del tipo GENERIC. De hecho, si tecleáis la orden uname -a, aparecerá algo parecido a esto:

 # uname -a FreeBSD elu.thingol 5.3-RELEASE FreeBSD 5.3-RELEASE #0: Sat Nov 19 12:19:28 UTC 2005

Este kernel tiene soporte para una gran cantidad de hardware, de hecho, para el más común. Esto es debido a que los programadores que hacen FreeBSD, saben muy poco del tipo de máquina en la que se instalará el OS. De hecho hacen varias distribuciones para determinados tipos de computadoras, así que suponen que si tenemos un PC instalaremos la distribución que ellos han empaquetado para i386, porque esta es la arquitectura de los PCs.

Tampoco sería posible instalar en un PC una distribución hecha para otras arquitecturas como, Alpha, Sparc64, muy utilizadas en entornos profesionales y grandes servidores con Sun Solaris, *BSD y otros OS tipo UNIX

PowerPC, utilizado en entornos profesionales con IRIX, AS/400 y últimamente Linux, entre otros OS y también en computadoras personales.
Macintosh fabricados por Apple (este tipo de máquinas pronto incorporarán un nuevo chip fabricado por Intel. No se sabe aun si será del tipo i386). Actualmente ya usan un OS FreeBSD modificado y un kernel Match, un microkernel más parecido al proyecto Hurd que GNU construye para ser usado de la misma forma que hoy se usa el kernel Linux en los OS Linux (que actualmente son todos), aunque desde hace pocos meses en los OS GNU/Debian es posible usar también el kernel FreeBSD

pc98 la arquitectura que usan los japoneses, como en los españoles usan PC o la más reciente amd64, microprocesadores de 64 Bits fabricados por la empresa AMD y dedicada a computadoras de uso personal.

Por lo tanto, si un kernel del tipo GENERIC que tenéis después de una instalación estándar, es perfectamente funcional, no hay muchas razones para hacer uno nuevo, excepto que tiene soporte para mucho hardware que en vuestra máquina no existe.
Como consecuencia, es demasiado grande y si tenéis en cuenta que el kernel se carga en los primeros MB de vuestra RAM y permanece en ella durante toda la "sesión", es posible que estéis desperdiciando memoria física.

Otra buena razón para hacer un kernel nuevo (a veces, imprescindible), es la de incluir soporte para algún dispositivo que no está soportado por el GENERIC o que tiene soporte como módulo y es necesario (o queréis) que esté "dentro" del kernel para asegurar un arranque más eficaz o que exista soporte para módulos "dependientes" que serán cargados más adelante.

Algunos usuarios hacen kernel nuevo, simplemente para probar las nuevas características que se van añadiendo al código fuente de las nuevas versiones, pero esto no es aconsejable para los usuarios que "necesiten" leer este HOWTO. Supongamos pues que lo hacéis por cualquiera de las razones anteriores y vamos a ello.

MÉTODO

Algunos creemos que es mejor tener un kernel "pequeño" y muchos módulos, otros creen lo contrario. Ya he mencionado algunas ventajas de tener un kernel pequeño, pero otros piensan que es mejor tener un kernel grande cargado en su memoria. En todo caso no hay razón alguna para tener en el kernel o fuera de el, soporte para dispositivos que vuestra máquina no tiene. Dejo pues a la elección del lector el método que mejor le parezca.

En cuanto al método de compilación, en este HOWTO veremos solamente uno de ellos. Se trata del estándar. Se pueden utilizar otros pero para "empezar" este es el más aconsejable.

SOFTWARE, COMPROBACIONES PREVIAS

Las órdenes necesarias para configurar, compilar y instalar un nuevo kernel deben de ser ejecutadas en los directorios adecuados, el principal es el que contiene el código fuente, a partir del cual el compilador hará su trabajo según las instrucciones que vosotros especifiquéis en el archivo de configuración. Este directorio es: /usr/src/sys/. Si tenéis las fuentes instaladas, en este directorio habrá una gran cantidad de subdirectorios. Unos pocos llevan el nombre de de algunas de las arquitecturas en las que puede correr FreeBSD y contienen código fuente específico para cada arquitectura. El contenido del resto de los subdirectorios de /usr/src/sys/ es código fuente común a todas arquitecturas.
Si el directorio /usr/src/sys/ no existe o está vacío, significa que no tenéis las fuentes instaladas y en ese caso, este es el momento de instalarlas. Existen para ello (como es natural en el universo UNIX*), varias formas de hacerlo, describiré aquí la más rápida y sencilla.

INSTALANDO LAS FUENTES

 A partir de ahora es necesario que sea root quien ejecute las órdenes.

Introducís en el lector de CDs el CDROM que usasteis para instalar FreeBSD y ejecutáis la orden:

 # sysinstall

Aparecerá la misma aplicación desde la que se inició la instalación del OS y que permite instalar todo el software disponible en ese CD y en el CD-2 de la distribución. En este caso sólo necesitáis instalar las fuentes del kernel, estos son los pasos:

  Seleccionáis: Configure, cambiara de pantalla y mostrará otra con más opciones

  Seleccionáis: Distributions, mostrará algunas opciones que podéis marcar para instalar

  Seleccionáis: src, y aparecerán las opciones para instalar código fuente de varios tipos

  Seleccionáis: sys, son los archivos con el código fuente del kernel y es lo que necesitáis

  Seleccionáis: regresar al menú anterior, pulsáis Enter y comenzará la instalación

En pocos minutos el código fuente del kernel estará instalado, ese es uno de los motivos por el que he optado por sysinstall.
La otra es que, de esta forma os aseguráis de que las fuentes que instaláis corresponden a la misma versión del kernel que tenéis y eso os evitará problemas posteriores.

CONFIGURANDO EL NUEVO KERNEL

Regresamos ahora al directorio /usr/src/sys/, si no existía, ahora si existe. Como mencionamos anteriormente contiene muchos subdirectorios, ahora nos interesan los que se refieren a las diversas arquitecturas, entramos en el que corresponde a la nuestra, como se trata de un PC, ejecutamos:

 # cd /usr/src/sys/i386

como dije anteriormente este directorio contiene código fuente específico para esta arquitectura en varios subdirectorios. En uno de ellos están los archivos de configuración que nos interesan, el nombre es suficientemente descriptivo, ejecutáis:

 # cd /usr/src/sys/i386/conf

No haremos en este HOWTO una descripción detallada de todos los ficheros que contiene este directorio, pero es aconsejable echar un vistazo a uno que se llama NOTES. En este fichero figuran las opciones mas genéricas que podemos habilitar en nuestro nuevo kernel, así como la sintaxis correcta para hacerlo. En el fichero GENERIC.hints podéis hacer algunos cambios referentes a las IRQs que serán adjudicadas por el kernel a los dispositivos durante el arranque del OS (esta labor es peligrosa y deberíais de acometerla sólo en caso de que ocurra algún conflicto o tengáis alguna necesidad específica. Siempre siguiendo las instrucciones del fichero NOTES y en su caso de otra documentación adicional, así como de los man device.hints y man loader.conf

El fichero en el que debéis habilitar (o deshabilitar) las opciones para la compilación es el llamado GENERIC. Siempre que vayáis a editar un archivo de configuración, haréis una copia del original. Pero en este caso, para proteger aun más la copia del GENERIC (que es donde haremos los cambios necesarios), vais a seguir un método diferente al habitual que sería algo como, (cp GENERIC GENERIC.OLD). Haréis una copia del GENERIC, la pondréis en otro directorio (por si deseáis eliminar las fuentes después de la compilación del nuevo kernel). aprovecháis para cambiarle el nombre por otro más personalizado, siempre respetando la costumbre de las mayúsculas y creáis un enlace blando en el directorio de configuración. Ejecutando las siguientes órdenes desde el directorio /usr/src/sys/i386/conf/

 # mkdir /root/Kernel.back
 # cp GENERIC /root/kernel.back/MELIAN
 # ln -s /root/kernel.back/MELIAN

A continuación con el editor que más os guste, abrís la copia del archivo que acabáis de hacer y poner a buen recaudo.

 # vi MELIAN

Veréis que el archivo esta muy bien comentado, siguiendo sus instrucciones y las del archivo NOTES que tenéis en el mismo directorio, procedéis a habilitar las opciones necesarias y sobre todo, a deshabilitar aquellas que no necesitáis. NO es necesario eliminar ninguna línea, es suficiente con usar # para comentar las opciones que no queréis
"dentro" del nuevo kernel.
Cuando escribo "dentro" me estoy refiriendo a "enlazar estáticamente" aquellos "fragmentos de código", también llamados "código objeto" y que conocemos como "módulos" o "drivers".
Si los enlazamos estáticamente, el kernel los cargará a su lado en la memoria durante el arranque y permanecerán cargados durante el tiempo que dure la sesión.

Al comentar con # delante de la línea, algunas opciones, lo único que hacéis es poner "fuera" del kernel esos "fragmentos de código objeto". Esto no significa que no vayáis a poder disponer de ellos, en realidad los estáis "enlazando dinámicamente". Es decir, que se compilarán como "módulos" y que el kernel no los cargará durante el arranque (a no ser que le indiquéis que lo haga en el fichero /boot/loader.conf/), sino que los cargará cuando algún dispositivo o programa los necesite.

También es posible cargarlos de forma "manual" con el comando kldload Esto no sólo permite que no estén ocupando espacio de memoria durante toda la sesión, sino que además, cuando no los necesitéis podéis descargarlos usando el comando kldunload, o escribir un script que descargue los módulos que no se estén usando y meterlo en una tabla de cron, para que se ejecute cada cierto tiempo. Pero esto es motivo de otro HOTO.

Algunas opciones que figuran en el fichero de configuración del kernel, no pueden ser deshabilitadas. Los comentarios indican claramente cuales no deben ser alteradas. Al finalizar, cerráis el archivo MELIAN guardando los cambios realizados.

OPTIMIZANDO SUAVEMENTE

Hacemos un pequeño alto en el camino para mirar el contenido del fichero /etc/make.conf. Si no existe, lo creáis. En este fichero podéis poner algunas opciones que el programa make tendrá en cuenta a la hora de compilar, tanto el código fuente del kernel como el de otros programas que queráis instalar a través de los ports. No me extenderé mucho en este apartado porque existen en Internet magníficos documentos sobre el tema. Simplemente sugeriré algunas opciones que harán que vuestro nuevo kernel se compile mejor y más rápido. Editáis el archivo:

 # vi /etc/make.conf

  y escribís estas líneas:

 CPUTYPE=i686<---- aquí ponéis el tipo de procesador del que dispone vuestra
 máquina, ya sabéis donde buscar esto

 CFLAGS=-O2 -pipe
 CXXFLAGS+=-O3

 Cerráis el archivo guardando los cambios realizados.

COMPILANDO

Hasta ahora todo han sido preparativos, planes, diseño y comprobaciones, ahora comienza la construcción propiamente dicha.Para empezar ejecutáis config, hará varias cosas para vosotros, lee el archivo de configuración que acabamos de editar hace un análisis previo de los recursos necesarios, genera el código fuente específico para el nuevo kernel y lo pone en el subdirectorio "/usr/src/sys/i386/compile/MELIAN/". Finalmente, reporta los resultados. Ejecutáis:

 # config MELIAN

 Si algo no ha ido bien, mostrará un mensaje de este tipo:

 # config: line 126: syntax error

Es bastante claro. Editaréis de nuevo el archivo de configuración del kernel (MELIAN), corregís el error y repetís la orden anterior. Si tenéis dificultades para encontrar la línea 126 en el fichero, acudid al comando nl que como su nombre indica "filtra y enumera líneas".. aunque no contengan caracteres visibles :-) y lo usaréis así:

 # ln -b a MELIAN

Si el programa config encuentra que la construcción del kernel es posible con las opciones que habéis escogido y el código del que disponéis, mostrará un mensaje en inglés, que viene a decir:

 # entre en ../compile/MELIAN y ejecute "make depend"

Seguid sus instrucciones, "entrando" en el directorio "/usr/src/sys/i386/compile/MELIAN/" y ejecutando las órdenes:

 # make depend

 Y en cuanto termine

 # make

Es posible que el comando make no acabe bien y muestre un error, no son tan descriptivos como los mensajes de config, pero lo más probable es que se trate de algún error en el archivo de configuración, no detectado anteriormente debéis revisar de nuevo el archivo MELIAN.

Si la orden make llega a buen término (es lo más habitual..) el nuevo kernel ya estará hecho. Antes de instalarlo es bueno "limpiarlo" un poco usando el comando strip. Esto mejorará el tiempo de respuesta de muchos programas y cargará un poco menos la RAM. Y .. antes de limpiarlo podéis guardar una copia del nuevo kernel en el directorio que creasteis hace un rato para guardar el fichero de configuración del kernel. Para ello ejecutáis las órdenes siguientes:

 # cp kernel /root/kernel.back/kernel.strip

 # strip -g kernel

ahora podéis proceder a instalarlo y a probarlo. Pero antes, quizá debierais leer el apartado siguiente. Explica como arrancar con el kernel que tenéis ahora, si el nuevo se niega o no logra arrancar

¡¡ EN CASO DE PROBLEMAS !!

Los pasos a seguir dependen un poco del cargador (boot loader) que estéis utilizando, aunque todos los que conozco permiten en un momento u otro introducir órdenes para el kernel o para el propio cargador.
Si estáis usando el cargador de FreeBSD procedéis así: pulsáis Power y cuando el cargador empiece su cuenta atrás, pulsáis cualquier tecla (excepto Enter) y ejecutáis las siguientes órdenes:

 # unload
 # boot kernel.old

Si usáis el cargador Grub, este dará paso a la pantalla de bienvenida de FreeBSD pulsáis cualquier tecla para detener la cuenta atrás, seleccionar la opción: 4 y cuando aparezca la shell ejecutáis:

 # boot kernel.old

De esta forma el cargador pasará el control al kernel que teníais antes de instalar el nuevo y "casi nada habrá cambiado" Si tenéis un kernel que sabéis¡¡ que funciona, no es mala idea ponerlo en el directorio /boot/ y en caso de error grave podréis cargarlo, usando cualquiera de los métodos anteriores pero llamándolo por su nombre, claro.

 # boot "nombre del kernel funcional que tenéis en el directorio /boot para estos casos :-)"

Cuando se instala un nuevo kernel, el "viejo" pasa del directorio /boot/kernel/ al directorio /boot/kernel.old/ pero.. esto pasa cada vez que se instala un kernel, así que /boot/kernel.old/ no es un buen lugar para tener una copia de un buen kernel. A no ser que estéis seguros de que el que está allí es "bueno". Cada cual que decida por si mismo acerca de este asunto, las copias de respaldo son importantes.

INSTALANDO

Ahora que ya sabéis nadar, podéis tirarnos al mar :-). Ya podéis instalar el nuevo kernel ejecutando la orden:

 # make install

Pueden suceder dos cosas: que el kernel se instale, esto es, que el kernel sea instalado en el directorio /boot/kernel/ sustituyendo al kernel actual (que pasa al directorio /boot/kernel.old), o que no se instale y muestre un mensaje de error.

La razón mas habitual, es que no pueda "mover" el kernel anterior. Cuando se instala un nuevo kernel make le coloca un "flag" para que no pueda ser alterado por error (o por alguien con mala leche pero sin la clave de root). Es necesario eliminar temporalmente esa "bandera" para que el nuevo kernel pueda ser instalado, para ello ejecutáis:

 # chflags noschg /boot/kernel

Es posible que se ejecute sin más o que encuentre una nueva "barrera" y muestre un error. Si no es posible ejecutar este comando, se debe a que está activado algún nivel de seguridad, igual o mayor a 0 (cero). No hay más remedio que cambiar eso temporalmente para poder desbloquear el kernel "viejo" y instalar el nuevo.
Para ello es necesario editar el fichero /etc/rc.conf y cambiar el valor ésta de la línea kern_securelevel="-1" dejándola precisamente así, con valor -1. A continuación es necesario re-arrancar (rebootar) la máquina ejecutando:

 # reboot o mejor esta otra orden.. más civilizada
 # shutdown -r now

Ahora ya será posible ejecutar las órdenes pendientes:

 # chflags noschg /kernel <----- para desbloquear el kernel viejo> y
 # make install <------ para instalar el kernel nuevo>

ARRANCANDO CON EL NUEVO KERNEL

Una vez que el kernel se ha instalado, no queda sino batirse :-), es decir, probarlo ejecutando de nuevo:

 # shutdown -r now

Si no arranca ya sabéis lo que hacer. Si el nuevo kernel arranca pero presenta algunas deficiencias poco serias, pero molestas. Como por ejemplo, una respuesta inadecuada del comando ps o incluso de ls, se debe casi siempre a que la versión el kernel que se acaba de compilar no es la misma que la del OS instalado.
Si el kernel arranca y se ejecuta con normalidad, ¡FELICIDADES!. Lo habéis conseguido, ahora toca probar todos los dispositivos y programas, o al menos los más habituales. Proceder a colocar el flag de seguridad, ejecutando la orden:

 # chflags schg /boot/kernel

Y fijar el nivel de seguridad de la máquina tal y como estaba antes de la compilación, editando el fichero /etc/rc.conf y poniendo la línea kern_securelevel="?" en el nivel anterior. Siempre superior a -1

Después de un tiempo "prudencial" si el nuevo kernel satisface vuestras expectativas, podréis eliminar la copia hecha antes del strip, el directorio /usr/src/sys/i386/compile/MELIAN/ y si necesitáis "espacio" en el HD, incluso las fuentes descargadas del CD de instalación para hacer este kernel. Siempre es posible instalarlas de nuevo en caso de necesidad.

CRÉDITOS

Es obligado recordar que todo lo que figura en este documento referido a la configuración y compilación del kernel en FreeBSD, se puede encontrar en otros documentos existentes en la red de Internet. He recogido algunos consejos del documento de Julio Merino (Slink) que se podía leer en eldemonio.org, una página en español para los amigos y usuarios de los *BSD. (NOTA 21 de abril de 2011) - desafortunadamente este dominio ahora pertenece a una agencia de viajes; no retiro los links por los créditos, por melancolía y para que se recuerde que hubo un tiempo, no tan lejano, en el que http://eldemonio.org era una web de y para usuarios de Sistemas Operativos BSD.

Leyendo detenidamente el FreeBSD Handbook (también existe una versión en castellano, aunque no está completa ni tan actualizada como la original, por razones evidentes) y los manuales de make, mkdep y make.conf, es posible hacer las mismas cosas que figuran en este documento y llegar a similares resultados, sin haberlo visto nunca. Y de paso ahorrarse todo el parloteo acerca de sistemas operativos y demás filosofía, aunque advierto a los no iniciados que los man están escritos en inglés y no son cortos precisamente. Eso si, contienen mucha más información de la que yo he sintetizado aquí.

Aprovecho una vez más para dar las gracias a las personas que emplean su tiempo y sus conocimientos en escribir, depurar, empaquetar y testear tantos millones de líneas de código, para después "regalarlo" a la humanidad. Son la prueba evidente de que es posible la vida en otros universos y que el software cerrado y las patentes son un "fallo" evolutivo, que contradice las teorías de Darwin.

Salute fratres

sábado, noviembre 12, 2005

PPP en portátil sin puerto Serie en FreeBSD 5.3 RELEASE



INTRODUCCIÓN

Si lo que buscas es solucionar el tema rápidamente y poner a trabajar tu módem, puedes bajar directamente a la sección CONECTANDO HARDWARE y pasar de mis preferencias y filosofías. Pero ten en cuenta que de no ser por ellas, nunca me hubiese molestado en escribir este manual tan detallado.
No os avergonceis y al grano, es natural, a todos nos gusta y a veces los preámbulos sobran :-)

OBJETIVO

Configurar una conexión a Internet (¡¡segura!!) en un PC portátil, sobre una línea telefónica básica "RTB", disponiendo de una tarifa plana o ondulada.

ANTECEDENTES Software y hardware

La máquina no dispone de puerto serie ni diskettera (dos elementos condenados a desaparecer más bien pronto, desplazados por los puertos USB y las Pen-Drive). Además, como la mayoría de los portátiles se vende con un sistema operativo (en adelante OS) preinstalado y un módem PCI ensamblado para ese OS. Para distinguirlos de los módem "no capados" les llamamos "winmodem". Esto es así debido a la presión comercial, mediática y monopolista de algunos fabricantes que persiguen por cualquier medio, que lo "suyo" sea un estándar del que nadie pueda prescindir. Por lo demás el resto de hardware del PC es de buena calidad y las marcas de reconocido prestigio.
El vendedor es muy conocido y nos ofrece un precio razonable y una buena garantía post venta. Ahora veremos como todo lo demás tiene solución

FILOSOFÍA

Para conseguir el objetivo que nos planteamos, tenemos que conseguir un sistema operativo estable, seguro, actualizable y barato. Un módem externo, nos vale perfectamente el que tenemos para el PC de sobremesa. Los sistemas operativos "serios" son caros nuestra máquina no es un cajero automático (vamos a suponer que nosotros tampoco somos banqueros, por mi parte ni siquiera bancario :-). Además queremos instalar programas que usamos a diario tanto para el trabajo como para el ocio. Optaremos por uno de esos OS de código abierto, libre, o las dos cosas y si es posible sin invertir mas de lo que ya pagamos por el OS que nos vendieron, a nuestro pesar.
Teemos en Internet mucho donde escoger. Más de una docena de distribuciones GNU+Linux* completas (Slackware, Debian, SuSe, Gentoo, Kanopix, Mandriva, Fedora....), un Sun Solaris (Solaris 10) y varias distribuciones muy completas *BSD (FreeBSD, NetBSD y Open BSD). Algunas empresas como IBM (Aix), SCO (Unixware), Novel (Netware) y otras, facilitan sistemas operativos de forma gratuita a estudiantes y otros colectivos (para fines no comerciales).

En honor a la verdad hay que decir en este punto que, cerca del 80% de los "servidores" en producción en todo el mundo, corren alguno de los OS ante-dichos y algunas versiones comerciales de Linux y UNIX* que no he nombrado, por esa razón, porque son comerciales y sus empresas se encargan de publicitarlos cuando y como quieren. Un 15% ejecutan otros sistemas operativos UNIX*, AS/400, AS/390 y otros. Me refiero a empresas como Google, Yahoo, o a algunas más conocidas como ECI, BSCH, BBVA.Para nuestra máquina hemos escogido FreeBSD RELEASE 5.3, porque es posiblemente el que dispone de más software (entre los *BSD), varios métodos de gestión de ese software, y es el menos complicado de los *BSD. Los niveles de seguridad (altos ya en una instalación básica), son muy configurables y la estabilidad de su kernel es proverbial y de sobra conocida. El método de licenciamiento del software que se desarrolla en la Berkeley Software Distribution (departamento de desarrollo de software de la Universidad de California en Berkeley), es el menos restrictivo de todos los que conozco. Podría haber escogido cualquier otro OS de los mencionados
más arriba, pero este es de los que menos documentación tiene en castellano, y de esta forma cotribuyo quizá, a que otros lo instalen sin miedo a no poder acceder a Internet y por lo tanto a que se popularice un buen OS.

MÉTODO

No podemos conseguir que nuestro vendedor se quede con el winmodem y nos devuelva el importe (además el importe es irrisorio, por eso las empresas ensambladoras los montan), pero si podemos conseguir que nos devuelvan el importe de ese sistema operativo de código cerrado, alto precio, alta instabilidad y altísima vulnerabilidad que nos colarían si no conociésemos las leyes. Esto es, lo que pone en la letra minúscula. O no tuviésemos otros OS para sustituirlo. Pero ese no es el caso, así que sin desprecintar el estuche del CD, seguimos los pasos encontraremos en tantas páginas de Internet como documentos para renunciar a la religiones impuestas en la más tierna infancia (que es otra forma de cercenar la poca libertad que nos dejan los miles de leyes que nuestros políticos nos regalan cada día). Con ese dinero podemos adquirir unos cientos
de CDs (sin canon para la SGAE) o simplemente gastarlo en cerveza. Seguro que encontráis algo que necesitáis, lo importante es que ese dinero no vaya a parar al bolsillo del hombre más rico del mundo. Para comportarse como Albert Capone no da la talla.

Acto seguido hacemos una operación de limpieza en nuestro nuevo disco duro (en adelante HD), eliminando de esta forma cualquier otro "malware", "virus", "spiware", "troyano" y demás código maligno. Procedemos a la instalación del nuevo OS, para lo cual recomiendo ayudarse del
FreeBSD Handbook. Si encontramos algún amigo con experiencia estas latitudes de los universos libres y se presta a echar una mano (esto no es lo más fácil precisamente), acabaremos antes y nos podremos dedicar a disfrutar de toda la potencia y blindaje de nuestra nueva máquina y a conocer el nuevo OS.

CONECTANDO HARDWARE

Solucionamos la conexión entre PC y módem por medio de un latiguillo que dispone de un conector USB en uno de los extremos y un conector Serie en el otro, junto a un "chip" que se encarga de la compatibilidad de los dos puertos. Existen en el mercado diferentes marcas que comercializan estos latiguillos con diferentes chips. Usaremos uno de la marca Taurus con un chip soportado en los OS *BSD, Sun Solaris, Irix, Linux y Mac OS X, entre otros.

El módulo necesario para manejar este latiguillo, está escrito por la empresa Magic Control y se llama "umct". Lo añadimos al archivo "/boot/loader.conf" como cualquier otro módulo que necesitemos que se cargue en el arranque. La sintaxis es "umct_load="YES", justificado a la izquierda del fichero. Al arrancar de nuevo la máquina hacemos un "dmesg -a" y vemos una línea como esta:

"ucom0: USB-RS232 Interface Converter USB Ver1.2 Device, rev 1.10/1.03, addr 2"

El kernel al disponer del módulo "umct" lo carga y devfs o devd crea en /dev el dispositivo especial de dispositivo"ucom0", que es como un nuevo puerto serie

# ls -l /dev/ucom0 30 crw-rw---- 1 uucp dialer 241, 128 Oct 30 02:32 /dev/ucom0

Lo utilizaremos en lugar del clásico "/dev/cuaa0", a la hora de configurar nuestra conexión a Internet.

SOFTWARE COMPROBACIONES PREVIAS

Vamos a usar el método ppp-user en lugar de pppd. Queremos que cualquier usuario al que autoricemos pueda establecer una conexión en modo "userland", esto es, sin que el kernel este ejecutando ningún demonio. En el momento que un usuario ejecuta "ppp", devfs o devd creará un fichero especial de dispositivo llamado "tun0 o tun1" que utilizará el kernel como un túnel por el que salir al exterior, en este caso a Internet. El dispositivo aparecerá sólo con listarlo.

# ls -l /dev/tun0 #108 crw------- 1 uucp dialer 225, 0 Oct 30 02:55 /dev/tun0

OTRAS MEDIDAS PARA PREVENIR PROBLEMAS

* LÍNEAS que deben crearse o modificarse en el "/etc/rc.conf"

- hostname="blade.runner" <---- debe de existir un nombre de host con esta sintáxis

- outer_enable="NO" <---- probar a ponerlo en YES cuando el ppp se queje de que no puede
establecer las rutas de la red

- sendmail_flags="-bd"

- named="NO" <----- o SI .. pero entonces no es necesaria la línea "enable dns", en el "/etc/ppp/ppp.conf"

* VERIFICAR el contenido de estos archivos

- Asegurarse de que en el "/etc/host.conf" existen estas lineas:

hosts
bind

(esto es para versiones de FreeBSD anteriores a las 5.x, aunque por cuestiones de compatibilidad
también puede estar en versiones posteriores a las 5.x)

- Verificar que en el "/etc/nsswitch.conf" existe esta linea:

hosts: files dns

(este fichero sustituye al "/etc/host.conf" en versiones posteriores a las 5.x)

- Comprobar que el fichero "/etc/hosts" contiene algo como esto:

::1 localhost localhost.my.domain
127.0.0.1 localhost localhost.my.domain blade.runner blade

- Hacemos "cat etc/resolv" para ver si contiene las IPs de los DNS de nuestra ISP (si están, no será necesario que en el "/etc/ppp.conf" pongamos la entrada "enable dns", pero si la ponemos no pasa nada, simplemente al establecer la conexión se añadirán las nuevas IPs a las que existan). La sintaxis del archivo es esta:

nameserver 80.58.61.250
nameserver 80.58.61.254

- Aunque en "/var/log/messages" se puede encontrar bastante información en tiempo real
ejecutando en otro terminal: "tail -f /var/log/messages" podemos hacer más.

- Verificar que el archivo "/etc/syslog.conf" contiene estas líneas. Así se habilitará el ppp.log.

!ppp
*.* /var/log/ppp.log

**** Y AHORA SÍ VAMOS A CREAR LOS ARCHIVOS NECESARIOS EN LOS LUGARES ADECUADOS ****



- Debemos de entrar en el directorio "/etc/ppp/". Si existe allí un archivo llamado, "ppp.conf"
, lo renombramos como "ppp.conf.OLD" y lo dejamos como respaldo (esto lo haremos siempre que vayamos a sustituir un archivo de configuración).

- Creamos un archivo "ppp.conf" con nuestros datos particulares en las líneas que a
continuación voy describiendo. Es muy importante respetar el sangrado, las entradas que terminan en : (dos puntos), deben de empezar en la primera columna de la izquierda (justificación izquierda), el resto deben de comenzar separadas de la primera columna de la izquierda por un mínimo de dos espacios o una tabulación.

- Descripción línea a línea del contenido del archivo "ppp.conf". Las líneas o grupos de palabras precedidas por el caracter # son comentarios, los programas que leen estos archivos no las tendrán en cuenta y seguirán leyendo y en su caso, interpretando las líneas que no vayan precedidas de #. Las líneas que debe de contener el archivo son las que he numerado, de la primera a la decimosexta (aunque no todas son imprescindibles)

default: <---- primera línea obligaroria
 set log Phase Chat LCP IPCP CCP tun command <---- segunda línea
 para que se haga el log
 set log phase tun <---- sustituye a la anterior cuando todo vaya bien y hayais probado
 la conexión durante un tiempo prudencial sin experimentar problemas
 ident user-ppp VERSION (built COMPILATIONDATE) <---- tercera línea
 set device /dev/ucom0 <---- cuarta línea.. identifica el puerto serie
 este dispositivo es especial.. generalmente sería el de un puerto serie normal tipo
 /dev/cuaa0
 set speed 115200 <---- quinta línea.. se refiere a la velocidad del modem, probamos
 con la máxima
 set speed 38400 <---- probar con esta si la anterior falla
 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" AT OK-AT-OK ATE1Q0
 OK \\dATDT\\T TIMEOUT 40 CONNECT"

 la anterior es la sexta línea y corresponde a la cadena de marcado y
 mejor si va en una sóla línea
 set timeout 180 <---- séptima línea
 enable dns <---- octava línea.. no es obligatoria si tenemos las IPs de los DNS en
 "/etc/resolv.conf"
 allow users user1 user7 <---- novena línea en la que habilitamos los usuarios
 que pueden ejecutar ppp, además deben de estar en el grupo "network"

<---- línea de separación.. ppp y chat no tienen en cuanta las líneas en blanco

isp: <---- décima línea.. es el nombre de la conexión, poner aquí la palabra que se prefiera
 set phone "908200000" <---- decimoprimera línea, escribir
 el número de teléfono siempre entre comillas
 set authname nombre@usuario <---- decimosegunda línea
 sustituir nombre@usuario, por el nombre que nuestra ISP nos haya adjudicado
 set authkey password <---- decimotercera línea
 sustituir password por la clave verdadera
 accept CHAP <---- decimocuarta línea
 no es realmente necesaria puesto que aceptará la autenticación CHAP o PAP
 pero no está demás decirle cual preferimos
 set timeout 0 <---- decimoquinta línea
 si no hay actividad en los segundos que figuren aquí, el ppp cortará la conexión.
 Lo fijamos a 0 para que no haya límite alguno
 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255 <---- decimosexta línea

- Este archivo debe estar en el directorio "/etc/ppp/" con, permisos 644

INICIO DE LA CONEXIÓN

-Una vez hecho esto, ya es posible iniciar la conexión, se puede hacer de varias formas.. consultar "man ppp" y "man chat" para ver otras posibilidades. En general como usuario bastará con ejecutar: ppp, de inmediato responderá :

usuario@host% ppp
Working in interactive mode
Using interface: tun0
ppp ON host>

- Como vemos se coloca en modo interactivo (es decir, esperando órdenes) y devuelve el prompt. Introducimos entonces la orden: dial isp (isp se corresponde con el nombre que adjudicamos a la conexión en el fichero "/etc/ppp/ppp.conf/", justo antes del nº de teléfono).

usuario@host% ppp
Working in interactive mode
Using interface: tun0
ppp ON host> dial isp
ppp
Ppp
PPp
PPP

- Si todo va bien, el módem marcará, se producirá la autenticación del usuario que figura en el archivo "ppp-conf" con la clave que pusimos también en ese archivo y aparecerán esas tres líneas finales como, ppp Ppp PPp PPP. En este punto la conexión se ha realizado con éxito. Si hemos llegado hasta aquí con este resultado, ya podemos comunicarnos con el resto del mundo.

- Para cerrar la conexión introducimos la orden close y a continuación quit all para salir del modo interactivo de ppp

usuario@host% ppp
Working in interactive mode
Using interface: tun0
ppp ON host> dial isp
ppp ON host>
Ppp ON host>
PPp ON host>
PPP ON host>close
PPp ON host>
Ppp ON host>
ppp ON host>quit all
usuario@host%


CRÉDITOS

- Es obligado escribir aquí que, todo lo que se refiere a la configuración de la conexión, es decir, lo que figura por debajo del título "CONECTANDO HARDWARE", se puede encontrar en otros documentos existentes en la red, como en este elaborado por Koji
que figura en la web eldemonio.org, una página en español para los amigos y usuarios de los *BSD. Yo sólo he añadido las modificaciones que me han parecido necesarias para el caso muy específico de este usuario y de esta máquina. Por lo tanto, leyendo detenidamente el FreeBSD Handbook y los manuales de los programas ppp y chat, es posible escribir los mismos archivos que figuran en este documento y llegar a similares resultados, sin haberlo visto nunca. Y de paso ahorrarse todo el parloteo acerca de sistemas operativos, "mafias" comerciales y demás filosofía.

Salute fratres

lunes, agosto 29, 2005

Lucifer



Por mi se va hasta la ciudad doliente
por mi se va al eterno sufrimiento
por mi se va a la gente condenada


La justicia movió a mi alto arquitecto
hízome la divina potestad
el saber sumo y el amor primero


Antes de mí no fue cosa creada
sino lo eterno y duro eternamente
dejad, los que aquí entráis, toda esperanza


"El Infierno, Canto III"
La divina Comedia
Dante Alighieri


sábado, agosto 13, 2005

Lo llamarán misoginia



Leyendo blogs me encontré con este texto en unos cuantos. Algunos de los artículos del manifiesto, además de simpáticos, contienen reflexiones hechas desde el sufrimiento. Hay aquí mucho de esa incapacidad, al parecer innata en los hombres, para entender a las mujeres. Lo politicamente correcto ahora sería decir que, no todas las mujeres son iguales, de hecho cada una es un universo y que no todos los hombres son iguales tampoco, aunque haya menos universos, lo cual es una obviedad, quede dicho de todas formas. Yo conozco a algunos hombres que suscribirían lo que sigue, pero también algunas mujeres. Las demás dirán que es misoginia pero, ningún hombre puede odiar a una mujer tanto, como otra mujer.


MANIFIESTO MASCULINO (DE UNA VEZ POR TODAS).




Después de los continuos ataques que venimos sufriendo los hombres, que soportamos con la resignación de un fraile trapense y que "estoicamente" aguantamos las andanadas de las féminas.
Nosotros, que afortunadamente no tenemos el día "del hombre trabajador" porque algunos lo hacen (trabajar) los 365/366 días del año, tenemos un MANIFIESTO que es una declaración de principios y de emancipación. Alguna se va a picar pero donde las dan las toman... Este es nuestro manifiesto:



Mujer:

1.- Si piensas que estas gorda, muy probablemente sea cierto. No preguntes. Me negaré a responder

2.- Si quieres algo, solo pídelo. Dejemos esto en claro: SOMOS SIMPLES.
Las indirectas sutiles no funcionan. Las indirectas directas no funcionan. Las indirectas muy obvias tampoco funcionan.
Di las cosas tal como son

3.- Si haces una pregunta para la que no quieres respuesta, no te extrañe una contestación que no quieres oír.

4.- Somos SIMPLES. Si te pido que me pases el pan por favor, solo quiero decir eso.
No te estoy reprochando que no este puesto.
No hay segundas intenciones ni retorcimientos, de verdad SOMOS SIMPLES.

5.- Somos SIMPLES. No hace falta que preguntes en que pienso, el 96,5% de las veces será en Sexo. Y no, no somos unos guarros, es simplemente lo que más nos gusta, desgraciadamente SOMOS SIMPLES

6.- A veces no estoy pensando en ti. No pasa nada.
Por favor acostúmbrate a ello.
No me preguntes en que estoy pensando, a menos que estés lista para hablar de temas como la política, la economía, él fútbol...

7.- Domingo = Carne asada = Amigos = Siesta y Tele.
Es como la luna llena o la marea.
No se puede evitar.

8.- Ir de compras no es divertido, y no, nunca voy a considerarlo de esa manera.

9.- Cuando tengamos que ir a alguna parte, absolutamente cualquier cosa que te pongas esta bien.
DE VERDAD.

10.- Tienes suficiente ropa.
Tienes demasiados zapatos.
Llorar es chantaje.

11.- La mayoría de los hombres tenemos tres pares de zapatos.
Insisto SOMOS SIMPLES.
¿Que te hace pensar que sirvo para decidir cual par de los treinta que tienes te va mejor?

12.- Respuestas sencillas como un SI o un NO, son perfectamente aceptables para cualquier pregunta.

13.- Acude a mí con un problema solo si quieres ayuda para resolverlo.
Para eso sirvo. No me pidas empatía como si fuera yo una de tus amigas.

14.- Una jaqueca que dura 17 meses es un problema.
Que te vea un medico.

15.- Si algo que dije se puede interpretar de dos formas distintas, y una de ellas hace que te entristezcas o te enojes, mi intención era decir la otra.

16.- TODOS los hombres vemos nada más 16 colores.
El melón es una fruta, no un color.

17.- ¿Que diablos es el color fucsia? Es más,
¿Cómo cojones se escribe?

18.- La cerveza nos emociona tanto como los bolsos a vosotras.

19.- Si te pregunto si pasa algo malo y tu respuesta es "nada", te creeré y reaccionare como si nada malo pasara.

20.- No preguntes ¿Me quieres?
Ten la seguridad de que si no te quisiera no estaría contigo.

21.- Regla genérica.
Ante cualquier duda sobre nosotros, piensa lo más sencillo.

SOMOS SIMPLES.

POR FAVOR DISTRIBUID ESTE MANIFIESTO A LA MAYOR CANTIDAD DE MUJERES POSIBLE, ASI TAL VEZ ENTIENDAN A LOS HOMBRES DE UNA VEZ POR TODAS.
DISTRIBUIDLO TAMBIEN A TODOS LOS HOMBRES QUE CONOZCAS PARA QUE SEPAN QUE NO ESTAN SOLOS EN LA LUCHA.


lunes, agosto 01, 2005

La Realidad Controlada




Un Estado totalitario realmente eficaz sera aquel en el cual los jefes políticos todopoderosos y su ejército de colaboradores pudieran gobernar una población de esclavos sobre los cuales no fuese necesario ejercer coerción alguna por cuanto amarían su servidumbre. Inducirles a amarla es la tarea asignada en los actuales estados totalitarios a los ministerios de propaganda, los directores de los periódicos y los maestros de escuela. Pero sus métodos todavía son toscos y acientíficos.

Los mayores triunfos de la propaganda se han logrado, no haciendo algo, sino impidiendo que ese algo se haga. Grande es la verdad, pero más grande todavía, desde un punto de vista práctico, el silencio sobre la verdad. Por el simple procedimiento de no mencionar ciertos temas, de bajar lo que Mr. Churchill llama un telón de acero entre las masas y los hechos o argumentos que los jefes políticos consideran indeseables, la propaganda totalitarista ha influido en la opinión de manera mucho más eficaz de lo que lo hubiese conseguido mediante las más elocuentes denuncias y las más convincentes refutaciones lógicas.

Pero el silencio no basta. Si se quiere evitar la persecución, la liquidación y otros síntomas de fricción social, es preciso que los aspectos positivos de la propaganda sean tan eficaces como los negativos. Los más importantes proyectos del futuro serán vastas encuestas patrocinadas por los gobiernos sobre lo que los políticos y los científicos que intervendrán en ellas llamarán el problema de la felicidad; en otras palabras, el problema de lograr que la gente ame su servidumbre.

La seguridad tiende muy rápidamente a darse por sentada. Su logro es una revolución meramente superficial, externa. El amor a la servidumbre sólo puede lograrse como resultado de una revolución profunda, personal, en las mentes y los cuerpos humanos. Para llevar a cabo esta revolución necesitamos, entre otras cosas, los siguientes descubrimientos e inventos. En primer lugar, una técnica mucho más avanzada de la sugestión, mediante el condicionamiento de los infantes y, más adelante, con la ayuda de drogas.

En segundo lugar, una ciencia, plenamente desarrollada, de las diferencias humanas, que permita a los dirigentes gubernamentales destinar a cada individuo dado a su adecuado lugar en la jerarquía social y económica. (Las clavijas redondas en agujeros cuadrados tienden a alimentar pensamientos peligrosos sobre el sistema social y a contagiar su descontento a los demás.) En tercer lugar (puesto que la realidad, por utópica que sea, es algo de lo cual la gente siente la necesidad de tomarse frecuentes vacaciones), un sustitutivo para el alcohol y los demás narcóticos, algo que sea al mismo tiempo menos dañino y más placentero que la ginebra o la heroína. Y finalmente (aunque éste sería un proyecto a largo plazo, que exigiría generaciones de dominio totalitario para llegar a una conclusión satisfactoria), un sistema de eugenesia a prueba de tontos, destinado a estandardizar el producto humano y a facilitar así la tarea de los dirigentes.

A medida que la libertad política y económica disminuye, la libertad sexual tiende, en compensación, a aumentar. Y el dictador (a menos que necesite carne de cañón o familias con las cuales colonizar territorios desiertos o conquistados) hará bien en favorecer esta libertad. En colaboración con la libertad de soñar despiertos bajo la influencia de los narcóticos, del cine, la televisión y la radio, la libertad sexual ayudará a reconciliar a sus súbditos con la servidumbre que es su destino.

Esto venía a decir Aldous Huxley en 1932, que en su libro Un Mundo Feliz, ratrata una sociedad que utiliza la genética y la clonación para el condicionamiento y el control de los indivicuos. En esta sociedad, todos los niños son concebidos en probetas y son genéticamente condicionados para pertenecer a una de las cinco categorías de población. De la más inteligente a la más estúpida. Todos son necesarios para que el sistema funcione como un reloj. Los Alpha son la élite, los Beta los que ejecutan, los Gammas los empleados subalternos y los Deltas y los Epsilones, los que hacen los trabajos duros o sucios.

Pero sobre todo Huxley describe en "Un Mundo Feliz" lo que sería una dictadira perfecta, que tendría la apariencia de una democracia. Una prisión sin muros ni alhambradas en la que los presos no soñarían con la libertad. Ni siquiera sabrían lo que significa. Un sistema de esclavitud donde el gusto por el consumo y el entretenimiento haría que los esclavos amasen su propio servilismo.

A nosotros nos compete analizar si estos espacios en Internet son verdaderos paraísos virtuales de la libertad, al menos e la libertad de expresión y opinión para muchos, incluídos por supuesto los funcionarios del totalitarismo y las "clavijas cuadradas en agujeros redondos..". Si formamos parte de los esclavos usando una de las drogas sustitutivas de la libertad que el sistema pone a nuestro alcance (un espacio, como un tablón de anuncios debidamente enrejado y controlado) o por el contrario somos los últimos guerreros de la libertad, confinados a este espacio en el que la guerra de guerrillas hace menos daño al sistema, o a la apariencia que el sistema desea tener en la calle.

En todo caso, soy consciente de que la verdadera libertad fue asesinada hace bastante tiempo, en plena adolescencia. Nunca conseguiremos recuperarla, no a aquella libertad. Es cada día más dificil escapar a los ojos de tantos grandes hermanos que vigilan cada rincón de nuestras ciudades, tanto fuera como dentro de nuestras viviendas y los gobiernos se las ingenian para que seamos nosotros mismos los que pidamos más cámaras, más control, más policía, porque como dice el texto de Huxley, la seguridad es vital para conseguir el control de las sociedades.

Seguiré recuperando textos antiguos, de esos que no nos leyeron en las escuelas y aun menos en nuestras casas, donde durante siglos cualquier lectura que no fuera la Biblia y incluso esta misma a veces, era considerada subversiva. Los libros ardieron pero, siempre hubo manos que escondieron del fuego y la opresión, aquellos que nos llegaron. Muchos de ellos llenos de sabiduría, con la que se puede hacer el bien o el mal.