______ ___ ___ /\ _ \ /\_ \ /\_ \ \ \ \L\ \\//\ \ \//\ \ __ __ _ __ ___ \ \ __ \ \ \ \ \ \ \ /'__`\ /'_ `\/\`'__\/ __`\ \ \ \/\ \ \_\ \_ \_\ \_/\ __//\ \L\ \ \ \//\ \L\ \ \ \_\ \_\/\____\/\____\ \____\ \____ \ \_\\ \____/ \/_/\/_/\/____/\/____/\/____/\/___L\ \/_/ \/___/ /\____/ \_/__/ Información específica para Linux. Véase readme.txt para un punto de vista más general. Lea también en docs/build/unix.txt información general para Unix. ========================================= ============ Notas generales ============ ========================================= En Linux hay dos drivers de sistema diferentes -- uno para ejecutar bajo X, y otro cuando no hay X. Para información sobre la versión X, e instrucciones sobre cómo instalar Allegro y compilar sus programas en un sistema Unix vea docs/build/unix.txt. Este fichero sólo describe las rutinas Linux bajo consola. Normalmente la versión X es usada en preferencia a la versión consola, si un servidor X está disponible (esto significa que sus programas usarán X si los ejecuta desde X, y el modo consola en cualquier otro caso). Puede cambiar esto usando su fichero de configuración si lo prefiere, o especificar --without-x durante la configuración. ============================================ ============ Instalando Allegro ============ ============================================ Lea docs/build/unix.txt: este proceso es idéntico tanto para consola como para la versión X. ======================================== ============ Usando Allegro ============ ======================================== Algunas partes de Allegro bajo Linux en consola necesitan privilegios de superusuario. Otras no. Específicamente, los drivers VGA, modo-X y VBE/AF los necesitan. El driver fbcon no los necesita. Además, si tiene intención de ejecutar su programa desde algo que no es una consola (ej: una xterm (pero sin usar la versión X), un login remoto, una sesión de screen) entonces necesita poseer una consola (libre) numerada del 1 al 15 o tener privilegios de superusuario. Si desea que un programa funcione con privilegios incluso cuando el usuario que lo ejecute no los tenga, haga que el binario sea del superusuario y active el bit suid: # chown root.allegro exhello # chmod 4770 exhello Eso hace el ejecutable propiedad del superusuario y un grupo `allegro'. Se puede leer, modificar y ejecutar por el superusuario y personas que estén en ese grupo. Además, cuando se ejecuta tiene privilegios de superusuario. Por esta razón, no es ejecutable por el público general. Ponga sólo usuarios en los que confíe en el grupo `allegro'. Quizás prefiera usar `4750' en lugar de `4770' -- entonces las personas del grupo no pueden modificar el binario. Allegro abandonará los privilegios casi de inmediato tras la iniciación, usando `seteuid'. Esto significa que todavía puede obtener los permisos más tarde. Allegro necesita ser capaz de reobtener los privilegios si tiene intención de llamar `allegro_init' en el futuro. Si este no es el caso, puede abandonar los privilegios definitivamente usando `setuid(getuid());' -- entonces se pierden para siempre. Nota de seguridad: si no hace esto, cualquier desbordamiento de buffer es un problema severo de seguridad. En cualquier caso, debería tener mucho cuidado al permitir que personas al azar puedan ejecutar programas de terceros como suid root. Si como superusuario ejecuta `make suid', estos permisos serán aplicados a todos los programas generados -- el juego demo, los ejemplos, los tests, etc. ================================================= ============ Notas sobre los drivers ============ ================================================= This section contains Linux-specific notes on the drivers available. * Sistema: Durante la iniciación, Allegro intentará obtener un cierto control sobre la consola. Esto generalmente requiere privilegios de superusuario, pero si el programa no está siendo ejecutado desde una consola virtual (ej: está ejecutando desde screen o X), Allegro intentará obtener una consola virtual libre y ejecutarse ahí. Esto requiere que haya algunas consolas libres que puedan ser leídas y escritas; a no ser que el usuario haya reservado algunas, necesitará ser superusuario en este paso. El cambio de tarea es posible; todos los modos de Allegro están soportados. El modo por defecto es SWITCH_PAUSE. SWITCH_BACKGROUND funcionará unicamente si la aplicación toma precauciones especiales. * Graphics: Allegro en Linux soporta modos VGA estándar y modos-X realizando escrituras directamente en la tarjeta. Necesitará privilegios de superusuario para que esto funcione. También soporta fbcon, para el cual no hace falta tener privilegios, pero necesita un núcleo reciente, correctamente configurado. El sistema VBE/AF requiere privilegios de superusuario. También necesita un driver VBE/AF que funcione en Linux -- el proyecto FreeBE/AF tiene dos por el momento, pero el proyecto en sí no ha sido portado a Linux. No obstante puede copiar simplemente los binarios con el driver. Ponga el driver apropiado en `/usr/local/lib', `/usr/lib', `/lib' o `/', con el nombre `vbeaf.drv' -- o póngalo donde desee, especificando la ruta en el fichero de configuración como en la versión DOS. Por razones de seguridad, el driver binario VBE/AF debe ser del usuario root y sólo modificable por él. Realmente no quiere cargar y ejecutar código binario especificado por el usuario en un programa privilegiado. El driver SVGAlib debería ser bastante estable y rápido ahora, y puede usar la mayoría de los modos de vídeo que provee SVGAlib. Requiere permisos de superusuario si su versión de SVGAlib los necesita. * Sound: Los drivers ALSA por ahora sólo soportan la versión antigua (y estable) del API de ALSA (0.5.x). La serie de betas 0.9.x todavía NO está soportada. * Keyboard: El driver de teclado usa las tablas de mapeado del kernel para emparejar scancodes con códigos de carácter y funciones de tecla, por lo que su mapa de teclado debería estar bien sin tener que configurarlo en el programa de setup. * Joystick: Para compilar Allegro con soporte de joystick necesita tener un núcleo reciente (2.2.* o últimas versiones del 2.1.*), vamos, con soporte para joystick en el núcleo. Mire en /usr/src/linux/include/linux/joystick.h. Realmente no necesita configurar el núcleo para que use joystick, sólo necesita ese fichero de cabecera. Similarmente, para ejecutar programas de Allegro con soporte de joystick necesita un núcleo reciente, y aquí sí que debe estar bien configurado el núcleo. También necesita crear el fichero de dispositivo /dev/js0 si no existe. Lea /usr/src/linux/Documentation/joystick.txt para más detalles. * Mouse: Allegro en Linux soporta por ahora los ratones PS/2 y Microsoft directamente, y otros tipos de ratón vía GPM. Para usar GPM necesita activar su opción `repeater', la cual copia toda actividad del ratón en el fichero FIFO /dev/gpmdata. Modifique sus scripts de iniciación para añadir la opción '-R'. El driver GPM también puede ser usado con ratones nativos Mouse Systems cambiando la variable `mouse_device' en el fihcero de configuración. Cuando use el protocolo PS/2 Intellimouse, es necesario poner el ratón explícitamente en modo con ruedecilla, lo cual requiere que Allegro tenga permisos de escritura sobre el dispositivo. Dado que esto únicamente hay que hacerlo una vez (el ratón recordará el estado si no lo desconecta), un modo alternativo de cambiar los permisos de fichero es iniciar su ratón durante el arranque con GPM. Para hacer esto, modifique sus scripts de iniciación para que usen las opciones `-t imps2 -m /dev/psaux' de GPM. Si no quiere tener GPM activo, mátelo con `gpm -k'.