|Portada|Blog|Space|
[Índice] > 2.6-fideo Plug n Pray
Por suerte actualicé el kernel de fideo a un 2.6, todo hermoso, una
transición muy simple excepto por una sola cosa, tenía que hacer andar
las tarjetas de red y de sonido.
Resulta que en el kernel 2.2 y anteriores se usaba el programa isapnp,
para usarlo era bien sencilla la cosa, se hacía simplemente pnpdump >
/etc/isapnp.conf, y después uno se ponía a descomentar algunas líneas en
ese archivo generado, que estaba muy documentado y prolijo. El mismo
isapnp proveía un script para la distribución que se encargada de leer
ese archivo y configurar las tarjetas.
Después en modules.conf uno le informaba a los módulos del kernel qué
parámetros, io, irq, etc... debían ser usados.
Tiempo después cuando salió el kernel 2.4, la antigua interfaz que
dependía de programas por fuera del kernel recibió un cambio no menor.
Cambiaron pnpdump e isapnp desde simples programas, a un módulo del
kernel que no recuerdo si se llamaba isapnp.o o isa-pnp.o. El hecho era
que para configurar las tarjetas había que ser medio adivino y mandarse
cosas del estilo de:
cat > /proc/isapnp <<EOF
card 0 ALS0110
dev 0 @@@1001
port 0 0x220
irq 0 7
dma 0 1
dma 1 0
activate
EOF
en scripts de configuración propios. La sintaxis de lo que había que
mandar a esos archivos estaba muy mal documentada, y había que andar
adivinando la mitad de las cosas, pero mal o bien, había algo de
documentación sobre la sintaxis que se usaba.
Acá paso un link a un repo que por alguna extraña razón tiene el archivo
que menciono, para que vean que esto era toda la documentación que
había:
http://l4hq.org/viewcvs/l4linux-2.4/Documentation/isapnp.txt?revision=1.1.1.2
Si con esto no terminaban de confundir a la gente, les cuento que
también decidieron cambiar el lugar en donde se le informaban a los
módulos qué parámetros debían de usar, desde /etc/modules.conf como era
antiguamente, a cualquier archivo en /etc/modutils, que al ejecutar
update-modules (o al reiniciar) se iba a sobreescribir el modules.conf
con la concatenación de los archivos en /etc/modutils.
Lo bueno del cambio hacia la nueva interfaz del kernel 2.4 era que los
módulos ya soportaban cargar automáticamente la tarjeta isapnp cuando
habían recursos disponibles, sin embargo se cargaban con cualquier valor
de configuración a menos que fueran especificados manualmente y
deshabilitado explícitamente el isapnp en el módulo.
Si todavía no se confundieron, ahora voy a tratar de confundirlos
realmente, valiéndome del hecho que ¡desde el kernel 2.4 al kernel 2.6,
también hubo cambios en isapnp!
A modo de resumen, cambiaron la sintaxis, la ubicación no del archivo
del isapnp, sino de los archivos resources y options que ahora se
encuentran en sysfs en cada uno de los dispositivos, y además los
parámetros ya no van más ni en /etc/modules.conf ni en /etc/modutils,
sino en /etc/modprobe.d
Por cierto, se ve que estos buenos muchachos se olvidaron de documentar
la sintaxis de lo que tenía que mandarse a los archivos resources. En
realidad "hicieron como que documentaron" y no pusieron ni la cuarta
parte de los parámetros. Acá se puede ver lo que hay de documentación:
http://www.mjmwired.net/kernel/Documentation/pnp.txt
Y como no tengo poderes adivinatorios, no me quedó otra que recurrir al
código fuente del kernel hasta encontrar la función encargada de parsear
lo tirado a estos archivos resources. Resulta que esta bendita función
era pnp_set_current_resources() que se encuentra en el archivo
/usr/src/linux/drivers/pnp/interface.c
Acá pueden ver al archivo:
http://tomoyo.sourceforge.jp/cgi-bin/lxr/source/drivers/pnp/interface.c
y a la función en cuestión:
http://tomoyo.sourceforge.jp/cgi-bin/lxr/source/drivers/pnp/interface.c#L322
Conclusión:
* Los desarrolladores del kernel tienen serios problemas de
indecisión, otro ejemplo similar al que di recién es la historia de
devfs, hotplug, udev y sus amigos.
* A algunos desarrolladores del kernel les importan 3 pepinos lo que
sucede por fuera del kernelspace, y ni siquiera se dignan en
documentar ni en crear una aplicación que simplifique la resolución
de conflictos con dispositivos ISA.
* Si usted tiene un conflicto con dispositivos ISA y no entendió nada
de lo que dije a lo largo de esta entrada del blog es porque usted
debería cambiar sus dispositivos ISA e ISA PnP a PCI y tal vez su
computadora si no dispone de este bus.
* Nuevamente se confirma que el significado de PnP es Plug and Pray.
---------
Los documentos en este sitio se encuentran licenciados bajo la GFDL.
Ver comentarios: [Hay i comentarios]
Para agregar un comentario: agregue a la URL: ?do=show_comment_form (explicación)