Mortuux

Diario de un estudiante geek. Informática, tecnología, programación, redes, sistemas operativos, bases de datos…

Archivos por Etiqueta: xorg

¿Problemas al compilar driver fglrx 10.9? Solución aquí.

Los desarrolladores del kernel han solucionado una vulnerabilidad crítica y una librería que utilizaba fglrx ha sido eliminada.

El error puede ser algo así:

/usr/src/kernel-modules/fglrx /
make: Entering directory `/usr/src/packages/BUILD/kernel-2.6.35.50.3desktop'
  LD      /usr/src/kernel-modules/fglrx/built-in.o
  CC [M]  /usr/src/kernel-modules/fglrx/firegl_public.o
/usr/src/kernel-modules/fglrx/firegl_public.c: In function ‘KCL_GetInitKerPte’:
/usr/src/kernel-modules/fglrx/firegl_public.c:2378:5: warning: return makes integer from pointer without a cast
/usr/src/kernel-modules/fglrx/firegl_public.c:2379:5: warning: return makes integer from pointer without a cast
/usr/src/kernel-modules/fglrx/firegl_public.c:2380:5: warning: return makes integer from pointer without a cast
/usr/src/kernel-modules/fglrx/firegl_public.c: In function ‘KCL_GetPageTableByVirtAddr’:
/usr/src/kernel-modules/fglrx/firegl_public.c:2425:5: warning: return makes integer from pointer without a cast
/usr/src/kernel-modules/fglrx/firegl_public.c:2428:5: warning: return makes integer from pointer without a cast
/usr/src/kernel-modules/fglrx/firegl_public.c:2429:5: warning: return makes integer from pointer without a cast
/usr/src/kernel-modules/fglrx/firegl_public.c: In function ‘KCL_TestAndClearPageDirtyFlag’:
/usr/src/kernel-modules/fglrx/firegl_public.c:2598:5: warning: return makes integer from pointer without a cast
/usr/src/kernel-modules/fglrx/firegl_public.c: In function ‘KCL_GetDmaPhysAddr’:
/usr/src/kernel-modules/fglrx/firegl_public.c:2636:5: warning: return makes integer from pointer without a cast
/usr/src/kernel-modules/fglrx/firegl_public.c:2637:5: warning: return makes integer from pointer without a cast
/usr/src/kernel-modules/fglrx/firegl_public.c:2638:5: warning: return makes integer from pointer without a cast
/usr/src/kernel-modules/fglrx/firegl_public.c:2640:5: warning: return makes integer from pointer without a cast
  CC [M]  /usr/src/kernel-modules/fglrx/kcl_acpi.o
  CC [M]  /usr/src/kernel-modules/fglrx/kcl_agp.o
  CC [M]  /usr/src/kernel-modules/fglrx/kcl_debug.o
  CC [M]  /usr/src/kernel-modules/fglrx/kcl_ioctl.o
/usr/src/kernel-modules/fglrx/kcl_ioctl.c: In function ‘KCL_IOCTL_AllocUserSpace32’:
/usr/src/kernel-modules/fglrx/kcl_ioctl.c:196:5: error: implicit declaration of function ‘compat_alloc_user_space’
/usr/src/kernel-modules/fglrx/kcl_ioctl.c:196:5: warning: return makes pointer from integer without a cast
make[1]: *** [/usr/src/kernel-modules/fglrx/kcl_ioctl.o] Error 1
make: *** [_module_/usr/src/kernel-modules/fglrx] Error 2
make: Leaving directory `/usr/src/packages/BUILD/kernel-2.6.35.50.3desktop'

Y la salida del comando ‘glxinfo’, así:

root@normandy:~# glxinfo
name of display: :0.0
X Error of failed request:  BadRequest (invalid request code or no such operation)
  Major opcode of failed request:  136 (GLX)
  Minor opcode of failed request:  19 (X_GLXQueryServerString)
  Serial number of failed request:  15
  Current serial number in output stream:  15

Solucionar esto, a pesar de que quizás parezca lo contrario, es bastante sencillo:

Nos movemos a la siguiente carpeta:

Debian: cd /lib/modules/fglrx/build_mod

Otra posible localización: cd  /usr/src/kernel-modules/fglrx/

Ahora tenemos que editar el archivo kcl_ioctl.c

# gedit kcl_ioctl.c

Buscamos la línea 197, el fragmento debe ser algo así:

void* ATI_API_CALL KCL_IOCTL_AllocUserSpace32(long size)
{
    return compat_alloc_user_space(size);
}

#endif // __x86_64__

Pues lo cambiamos por lo siguiente:

void* ATI_API_CALL KCL_IOCTL_AllocUserSpace32(long size)
{
    return arch_compat_alloc_user_space(size);
}

#endif // __x86_64__

Guardamos el archivo, y ahora tenemos que compilarlo otra vez, para ello:

# cd ..
# ./make_install.sh

Y eso es todo, yo así conseguí arreglarlo.

Anuncios

Instalación y configuración de Arch Linux con KDE.

Arch Linux es una distribución simple (que no fácil de instalar ni configurar) y que da total libertad al usuario para configurarlo a sus necesidades. También predomina la precisión de código ante la comodidad. Una vez tengamos el archivo iso con la arquitectura que queramos, en mi caso la i686, procederemos a instalarlo. Como bien nos indica, debemos loguearnos como root para iniciar la instalación Para configurar el teclado y elegir tipo de fuente, escribimos:

km

Para iniciar la instalación:

/arch/setup

Este es el menú principal de la instalación: El primer paso es bien sencillo, debemos elegir en Select Sources -> CD. Para utilizar el CD como repositorio en la instalación. En Set Clock elegimos nuestra zona horaria adecuada El tercer paso es preparar el disco duro. Yo voy a hacer una instalación limpia, sin ningún otro sistema operativo, así que lo más fácil es elegir Auto-Prepare. Pero mucho ojo, no seleccionar ésta opción si se tienen otros sistemas operativos, ya que formatea todo La opción Auto-Prepare nos da a elegir el tamaño para una partición de /boot, swap, / y /home En el siguiente paso, debemos elegir los paquetes a instalar. Si no queremos complicarnos demasiado, o si estamos seguros de que no vamos a necesitar más paquetes, bastará con los que vienen ya seleccionados. Una vez seleccionados, procedemos a instalarlos. Una vez esté todo instalado Ahora nos toca la parte más “crítica”: La configuración del sistema Entramos en la opción de configuración del sistema y elegimos nuestro editor favorito, en mi caso voy a usar vi Menú de configuración: Editamos primeramente /etc/rc.conf

  • Debemos cambiar LOCALE=”en_US.utf8″ por lo siguiente: LOCALE=”es_ES.utf8″.
  • Cambiar HOSTNAME=”myhost” por el nombre que queramos poner a nuestra máquina
  • También tendremos que configurar la red en caso de que sea necesario, en mi caso solo cambiaré el gateway, usaré dhcp con la interfaz eth0

/etc/fstab Aquí sólo debemos miar que esté todo bien configurado por el instalador. /etc/resolv.conf Aquí escribimos las ips de los dns Los archivos de configuración /etc/pacman.conf y /etc/pacman.d/mirrorlist los configuraremos más adelante. Ahora debemos establecer nuestra contraseña de root. Una vez configurado todo, sólo nos queda instalar el Bootloader. Lo instalamos en la partición adecuada. ¡Ya tenemos Arch Linux instalado! Ahora queda reiniciar. Como vemos, no tenemos ningún entorno gráfico. Nos logueamos como root, que es la única cuenta que tenemos activa. Ahora vamos a añadir algunos repositorios bastante conocidos. Editamos /etc/pacman.conf Repositorio Archlinuxfr, agregamos el de nuestra arquitectura correspondiente:

[archlinuxfr]
Server = http://repo.archlinux.fr/i686

[archlinuxfr]
Server = http://repo.archlinux.fr/x86_64

KDE Mod, agregar el de nuestra arquitectura:

[kdemod-core]
Server = http://chakra-project.org/repo/core/i686/
[kdemod-core]
Server = http://chakra-project.org/repo/core/x86_64/
[kdemod-extragear]
Server = http://chakra-project.org/repo/extragear/i686/
[kdemod-extragear]
Server = http://chakra-project.org/repo/extragear/x86_64/

Ahora debemos establecer los mirrors. En el archivo /etc/pacman.d/mirrors hay un montón de mirrors y nos llevaría mucho tiempo saber cuáles son los más recomendados para nuestro Arch, por suerte hay un script llamado rankmirrors que nos elige los mejores mirrors. Para utilizar rankmirrors debemos instalar python, por lo que si no  lo tenemos instalado, tenemos que activar al menos un mirror para poder poder descargarlo. Muy sencillo, del archivo anteriormente nombrado, descomentamos (quitar #) un mirror de Francia por ejemplo, después:

pacman -Syu pacman -S python

Volvemos a comentar el mirror anterior. Nos movemos a la carpeta /etc/pacman.d/

cd /etc/pacman.d/ cp mirrorlist mirrorlist.bak

Y hacemos una copia del archivo. Ahora ejecutamos:

rankmirrors -n 5 mirrorlist.bak > mirrorlist

Donde -n 5 indica el número de mirrors. Ahora procedemos a instalar yaourt

pacman -S yaourt

Bien, como trabajar como root es un tanto… peligroso, vamos a crear un nuevo usuario:

adduser

Después hay que añadirlo a ciertos grupos :

gpasswd -a usuario audio gpasswd -a usuario wheel gpasswd -a usuario storage gpasswd -a usuario video gpasswd -a usuario optical gpasswd -a usuario floppy gpasswd -a usuario lp

Ahora instalamos y configuramos SUDO

pacman -S sudo

Para configurar, ejecutamos:

visudo

Y añadimos:

usuario ALL = (ALL) ALL

Y guardamos. Ahora procedemos a instalar ALSA, para el sonido:

pacman -S alsa-utils alsa-oss

Para configurarlo ejecutamos:

alsaconf

Y seguimos los pasos. Es turno de instalar el servidor gráfico XORG.

pacman -S xorg

(Nota: Si da conflicto con el paquete e2fsprogs, instalar éste primero mediante pacman -S e2fsprogs) Ahora instalamos kde:

pacman -S kde

Instalar idioma español:

pacman -S kde-l10n-es

Ahora editamos el archivo /etc/inittab/ para cambiar los niveles de ejecución. Por defecto el sistema entra en el nivel de ejecución (runlevel) 3, que es el de monousuario. Debemos comentar esta línea, y descomentar la línea de nivel 5 que es el nivel que utiliza X11. Con el cambio realizado quedaría así:

#id:3:initdefault:
# Boot to X11
id:5:initdefault:

Más abajo debemos especificar que utilizaremos una pantalla de login KDM, por lo tanto comentamos XDM y descomentamos la de KDM. Con el cambio realizado quedaría así:

#x:5:respawn:/usr/bin/xdm -nodaemon
#x:5:respawn:/usr/sbin/gdm -nodaemon
x:5:respawn:/usr/bin/kdm -nodaemon
#x:5:respawn:/usr/bin/slim >& /dev/null

Importante: En el archivo /etc/rc.conf debemos añadir el daemon hal.

Traducir completamente al español:

Aparte de lo que modificamos en rc.conf, debemos hacer lo siguiente:

en /etc/locale.gen debemos descomentar las dos líneas es_ES.

Después regenaramos los locales:

locale-gen

Y lo comprobamos:

locale -a

Para traducir KDE hace falta instalar los siguientes paquetes:

language-pack-es
language-pack-es-base
language-pack-kde-es
language-pack-kde-es-base
language-support-es
language-support-translations-es
language-support-writing-es

kde-l10n-es

Y eso es todo! Ya tenemos nuestro Arch Linux instalado!