Drivers fuera del kernel con CUSE en Linux
En el kernel de Linux se están haciendo varios cambios para reducir la complejidad de escribir drivers y al mismo tiempo abrir la puerta para que se puedan desarrollar extensiones importantes sin que se tengan que incorporar al kernel.
Un par de ejemplos visibles de estos cambios son:
- Kernel Mode Setting: En donde parte de la funcionalidad del sistema gráfico se sacó de X.org y se integró en el kernel. Específicamente se trata de la configuración del modo de video, lo que permite reutilizar un modo gráfico ya configurado para no tener que reinicializar el video al cambiar de sistema de despliegue gráfico, evitando los molestos pestañeos. También permite que otros sistemas gráficos como Wayland sean más simples de programar.
- FUSE: Se trata de sistemas de archivos que se pueden implementar fuera del kernel, lo que se conoce como User Space (en vez de Kernel Space). Con FUSE se pueden agregar nuevos sistemas de archivo a Linux sin tener que integrarlos en el kernel, esto permitió implementar tranquilamente el soporte para sistemas de archivo NTFS.
En la próxima versión del kernel se incluirá una nueva extensión llamada CUSE o Character Devices in User Space. La idea es similar a FUSE, pero en vez de que sean sistemas de archivos externos al kernel, ahora se trata de drivers o controladores de dispositivos externos al kernel.
En Linux y Unix en general se utilizan algunos archivos especiales para comunicar a las aplicaciones con los drivers, se trata de esos archivos que se encuentran en el directorio /dev. Un problema que surge, especialmente con aplicaciones antiguas, es que las aplicaciones al usar directamente los archivos que están ahí, necesitan que exista el driver relacionado con cada archivo. Un ejemplo clásico son los archivos /dev/dsp y /dev/mixer que se usaban en el antiguo sistema de sonido Open Sound System.
Con CUSE ahora son aplicaciones las que podrán tomar el control de esos dispositivos especiales y como es de esperar, la primera aplicación práctica es un proxy de OSS que permitirá que las aplicaciones crean que están usando OSS, pero serán direccionadas a PulseAudio/ALSA para aprovechar toda la potencialidad de estos sistemas de audio.
Otro uso propuesto es atender las solicitudes a /dev/pilot que realizan aplicaciones antiguas que se conectan a Palm Pilot. Con CUSE no será necesario tener un driver especial, sino que se podrá escribir un proxy que tome las solicitudes a /dev/pilot y las convierta en lo necesario para comunicarse con el dispositivo bajo estándares actuales.
Con CUSE, nuevos desarrolladores podrán dar soporte a sus dispositivos de una forma sencilla, y aplicaciones antiguas podrán seguir funcionando, adaptándose automáticamente a las nuevas funcionalidades que se vayan incorporando al sistema.
Links:
- Kernel Log – Coming in 2.6.31: CUSE… (The H Open)
- Character devices in user space (LWN.net)
La película colombiana "Lecciones para un Beso"...
HP anuncia su Workstation todo-en-uno Z1
8 gadgets de los que alguna vez nos enamoramos
Peter Sunde acusa de corruptas a la corte sueca...
Google lanza su primer programa abierto de pasa...
Creador de BitTorrent: “Mi meta es matar la tel...
Google se rinde a San Valentín y saca su lado m...
Japoneses crean "Robot Avatar"
47 Comentarios
Drivers fuera del kernel con CUSE en Linux
@Franco Catrin: Para hacer quotes se usa
Queria decir: (quitando los puntos) pero esta gripe, junto con el dolor de cabeza que tengo, no me deja escribir bien.
Respondercomo esta el "lame bolas" linuxerdos cada vez que Franco postea. Dios que cosas.
Respondergracias, podrías indicar algún lugar de donde seguir leyendo con respecto a driver, funcionamiento y construcción. vale de antemano.
Responder"En el kernel de Linux se están haciendo varios cambios para reducir la complejidad de escribir drivers"
ResponderOrale que novedad, pero no creen que ya se habían tardado en hacerlo, aunque por otra parte una cosa es que los hagan y otra cosa que funcionen como deben ser, pero si se trata de linux sera como dentro de unos cuantos años, mientras tanto los intermedios seguiran siendo los años de linux como vienen siendo desde hace como 5 años, a ver ahora con que sorpresas salen estos fenomenos.
se agradece.-
Responderleyendo... .. .. .. ..
parece muy prometedor este proyecto
Responderpor fin mas drivers de los muchos qe ya habia ;)
bn por mi SO favorito! (2°: BSD :P)
saludos Franco!
JaD!
esperare el articulo completo en CHW me parece excelente la dupla de estos dos sitios
Respondercomo usuario y solo como usuario de linux (distro ubuntu) me alegro de esta noticia, siempre se alegaba de que era muy difícil conseguir drivers para Linux, sin embargo ya es casi lo mismo que XP (no tengo la experiencia ni la tendré con vista o W7) es mas algunos drivers son mas fáciles de conseguir en Ubuntu.
me pregunto, si los drivers se modularizan fuera del kernel [soñador]¿permitirá esto alivianar el kernel para poder por ejemplo correr en bios (cosa que ya se hace) además de facilitar la instalación de linux en diversos aparatos?[/soñador]
también me alegra que Linux sea cada ves mas popular,todos sabemos lo benefico que es esto para nuestras economías
Como nos acostumbras últimamente, excelente artículo.
Responder¿una aproximacion tangencial al microkernel?
Respondercreo (como opinion muy personal) que el futuro del kernel Linux es evolucionar hacia un kernel hibrido, manteniendo lo mejor de ambos mundos. Una de las caracteristicas que mas se agradece en un microkernel tiene justamente relacion con los drivers:
- desarrollo simplificado.
- independecia del kernel (un driver bien programado es muy longevo)
- seguridad (un driver defectuoso no 'cuelga' al kernel.. bye kernel panic!)
y una caracteristica que es realmente 'moderna': instalar y cambiar drivers sin necesidad de reiniciar el kernel. En entornos de alta disponibilidad es algo que se agradece.
una mirada a como funciona Haiku da una idea de la flexibilidad, poder y longevidad de un microkernel bien hecho
Y que tal la velocidad de la interfaz? es suficiente para drivers de VGA??
ResponderExcelente post. Hace que usuarios comunes de windows (como yo), entendamos un poco mas de Linux y nos aventure a entenderlo
Responder@trabajos Esteban+(antes+don+juan): CHUPAME LAS BOLAS!!!
Excelente post. Hace que usuarios comunes de windows (como yo), entendamos un poco mas de Linux y nos aventure a entenderlo
Responder@trabajos+Esteban: CHUPAME LAS BOLAS!!!
Me parece excelente esto de la retrocompatibilidad en audio, sobre todo a lo que juegos se refiere, ya que muchos han sido programados para utilizar OSS. Y claro, este es un tema que dá para más, ojalá tengamos noticias pronto de lo que se viene con esto.
ResponderEn pocas palabras CUSE es una interfaz que permite escribir drivers compatibles con CUSE a su vez CUSE es estándar y está escrito dentro del kernel y reliza la comunicación entre el driver (libre o propietario) y el kernel. Si usa el modelo de FUSE creo que funcionará muy bien. FUSE me ha ahorrado muchos dolores de cabeza, y es excelente porque acorta mucho los tiempos de desarrollo y soluciona los problemas de compatibilidad.
ResponderOtro gran artículo... con contenido ;)
Respondergracias franco
chupenle mas el pene a catrin porfa
ResponderDeja tu Comentario