Error al compilar controladores para Ralink RT2870


14

Estoy tratando de instalar controladores para una tarjeta inalámbrica rosewill RNX-N600UBE (chipset Ralink RT2870) en Kali Linux. Descargué los controladores de su sitio web y los descomprimí / descomprimí, pero ahora cuando trato de ejecutar el comando 'make' obtengo este error.

/home/fox/System/2011_0427_RT3572_Linux_STA_v2.5.0.0.DPO/os/linux/../../os/linux/rt_linux.c:1156:20: error: incompatible types when assigning to type ‘int’ from type ‘kuid_t’
/home/fox/System/2011_0427_RT3572_Linux_STA_v2.5.0.0.DPO/os/linux/../../os/linux/rt_linux.c:1157:20: error: incompatible types when assigning to type ‘int’ from type ‘kgid_t’
make[4]: *** [/home/fox/System/2011_0427_RT3572_Linux_STA_v2.5.0.0.DPO/os/linux/../../os/linux/rt_linux.o] Error 1
make[3]: *** [_module_/home/fox/System/2011_0427_RT3572_Linux_STA_v2.5.0.0.DPO/os/linux] Error 2
make[2]: *** [sub-make] Error 2
make[1]: *** [all] Error 2

Creo que podrías necesitar una versión diferente de algo, ¿tal vez el compilador?
PlasmaPower

Como nota al margen, ¿por qué alguien nuevo en Linux juega con Kali? Esa es una distribución para pruebas de seguridad y ataques, repleta de herramientas de bajo nivel. Seguramente no está destinado a un usuario de Linux sin
experiencia

Respuestas:


19

El problema es que uno de los encabezados / interfaces del kernel cambió en un kernel 3.x reciente. Cuando los valores UID / GID se denominaban originalmente enteros regulares, ahora son estructuras con un solo elemento. Cualquier código que se base en la definición anterior ahora no se compilará hasta que se actualice para que coincida con los nuevos encabezados del núcleo.

Actualmente estoy experimentando parcheando un error similar en virtualbox-guest-utils para mi instalación de Ubuntu; en teoría, localizar y reemplazar instancias ->i_uid =con ->i_uid.val =o ->i_gid =con ->i_gid.val =los números de línea informados en el error debería solucionar el problema (pero no puedo garantizar que en este momento la compilación esté fallando en un error diferente, no relacionado para mí).

Su mejor opción es contactar al autor original de su código para obtener una versión actualizada de la fuente que funcione con los núcleos más nuevos.


77
Probado Esto funciona! He cambiado current_fsuid()acurrent_fsuid().val
Jonathan

1
Para mí, también tuve que cambiar current_fsgid()acurrent_fsgid().val
Me gusta codificar el

@JonathanLeaders touché Gracias. Sin embargo, el parche convertir inta kuid_ttambién parece hacer el truco.
enthusiasticgeek

10

Encontré una solución a los errores de compilación en otro controlador en este sitio web: http://www.arnelborja.com/compiling-rt2870-wifi-driver-in-fedora/

a continuación se muestra el contenido del parche:

--- include/os/rt_linux.h   2013-09-12 13:27:14.000000000 +0800
+++ include/os/rt_linux.h.patched   2014-03-23 11:45:03.907628847 +0800
@@ -279,8 +279,8 @@ typedef struct file* RTMP_OS_FD;

 typedef struct _OS_FS_INFO_
 {
-   int             fsuid;
-   int             fsgid;
+   kuid_t              fsuid;
+   kgid_t              fsgid;
    mm_segment_t    fs;
 } OS_FS_INFO;

1
Esta es una buena solución de trabajo para el controlador MT7601U, utilizada también para el chipset Mediatek / Ralink 148F: 7601. (Sí, solo estoy agregando estas palabras clave por razones de SEO.)
billyjmc

para mi kernel 4.13.16-302.fc27.x86_64 en Fedora 27, esto ya no funciona. Falla con el error de compilación.
kmonsoor

@billyjmc: solo tenga en cuenta que, tal como está, esta solución no funciona para núcleos <3.5, donde kuid_ty kgid_tse introdujeron. Para aquellos, kdebe ser eliminado, como en uid_t fsuid;ygid_t fsgid;
MestreLion

2

make solo informa los errores, pero de hecho son errores de su compilador (probablemente gcc):

error: incompatible types when assigning to type ‘int’ from type ‘kuid_t’ 

Básicamente, su código tiene errores o es inapropiado para su plataforma, pero makefunciona correctamente.


1

Esta solución funcionó para mí. El procedimiento que seguí fue:

  1. Seguí los pasos para mi distribución (Debian Jessie) desde aquí .

  2. Guardé el controlador para Linux del fabricante (que viene con el equipo en el CDROM) y lo descomprimí en una carpeta.

  3. En la carpeta, escribí make(como root) y recibí un error. Entonces, hice la modificación anterior, y funcionó.

  4. Escribí make install(as root), reinicié la computadora y se reconoció la interfaz inalámbrica. Lo configuré y funcionó. ;)

Mi sistema es: Debian Jessie, kernel 3.16.0-4-amd64, usando gnome.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.