El Maravilloso Mundo de Linux 2.6 (II)
Joseph Pranevich - jpranevich <en> kniggit.net
Soporte de Hardware
Según Linux ha ido ganando aceptación a lo largo del tiempo,
cada nueva iteración del kernel ha ampliado espectacularmente
el soporte a nuevos dispositivos -- tanto en tecnologías emergentes
(USB en la 2.4) como en compatibilidad hacia atrás (MCA en la 2.2).
Según nos acercamos a la versión 2.6, quedan pocos dispositivos
no soportados. Linux ha llegado a abarcar casi todo el universo
conocido en términos de hardware. Por esta razón, la mayoría
de los cambios en el soporte de hardware i386 se han encaminado
a la robustez más que a la expansión, con notables excepciones.
Dispositivos Internos
Casi tan importante como el tipo de procesador, los buses de sistema
tienen la misión de cimentar las comunicaciones internas de
un ordenador. La arquitectura PC ha visto pasar tecnologías de bus
en abundancia, desde la primigenia ISA (en el IBM PC original)
hasta los actuales buses inalámbricos. Linux ha estado siempre
a la última en soporte de buses y dispositivos de consumo,
y se ha mostrado bastante más reticente en incorporar tecnologías
poco habituales.
Las mejoras en soporte de dispositivos internos están muy extendidas
en todo el espectro. Un caso de dispositivos poco usados es el soporte
de las extensiones Plug-and-Play para ISA, o "Arquitectura Estándar
de la Industria" [Industry Standard
Architecture].
Linux no llegó a tener soporte para PnP hasta la versión 2.4. Ahora
se ha completado al incluir PnP a nivel de BIOS,
una base de datos de dispositivos
y mejoras en la compatibilidad. La suma de todos los cambios
es que Linux ha pasado a ser un sistema operativo Plug-and-Play real,
y puede indicarse así en las BIOS compatibles. Otros buses antiguos como MCA,
"Arquitectura de Microcanal" [Microchannel
Architecture], y EISA, "ISA Extendido" [Extended ISA],
han pasado a ser parte del nuevo modelo de dispositivos, y tienen
sus propias bases de datos específicas. Pasando ya a las nuevas
incorporaciones, Linux 2.6 incluye unas cuantas mejoras incrementales
en el subsistema PCI, o "Interconexión de Componentes Periféricos"
[Peripheral Component Interconnect], entre otras:
PCI en caliente, gestión de energía, soporte para múltiples
tarjetas AGP ("Puerto de Gráficos Acelerado" o Accelerated Graphics Port,
una versión de alta velocidad del bus PCI), y demás.
Por último, además de todos los buses "reales", en Linux 2.6
se ha añadido el concepto de bus "heredado": específico a cada
arquitectura, contiene todos los dispositivos que se dan por hecho
en un sistema. Por ejemplo, en un PC se incluyen aquí los puertos
serie, paralelo y PS/2 -- dispositivos que están presentes
pero que no aparecen en ningún bus del sistema. Este soporte
puede traer complicaciones en algunas plataformas, como
obligar a hablar directamente con el firmware de la máquina,
pero tiene la ventaja de que todos los dispositivos
están incluidos en el nuevo paradigma de drivers.
Dispositivos Externos
Es innegable que hay pocos cambios en los buses internos en el reciente
ciclo de desarrollo; pero en la "zona caliente"
de los dispositivos externos, nos encontramos con todo lo contrario.
El cambio más importante es seguramente el soporte para USB 2.0,
también conocido como USB de alta velocidad. Se pasa con ello
a permitir transferencias de 480 megabits por segundo, en lugar
de los 12 Mbit/s del USB tradicional. Hay un estándar relacionado,
USB On-The-Go ["sobre la marcha"], que es una variante punto a
punto del protocolo USB para conectar dispositivos directamente
(como puede ser una cámara digital a una impresora, sin PC
en medio); no soportado todavía por Linux 2.6 (aunque hay parches externos
disponibles). Además de incluir nuevos dispositivos, se ha mejorado
la forma en que los dispositivos USB se enumeran internamente,
lo cual quiere decir que pueden conectarse muchos más dispositivos
de cada tipo a la vez. Aparte de los cambios más importantes,
esta versión se ha centrado en aspectos como compatibilidad,
estabilidad y simplificación; lo que debería mejorar el soporte
de dispositivos USB en general.
Visto desde el campo opuesto, Linux 2.6 incluye por primera vez
la capacidad de ser un dispositivo USB, en lugar de aparecer
como servidor. Así se puede, por ejemplo, conectar una agenda
electrónica corriendo Linux a un PC, y cada lado sabe qué protocolo
usar. Es un campo nuevo, pero esencial para la aceptación de Linux
en dispositivos embebidos.
Dispositivos Inalámbricos
Durante los últimos años, las tecnologías inalámbricas han llegado
por fin al público. A menudo da la impresión de que los cables tienen
las horas contadas -- salvo quizás el cable de corriente.
La aplicación más vistosa está en el uso de redes inalámbricas,
seguidas de cerca por dispositivos como PDAs.
Puede establecerse una distinción genérica entre largo alcance
(como puede ser AX.25 sobre radio amateur) y corto alcance
(normalmente basado en 802.11, aunque hay protocolos más antiguos).
El soporte de ambos ha estado presente en Linux desde los primeros
tiempos (v1.2), y los subsistemas correspondientes se han actualizado
durante el desarrollo de la versión 2.6. El mayor cambio en el corto
alcance es la integración de todos los protocolos y tarjetas bajo
una interfaz común, como parte del subsistema inalámbrico.
Así se resuelven unas cuantas incompatibilidades menores en la
forma de tratar a cada dispositivo, y se refuerza el soporte
de Linux para el subsistema mediante un conjunto de herramientas
en espacio de usuario que funcionan con todos los dispositivos
soportados. Aparte de esta estandarización, Linux 2.6 trae
varias mejoras generales: capacidad de notificar un cambio de
estado (como puede ser estado de roaming en teléfonos móviles),
y un cambio en TCP para manejar correctamente los cortes y retrasos
momentáneos, tan comunes en las comunicaciones inalámbricas.
Debido a la presión de soportar dispositivos inalámbricos bajo
Linux 2.4, los cambios ya se han adaptado a este kernel.
En el espacio genérico de dispositivos inalámbricos, hay avances
similares. El protocolo de infrarrojos IrDA, así llamado por
el grupo Infrared Data Associates, ha visto mejoras en la
gestión de energía y su integración en el modelo de drivers del kernel.
Los avances reales se han hecho en el campo de los dispositivos
Bluetooth. El protocolo inalámbrico Bluetooth está diseñado
para comunicaciones de corto alcance y bajo consumo, y no está
limitado por la línea de visión como los infrarrojos.
El protocolo en sí se ha diseñado para funcionar bajo cualquier
condición, y se viene usando en PDAs, teléfonos móviles, impresoras,
e incluso equipamiento más exótico, como en partes de automoción. Tiene
dos modos de funcionamiento: SCO, "Orientado a Comunicación Síncrona"
[Synchronous Connection Oriented], para aplicaciones de audio
con pérdida; y L2CAP, o "Protocolo de Adaptación y Enlace Lógico"
[Logical Link Control and
Adaptation Protocol], para una conexión más robusta con
retransmisión. El protocolo L2CAP tiene además otros subprotocolos
(como son RFCOMM para redes punto a punto o BNEP
para redes tipo Ethernet.) El soporte de Linux para aplicaciones
Bluetooth sigue creciendo, y puede esperarse que madure
de forma significativa según los dispositivos se vayan generalizando.
Vale la pena mencionar que las últimas versiones del kernel 2.4
integran ya soporte Bluetooth limitado.
Soporte a Dispositivos de Bloque
Buses de Almacenamiento
Los buses de almacenamiento dedicado, como son IDE/ATA "Electrónica
de Disco Integrada/Tecnología Avanzada de Conexión" [Integrated Drive
Electronics/Advanced Technology Attachment] y SCSI, o "Interfaz
Reducido de Sistema para Ordenadores" [Small Computer
System Interface], también han sido actualizados durante el ciclo 2.6.
Los cambios más grandes se centran en el subsistema IDE, reescrito
(y vuelto a reescribir) durante el desarrollo del nuevo kernel,
resolviendo los problemas de escalabilidad y eliminando otras
limitaciones. Por ejemplo, las grabadoras de CD IDE
pueden accederse ahora directamente a través del driver IDE,
lo que resulta en una implementación mucho más limpia que antes.
(Previamente se necesitaba usar también un driver especial
de emulación SCSI, resultando en un proceso confuso y a menudo
problemático.) Se ha añadido soporte para dispositivos
de alta velocidad Serial ATA (S-ATA), con velocidades de transferencia
superiores a 150 MB/s. Para SCSI, hay un gran número de
mejoras a lo largo y ancho del sistema para ampliar el soporte
y la escalabilidad. En sistemas antiguos,
Linux soporta ahora dispositivos SCSI-2 multipath con más
de 2 LUNs en el mismo dispositivo. (SCSI-2 es la versión anterior
del estándar SCSI, desarrollado hacia 1994.) Otro cambio importante
es que Linux puede ahora revertir a un modo de prueba de cambio,
como Microsoft Windows, para ser compatible con los dispositivos
que no siguen la especificacion al pie de la letra.
Según se han ido estabilizando estas tecnologías, el soporte de Linux
ha seguido el mismo camino.
Aunque no es un bus de almacenamiento propiamente dicho, Linux
incluye ahora soporte para acceder la BIOS EDD, o "Dispositivo de Disco
Mejorado" [Enhanced Disk Device], directamente en la máquina
para ver cómo el servidor ve sus propios dispositivos. La BIOS EDD
incluye información sobre todos los buses de almacenamiento
disponibles en el sistema y accesibles por la BIOS, incluyendo
IDE y SCSI. Además de obtener la configuración y otros datos
de los dispositivos, hay varias ventajas adicionales. Por ejemplo,
este nuevo interfaz permite que Linux sepa desde qué disco arrancó
el sistema, lo cual puede ser útil en sistemas nuevos donde
este dato no es tan obvio como podría parecer. Los programas
de instalación inteligentes pueden así tenerlo en cuenta para
instalar el cargador de arranque de Linux en el disco adecuado,
por ejemplo.
Además de lo anterior, hay que resaltar de nuevo que todos los tipos
de dispositivos (hardware, inalámbricos, y almacenamiento) han sido
integrados en el subsistema de dispositivos de Linux.
En algunos casos, los cambios son puramente de apariencia.
En otros, hay cambios más importantes (llegando incluso a modificar
la lógica de detección de dispositivos).
Sistemas de archivo
El uso más visible de dispositivo de bloque en un sistema Linux
(y de hecho en cualquier sistema) es la creación de un sistema
de archivos, y el soporte de sistemas de archivo en Linux
ha mejorado bastante desde la versión 2.4 en varios sentidos.
Destacamos entre ellos el soporte de atributos extendidos
y de controles de acceso tipo POSIX.
Centrémonos de momento en los sistemas de archivo convencionales
de Linux: los más asociados con un sistema Linux "puro" son
el segundo y tercer sistema de archivos extendido, "ext2" y "ext3".
(la siguiente opción más popular es ReiserFS). Ya que son los sistemas
que más afectan a los usuarios, han sido los más retocados durante
el desarrollo de Linux 2.6. Un cambio fundamental es el soporte
de atributos extendidos, o metadatos que pueden insertarse
en el sistema de archivos para un fichero cualquiera. Algunos
de estos atributos extendidos serán utilizados por el sistema,
y estarán disponibles solamente para root. Otros muchos sistemas
operativos, como Windows y MacOS, ya utilizan atributos de este tipo
en abundancia. Por desgracia, la herencia de sistemas operativos
UNIX no trae en general soporte para atributos extendidos,
y muchas utilidades de usuario (como 'tar') tendrán que ser actualizadas
antes de poder leer y restaurar esta información adicional.
El primer uso real del nuevo subsistema de atributos extendidos
es implementar listas de control de acceso POSIX, una ampliación
de los permisos estándar UNIX que permite un control más preciso.
Además de estos cambios para ext3, hay otros menos importantes:
el tiempo de ejecución del diario [journal] para el sistema
de archivo es configurable, por ejemplo para usuarios de portátiles
donde se tendría que poner en marcha el disco duro desde un modo de ahorro
de energía; las opciones por defecto para montar una unidad
pueden almacenarse dentro del propio sistema de archivos
(de forma que no hay que especificar el directorio al montar);
y se pueden marcar directorios como "indexados" para acelerar
las búsquedas de ficheros en su interior.
Además de estos cambios hay un número de mejoras, tanto dentro
como fuera del sistema de archivos, para aumentar la compatibilidad
con los sistemas operativos dominantes en la plataforma PC.
Para empezar, Linux 2.6 incluye soporte para el Gestor Lógico
de Discos [Logical Disk Manager] de Windows
(también conocido como "Discos Dinámicos"): la nueva tabla de particiones
adoptada por Windows 2000 en adelante, que permite redimensionar
y crear múltiples particiones. (Aunque, como es lógico, no es de esperar
que los sistemas Linux lo utilicen en sistemas nuevos.) En Linux
2.6 se ha mejorado también (y reescrito) el soporte para el sistema de archivo
NTFS, y es posible montar una unidad NTFS en modo lectura/escritura.
(La posibilidad de escritura está todavía en fase experimental; es posible que
no llegue a estar disponible en la versión final del kernel.)
Por último, el soporte en Linux de FAT12 (el sistema de archivo
DOS utilizado en sistemas DOS obsoletos y en discos flexibles)
ha sido mejorado, para evitar errores presentes
en algunos reproductores MP3 que utilizan este formato.
Aunque no sea tan usado en general, se ha mejorado la compatibilidad
de Linux con OS/2, añadiendo el uso atributos extendidos en el sistema
de archivo HPFS. Como en versiones anteriores, las nuevas funcionalidades
de Linux 2.6 resaltan la importancia de Linux como "navaja suiza"
de los sistemas operativos, al ser compatible con muchos otros.
Por si fuera poco, hay un gran número de cambios dispersos en el soporte
de sistemas de archivo en Linux. Se ha reescrito el sistema de cuotas,
de acuerdo con el aumento en número de usuarios permitido
en el sistema. Pueden marcarse directorios individuales como síncronos,
de forma que todos los cambios (como ficheros adicionales) sean
atómicos; una característica muy útil en programas de correo y bases
de datos, además de permitir una recuperación más robusta
en caso de fallo de disco. Se ha añadido compresión transparente
(una extensión propia de Linux) al sistema de archivo ISO9660
utilizado en los CD-ROMs. Finalmente, se ha creado
un nuevo sistema de archivo basado en memoria ("hugetlbfs"),
exclusivamente para el uso de bases de datos de memoria
compartida.
Soporte de Entrada / Salida
Todo ordenador tiene un lado "externo": dispositivos de entrada
y salida, las piezas que siempre parecen menos importantes de lo que son.
A este lado tenemos cosas obvias como ratones y teclados,
tarjetas de audio y vídeo, y también otras menos aparentes como
joysticks y dispositivos de accesibilidad. Muchos de los subsistemas
de Linux han crecido durante el ciclo de desarrollo de la versión
2.6, aunque el soporte de los dispositivos más comunes
ya estaba en un estado bastante maduro. En su mayoría, las mejoras
de Linux 2.6 en estos dispositivos vienen dadas directamente
por el soporte mejorado a buses externos, tales como teclados
Bluetooh y similares. Hay sin embargo varias áreas en las que
Linux ha progresado bastante.
Dispositivos de Interfaz Externa
Un gran cambio interno en Linux 2.6 es la reescritura de
gran parte de la capa de interfaz externa. Esta capa
es el centro de la interacción del usuario con un sistema Linux,
incluyendo la salida de vídeo, ratón y teclado. En la nueva versión
del kernel, esta capa se ha reestructurado para ser mucho más modular
que antes. Es ahora posible crear un sistema Linux completamente
"ciego", sin salida de vídeo ni nada parecido. El mayor
beneficio de esta estructura modular será para los desarrolladores
de sistemas embebidos, que fabrican dispositivos sólo
accesibles mediante red o puerto serie; pero los usuarios
corrientes verán mejoras derivadas de la modularización,
ya que el sistema no da por hecho nada acerca de dispositivos
o arquitecturas. Por ejemplo, antes se suponía siempre que
un PC necesitaba un controlador estándar de teclado AT (i8042);
la nueva versión de Linux elimina este requisito, lo que permite
eliminar código innecesario de sistemas más modernos.
El manejo en Linux de la salida de vídeo ha sido también modificado,
aunque muchos cambios sólo afectan a las configuraciones
que utilizan el subsistema interno de framebuffer presente
en el kernel. (La mayoría de las máquinas Intel con Linux
no usan estas configuraciones, pero esto no es así en otras
arquitecturas.) En mi opinión personal, el mejor cambio
es que el logotipo de arranque (un pingüino muy chulo,
por si acaso no lo has llegado a ver) soporta ahora resoluciones
de hasta 24 bits por pixel. Aparte de esto, la consola
tiene nuevas características como re-escalado y rotación
(para PDAs y similares), y soporte de aceleración en más hardware.
Y por último, Linux tiene ahora soporte para interrogar
a los monitores VESA (Video Electronics Standard Association
o "Asociación Estándar de Vídeo Electrónico") acerca de sus
capacidades, aunque XFree86 y muchos instaladores de distribuciones
cubren ya este detalle en el espacio de usuario.
Aparte de las mejoras grandes, Linux 2.6 tiene también ciertos
cambios más modestos en la interacción con el usuario. Se incluye ahora
soporte para pantallas táctiles. Los drivers de ratón y teclado
se han actualizado también, y estandarizados para exportar un solo
nodo de dispositivo ("/dev/input/mouse0", por ejemplo)
sea cual sea el hardware o el protocolo. Se pueden utilizar
en la nueva versión ratones exóticos con múltiples ruedas.
El mapeo de teclado PC
sigue ahora el "estándar" de Windows para teclas extendidas.
El soporte de joystick se ha mejorado gracias no sólo a la
inclusión de muchos drivers nuevos (incluyendo el gamepad
de la X Box), sino también para utilizar características
modernas como realimentación por fuerza [force-feedback].
Dejamos para el final el soporte del dispositivo braille TTY
Tieman Voyager, que permite a los usuarios ciegos acceder
a un sistema Linux. (Un aspecto tan crucial que ya se ha migrado
a Linux 2.4.)
Como nota al margen, Linux ha cambiado también el interfaz
de peticiones de sistema para permitir el uso de sistemas sin teclado
conectado. El interfaz de peticiones de sistema ("sysrq")
es un método para que los administradores de sistemas
puedan no sólo obtener información de debug en la consola local,
sino también forzar un reinicio, remontar los sistemas de archivo
como sólo-lectura, y otras brujerías. Ya que Linux 2.6
puede ejecutarse en un sistema totalmente "ciego", es también posible
disparar estos eventos desde el sistema de archivo /proc.
(Por supuesto que si el sistema se cuelga y necesitas
forzarlo a hacer cosas, no te va a servir de mucho.)
Audio y Multimedia
Una de las caracterísiticas nuevas de Linux 2.6 más esperadas
por los usuarios de escritorio es la inclusión de ALSA
(Advanced Linux Sound Architecture" o
"Arquitectura Avanzada de Sonido Linux") en lugar del sistema de sonido antiguo.
Conocido como OSS o "Sistema Abierto de Sonido"
[Open Sound System], ha estado en Linux desde los primeros tiempos,
con todas sus limitaciones de arquitectura. La primera mejora
en el nuevo sistema es que se ha diseñado desde el principio
para poder ser usado desde distintos hilos, procesos y procesadores,
arreglando los problemas de los drivers antiguos que no funcionaban
fuera del paradigma "un ordenador, un procesador". Aún mejor,
los drivers se han diseñado de forma modular (los usuarios
de versiones antiguas de Linux recodarán que la modularidad
se metió con calzador en el sistema de sonido en los tiempos
del kernel 2.2), de forma que se mejora el soporte
de tarjetas de sonido múltiples (incluyendo distintos tipos
de tarjeta). Sin importar lo bonito que sea por dentro,
el sistema no sería una mejora para los usuarios si no tuviera
funcionalidades con gancho; por suerte, hay un montón de éstas.
Resaltaremos el soporte de nuevo hardware (incluyendo audio USB
y dispositivos MIDI), reproducción y grabación full-duplex,
mezcla no entrelazada por hardware, soporte para dispositivos
de edición, y varias otras cosas. Tanto si eres un melómano
como si sólo quieres reproducir MP3s, te gustará
el soporte de sonido mejorado de Linux.
Estos días, los usuarios no se conforman con audio; también quieren
soporte de hardware novedoso como webcams, adaptadores de radio
y televisión, y cámaras de vídeo digital. En los tres casos,
el soporte de Linux ha mejorado bastante para la versión 2.6.
Aunque Linux haya permitido usar (más o menos) tarjetas de radio
desde hace varias iteraciones, el soporte para tarjetas sintonizadoras
de televisión
y cámaras de vídeo apareció hace sólo una o dos versiones.
Este susbistema, conocido como Video4Linux (V4L), ha sido
actualizado a fondo durante la nueva edición del kernel,
incluyendo una limpieza de la interfaz y soporte para más funcionalidades
de las tarjetas. La nueva API no es compatible con la anterior;
las aplicaciones que la usen tendrán que ser reescritas para el nuevo
kernel. Y en un nuevo frente, Linux 2.6 incluye
por primera vez soporte para hardware de Emisión de Vídeo Digital, o DVB
[Digital Video Broadcasting]. Este tipo de hardware,
común en los aparatos decodificadores, puede usarse
para convertir un servidor Linux en un grabador al estilo Tivo
[una grabadora digital programable de vídeo por cable], usando el software
adecuado.