Después de instalarme los programas de audio Xmixer y Xplaycd, observo que mi S.O. Linux Debian 1.3.1, que conseguí con la revista Linux Actual num 1, no tiene soporte de sonido :-((.
Leo el Howto-sonido del proyecto Lucas en el que señala como una de las primeras comprobaciones a realizar:
cat /dev/sndstat
al efectuar este comando me devuelve "No such device", que según el Howto significa que mi kernel no está compilado con soporte para sonido y me aconseja que lo recompile.
Posteo a las news de es.comp.os.linux para preguntar si alguien con Debian ha tenido el mismo problema y me pueden aconsejar qué hacer.
Me responden que, efectivamente: recompilar el núcleo con soporte para sonido. Hay que instalar las fuentes del kernel 2.0.30 con dselect y luego recompilar, aunque me advierten que mi tarjeta Pnp puede dar problemas.
Aprovechando que tengo que recompilar el núcleo, me voy a instalar ya de paso la versión 2.0.34 que viene con la revista PC Actual de Julio-Agosto-98.
El primer paso es recopilar información para guiarme en este proyecto :
Una vez estudiada toda esta información, se pueden extraer las siguientes conclusiones :
La recompilación del kernel no ofrece ningún problema, ya que lo único
que se genera es un fichero binario ejecutable. En mi caso, como arranco
desde diskette si no me funcionara arrancaría desde el antiguo y ya
está. Es cuestión de ir probando opciones en la configuración.
El controlador que viene con el kernel soporta, según la documentación,
mi tarjeta Sound Blaster de 16 bits.
El problema estaría en que las tarjetas Pnp no están soportadas, pero al
parecer con una herramienta llamada "isapnp" o algo parecido, se podría
resolver.
Por tanto, la estrategia a seguir será la siguiente:
Lo primero es crear un fichero con las características que queremos que tenga nuestro nuevo Kernel, lo que vamos a hacer para generarlo es ejecutar el siguiente comando:
make xconfig
Ojo, hay que ejecutarlo estando posicionado en el directorio /usr/src/linux.
Solo se cargan como módulos (M) el soporte de puertos serie y el sonido. Originalmente se cargaba como módulo solo el driver del puerto serie, según se ve en el fichero /etc/modules (serial) que, al parecer es el que dice qué módulos se deben cargar. Siguiendo el consejo del post de Tendero, también incluyo el sonido (sound). Tampoco he tocado el fichero /etc/conf.modules.
De esto me he enterado después : si tienes una tarjeta Pnp el sonido hay que cargarlo como módulo obligatoriamente porque si no, se carga antes que el isapnp y no funciona.
CONFIG_EXPERIMENTAL Para versiones alpha NO
Enable loadable module suport (CONFIG_MODULES) Cargar módulos on-line YES Set versión information on all symbols for modules (CONFIG_MODVERSIONS) Verificar versiones de módulos al cargarlos YES Kernel daemon suport (CONFIG_KERNELD) Carga automática de módulos YES
Kernel math emulation (CONFIG_MATH_EMULATION) Simula coprocesador NO Networking suport (CONFIG_NET) Soporte de red YES Limit memory to low 16MB (CONFIG_MAX_16) Limite 16 MB de memoria NO PCI bios suport (CONFIG_PCI) Tarjetas con bus PCI YES System V IPC (CONFIG_SYSVIPC) Librerías IPC YES Kernel suport for a.out (CONFIG_BINFMT_AOUT) Soporte binarios a.out YES Kernel suport for ELF (CONFIG_BINFMT_ELF) Soporte binarios ELF YES Compile kernel as ELF (CONFIG_KERNEL_ELF) Sistemas con GCC ELF YES Procesor Type (CONFIG_M386) Tipo de procesador PENTIUM
Normal floppy disk support (CONFIG_BLK_DEV_FD) Unidad diskettera YES Enhaced IDE/MFM/RLL disck/cdrom/tape/floppy support (CONFIG_BLK_DEV_IDE) Soporte IDE YES Use old disk-only driver on primary interface (CONFIG_BLK_DEV_HD_IDE) NO Include IDE/ATAPI CDROM support (CONFIG_BLK_DEV_IDECD) Soporte CDROM IDE/ATAPI YES Include IDE/ATAPI TAPE support (CONFIG_BLK_DEV_IDETAPE) Soporte Cinta IDE/ATAPI NO Include IDE/ATAPI FLOPPY support (CONFIG_BLK_DEV_IDEFLOPPY) Soporte floppys IDE/ATAPI como Zip o Ls-120 NO SCSI emulation support (CONFIG_BLK_DEV_IDESCSI) Emulación SCSI para dispositivos IDE/ATAPI NO Support removable IDE interfaces (PCMCIA) (CONFIG_BLK_DEV_IDE_PCMCIA) NO CMD640 bugfix support (CONFIG_BLK_DEV_CMD640) Resuelve un bug del chipset CMD640, utilizado en muchas placas madre YES CMD640 enhaced support (CONFIG_BLK_DEV_CMD640_ENHACED) NO RZ1000 bugfix support (CONFIG_BLK_DEV_RZ1000) Otro bug YES Interl 82371PIIX (Triton I/II) DMA support (CONFIG_BLK_DEV_TRITON) Soporte DMA para IDE interface chipset Triton YES Other IDE chipsets supports (CONFIG_IDE_CHIPSETS) Soporte para mas IDE's NO Loopback device support (CONFIG_BLK_DEV_LOOP) NO Múltiple devices drive support (CONFIG_BLK_DEV_MD) Varias particiones del HD en un bloque lógico NO Ramdisk support (CONFIG_BLK_RAM_DEV_RAM) Soporte para disco RAM NO XT hard-disk support (CONFIG_BLK_DEV_XD) NO
Network firewalls (CONFIG_FIREWALL) Configurar la maquina como firewall NO Network alliasing (CONFIG_NET_ALIAS) Múltiples direcciones IP NO TCP/IP networking (CONFIG_INET) Soporte Tcp/Ip YES IP forwarding gatewaying (CONFIG_IP_FORWARD) Configurar la maquina como router NO IP multicasting (CONFIG_IP_MULTICAST) NO IP syn cookies (CONFIG_SYN_COOKIES) Previene ataques Syn Floading NO IP accounting (CONFIG_IP_ACCT) Estadísticas IP NO IP optimize as router no host (CONFIG_IP_ROUTER) NO IP tunnelling (CONFIG_NET_IPIP) NO IP PC/TCP compatibility mode (CONFIG_INET_PCTCP) NO IP reverse ARP (CONFIG_INET_RARP) NO IP Dissable path MTU discovery (CONFIG_NO_PATH_MTU_DISCOVERY) NO IP drop source routed frames (CONFIG_IP_NOSR) Camino completo en paquetes IP YES IP Allow large windows (CONFIG_SKB_LARGE) YES The IPX protocol (CONFIG_IPX) Protocolo IPX de Novell NO Appletalk DDP (CONFIG_ATALK) Para Apple NO Amateur Radio AX25 L.2 (CONFIG_AX25) NO Kernel/user network link driver (CONFIG_NETLINK) NO
SCSI support (CONFIG_SCSI) Soporte SCSI NO
Network device support (CONFIG_NETDEVICES) Soporte redes e Internet YES Dummy net drive support (CONFIG_DUMMY) YES EQL support (CONFIG_EQUALIZER) NO PLIP support (CONFIG_PLIP) Soporte Paralel Line Internet Protocol NO PPP support (CONFIG_PPP) Soporte Point to Point YES SLIP supporte (CONFIG_SLIP) Soporte serial line NO Radio network interfaces (CONFIG_NET_RADIO) NO Ethernet (10 or 100 Mbit) (CONFIG_NET_ETHERNET) Soporte red Ethernet NO Token Ring driver support (CONFIG_TR) NO FDDI driver support (CONFIG_FDDI) NO ARC NET support (CONFIG_ARCNET) NO
ISDN support (CONFIG_ISDN) NO
Support non SCSI, IDE/ATAPI CD-ROM (CONFIG_CD_NO_IDESCSI) NO
Quota support (CONFIG_QUOTA) Activar protecciones NO Minix fs support (CONFIG_MINIX_FS) Minix YES Extended fs support (CONFIG_EXT_FS) Ext NO Second Extended fs (CONFIG_EXT2_FS) Ext2 YES Xiafs filesystem support (CONFIG_XIA_FS) Xiafs NO Native Language support (CONFIG_NLS) YES Iso 9660 Cd-Rom filesystem support (CONFIG_ISO9660_FS) Iso9660 YES DOS FAT fs support (CONFIG_FAT_FS) Fat YES MSDOS fs support (CONFIG_MSDOS_FS) Msdos YES Umsdos (CONFIG_UMSDOS_FS) Umsdos YES VFAT (W95) fs support (CONFIG_VFAT_FS) Vfat YES Codepage NNN (CONFIG_NLS_CODEPAGE_NNN) NO Codepage 850 (CONFIG_NLS_CODEPAGE_850) Spain ... YES NLS-ISO-8859-1 (CONFIG_NLS_ISO8859_1) Spain ... YES NLS-ISO-8859-N (CONFIG_NLS_ISO8859-N) NO /proc fs support (CONFIG_PROC_FS) Proc YES NFS fs support (CONFIG_NFS_FS) Nfs YES Root filesystem on NFS (CONFIG_ROOT_NFS) NO SMB fs support (CONFIG_SMB_FS) NO OS2 HPFS fs support (CONFIG_HPFS_FS) NO System V fs support (CONFIG_SYSV_FS) NO UFS fs support (CONFIG_UFS_FS) NO
Standard/generic serial support (CONFIG_SERIAL) Puertos serie M Digiboard PC/Xx support (CONFIG_DIGI) NO Cyclades ass mux suport (CONFIG_CYCLADES) NO Stallion multiport support (CONFIG_STALDRV) NO Sdl Ris Com8 card support (CONFIG_RISCOM8) NO Paralell printer support (CONFIG_PRINTER) YES Specialix IO8 card support (CONFIG_SPECIALIX) NO Mousse support (not serial mice) (CONFIG_MOUSE) Ratones a puerto COM (Ps2,etc) NO Support for user misc device modules (CONFIG_UMISC) NO QIC 02 tape support (CONFIG_QIC02_TAPE) NO Ftape support (CONFIG_FTAPE) NO Advanced power management BIOS support (CONFIG_APM) NO Watchdog timer support (CONFIG_WATCHDOG) NO Enhaced Real Time support (CONFIG_RTC) YES
Solo se listan las opciones elegidas Sound card support (CONFIG_SOUND) M Sound Blaster support (CONFIG_SB) YES /dev/dsp and /dev/audio support (CONFIG_AUDIO) YES MIDI interface support (CONFIG_MIDI) YES FM synteticer support (CONFIG_YM38) YES I/O Base 220 IRQ Por defecto salía 7 5 DMA 8 bits 1 DMA 16 bits 5 MPU I/O Base Por defecto salía 0 300 Audio DMA Buffer size 65536
Kernel profiling support CONFIG_PROFILE Para pruebas
SECUENCIA DE COMANDOS (siempre en /usr/src/linux) :
Establece las dependencias entre los módulos seleccionados
Limpia los restos de anteriores compilaciones, importante ya que make solo compila los archivos no construidos
Generar la imagen del kernel en /usr/src/linux/arch/i386/boot/zimage y deja además una copia en diskette (yo arranco con diskette).
En un primer intento me da el error: AS86 not found (no lo había instalado). Instalo el paquete bin86 con dselect. Vuelvo a ejecutar el comando y funciona sin problemas.
Compila los módulos seleccionados como cargables en ejecución y los deja en el árbol de directorios de las fuentes.
Copia los módulos creados y sus dependencias a /lib/modules/2.0.34 que es donde los busca la herramienta que efectúa la carga.
Es la hora de comprobar si todo ha ido correctamente, para ello, inserto el diskette con el nuevo kernel y rearranco el sistema.
En un principio todo parece haber ido bien, sin embargo, sigo sin sonido ...
Para verificar si tengo sonido, he insertado un cd de música en el cd-rom y después he ejecutado xplaycd. Al principio me ha dado que tengo que ser root para poder montar el cd-rom, después me he puesto como root y he vuelto a hacer la misma operación, todo ha funcionado bien excepto que ... no se oía nada.
Hago /sbin/lsmod para saber los módulos cargados como residentes en el kernel y me sale solo "serial".
Hago /sbin/depmod -a , y después /sbin/modprobe sound, para cargar manualmente el módulo, y ahora, al hacer /sbin/lsmod sí me sale "sound".
Ahora sigo las instrucciones del Howto-sonido:
Ejecuto el comando ls -l /dev/sndstat y me sale correcto
El comando cat /dev/sndstat sale muy parecido excepto que
audio devices, synth devices, midi devices y mixers, salen vacíos.
Visto que no termina de ir bien la cosa, yo creo que el problema puede estar en que actualmente Linux no soporta muy bien las tarjetas Pnp, pero al parecer hay un paquete de programas que pueden solucionar el tema (isapnptools).
Estudiemos el tema del isapnp:
tengo instalados los siguientes ficheros : /sbin/isapnp /etc/isapnp.conf /etc/init.d/isapnp /usr/doc/isapnptools/INSTALL , Readme_DEBIAN Hay que generar el fichero /etc/isapnp.conf tal y como se explica en /usr/doc/isapnptools/INSTALL, es decir, utilizando el comando pnpdump > etc/isapnp.conf este comando me ha generado un fichero isapnp.conf en el que se detectan dos tarjetas Pnp (?): SLI4161 - SYM 53C416 - Device support I/O range check register CTL0070 - Creative ViBRA16C PnP - Logical device CTL0001 - Audio --------------------------------- Logical device CTL0070 - Game Ahora me leo las instrucciones (man isapnp.conf) para depurar el fichero. Dejo solo lo referente a Audio y Game : (READPORT 0x0203) (ISOLATE) (IDENTIFY *) (CONFIGURE CTL0070/-1 (LD 0 # ANSI string -- >Audio< -- (INT 0 (IRQ 5 (MODE +E))) (DMA 0 (CHANNEL 1)) (DMA 1 (CHANNEL 5)) (IO 0 (BASE 0x0220)) (IO 1 (BASE 0x0330)) (IO 2 (BASE 0x0388)) (ACT Y) )) (CONFIGURE CTL0070/-1 (LD 1 # ANSI string -- <Game>-- )) (WAITFORKEY)
Siguiendo las instrucciones ejecuto como root isapnp /etc/isapnp.config.
No me da error alguno. Ahora cat /dev/sndstat me sale correcto.
Ahora hay que meter isapnp en el arranque (/etc/init.d/boot),
tal como se explica
en /usr/doc/isapnptools/Readme.Debian. (!!!! ya lo tenia !!!!).
Por último ... rearranco linux ... meto el cd de Los Ronaldos ... ejecuto xplaycd ... y ...
!!!!!!!! FUNCIONA !!!!!!!!!!!!!
Parece que por fin he conseguido que funcione todo, no ha sido tan difícil como pensaba, pero teniendo en cuenta que soy bastante novato y además solo un aficionado, no está mal. Por cierto, los midi todavía no me funcionan.
*****************************************************************************
Post de Tendero
Subject: Como he configurado mi Awe64 ... y funciona !!!
From: TENDERO@argen.net
Date: 1998/07/07
Newsgroups: es.comp.os.linux
hay va la forma en que he configurado mi Awe64 en Debian 1.3.1
0) instalar el driver (paquete awedrv-0.3.3c, sección sound)
1) configurar el núcleo. Como el driver hay que cargarlo en forma de modulo,es necesario configurar el kernel con soporte para estos. En la opcion de sonido tengo:
[M] Sound card support [*] Sound blaster (SB, SBpro, SB16, clones) support [*] MPU-401 support (NOT for SB) [*] /dev/dsp and /dev/audio support [*] MIDI interface support [*] FM synthesizer (YM3812/OPL-3) support (220) I/O base for SB Check from manual of the card (5) Sound Blaster IRQ Check from manual of the card (1) Sound Blaster DMA 0, 1 or 3 (5) Sound Blaster 16 bit DMA (_REQUIRED_for SB16, Jazz16, SMW) (0) MPU401 I/O base of SB16, Jazz16 and ES1688 Check from manual of (-1) SB MPU401 IRQ (Jazz16, SM Wave and ES1688) Use -1 with SB16 (330) I/O base for MPU401 Check from manual of the card (9) MPU401 IRQ Check from manual of the card (65536) Audio DMA buffer size 4096, 16384, 32768 or 65536 [*] Additional low level drivers [*] AWE32 synthComo el sonido esta cargado como modulo, compilo el kernel una sola vez, y cuando tengo que modificar algo del audio, solo hago make_modules y make modules_install, sin necesidad de recompilar ni instalar el núcleo.
El archivo /etc/conf.modules no lo he tocado y simplemente he insertado
sound
en el archivo /etc/modules.
2) Además, como mi tarjeta de PnP, he tenido que utilizar las isapnp, creando el archivo de configuración
Mi tarjeta de sonido
Recompilacion del kernel
make oldconfig intentará preparar las fuentes a partir de la última configuración realizada.
Para que al iniciar el ordenador el boot loader (LILO) encuentre el kernel es necesario reinstalarlo suministrando la dirección física en el disco dónde se halla la imagen, esto se consigue ejecutando como root /sbin/lilo que reinstala LILO con la información de un archivo de configuración (etc/lilo.conf). Todos estos pasos se realizan automáticamente si la imagen del kernel a sustituir se encuentra en /vmlinuz y al compilar se invoca con make zlilo, pero esto no es adecuado porque no es seguro que el nuevo kernel sea capaz de cargar y ejecutar correctamente. Si no guardamos un disquete de arranque con un kernel correcto seremos incapaces de arrancar Linux de nuevo. Un procedimiento mas seguro es copiar la nueva imagen en el directorio donde se encuentran las imágenes de los kernel para el arranque pero con un nombre distinto de las demás. Este lugar es en Debian 1.3.1 /boot y el nombre habitual /vmlinuz. Para que LILO conozca que existe un nuevo kernel es necesario tocar el archivo /etc/lilo.conf en el que se describen los métodos de arranque disponibles. Se añade una entrada para el nuevo kernel que por ejemplo podría ser: image=/vmlinuz label=linux.2.0.34 read-only Después es necesario invocar lilo para actualizar el boot loader (LILO) con la nueva lista de métodos. Ojo, la imagen que hay que copiarse es la comprimida que está en /usr/src/linux/arch/i386/boot/zImage, no equivocarse.
make modules : compila los módulos que se han seleccionado como cargables en ejecución y los deja dentro del árbol de directorios de las fuentes. make modules_install : copia los módulos creados y sus dependencias a /lib/modules/2.0.34 que es donde los buscarán las herramientas que realizan la carga y descarga en el kernel.
/sbin/depmod -a : carga la tabla de dependencias del módulo /sbin/modprobe (módulo) : carga el módulo indicado y todos aquellos de los que depende El nombre del módulo será el que le corresponda al código objeto que generó la compilación (con extensión .o) aunque hay creados alias que se pueden consultar con : /sbin/modprobe -c
/sbin/depmod -a /sbin/kerneld Para saber los módulos cargados como residentes : /sbin/lsmod Para saber los módulos disponibles para la carga : /sbin/modprobe -l