Erreur lors de la compilation des pilotes pour Ralink RT2870


14

Im essayant d'installer des pilotes pour une carte sans fil rosewill RNX-N600UBE (chipset Ralink RT2870) sur Kali Linux. J'ai téléchargé les pilotes de leur site Web et les ai décompressés / décompressés, mais maintenant, lorsque j'essaie d'exécuter la commande «make», j'obtiens cette erreur.

/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

Je pense que vous pourriez avoir besoin d'une version différente de quelque chose, peut-être du compilateur?
PlasmaPower

En guise de note secondaire, pourquoi quelqu'un de nouveau à Linux jouerait-il avec Kali? C'est une distribution pour les tests de sécurité et les attaques, remplie d'outils de bas niveau. Sûrement pas destiné à un utilisateur Linux
inexpérimenté

Réponses:


19

Le problème est que l'un des en-têtes / interfaces du noyau a changé dans un noyau 3.x récent. Là où les valeurs UID / GID étaient à l'origine appelées entiers normaux, ce sont maintenant des structures avec un seul élément. Tout code reposant sur l'ancienne définition ne pourra pas être compilé avant d'être mis à jour pour correspondre aux nouveaux en-têtes du noyau.

J'essaie actuellement de corriger une erreur similaire dans virtualbox-guest-utils pour mon installation Ubuntu; en théorie, la localisation et le remplacement des instances de ->i_uid =with ->i_uid.val =ou ->i_gid =with ->i_gid.val =sur les numéros de ligne signalés dans l'erreur devraient résoudre le problème (mais je ne peux pas garantir qu'à l'heure actuelle, la compilation échoue maintenant pour une erreur différente et sans rapport avec moi).

Votre meilleur pari est de contacter l'auteur d'origine de votre code pour une version mise à jour de la source qui fonctionne avec les noyaux les plus récents.


7
Testé! Cela fonctionne! J'ai changé current_fsuid()pourcurrent_fsuid().val
Jonathan

1
Pour moi, j'ai aussi dû changer current_fsgid()pourcurrent_fsgid().val
J'aime coder

@JonathanLeaders touché Merci. Cependant, le patch converti inten kuid_tsemble également faire l'affaire.
enthousiastegeek

10

J'ai trouvé un correctif aux erreurs de compilation dans un autre pilote sur ce site Web: http://www.arnelborja.com/compiling-rt2870-wifi-driver-in-fedora/

ci-dessous est le contenu du patch:

--- 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
Il s'agit d'une bonne solution de travail pour le pilote MT7601U, également utilisé pour le chipset Mediatek / Ralink 148F: 7601. (Oui,
j'ajoute

pour mon noyau 4.13.16-302.fc27.x86_64 sur Fedora 27, cela ne fonctionne plus. Échoue avec une erreur de compilation.
kmonsoor

@billyjmc: notez simplement que, en l'état, cette solution ne fonctionne pas pour les noyaux <3.5, où kuid_tet kgid_tont été introduits. Pour ceux-ci, kdoit être abandonné, comme dans uid_t fsuid;etgid_t fsgid;
MestreLion

2

make ne rapporte que les erreurs mais ce sont en fait des erreurs de votre compilateur (probablement gcc):

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

Fondamentalement, votre code est bogué ou inapproprié pour votre plate-forme mais makefonctionne correctement.


1

Cette solution a fonctionné pour moi. La procédure que j'ai suivie était:

  1. J'ai suivi les étapes de ma distribution (Debian Jessie) à partir d' ici .

  2. J'ai enregistré le pilote pour Linux du fabricant (fourni avec l'équipement sur le CD-ROM) et je l'ai décompressé dans un dossier.

  3. Dans le dossier, j'ai tapé make(as root) et j'ai eu une erreur. J'ai donc fait la modification ci-dessus, et cela a fonctionné.

  4. J'ai tapé make install(as root), j'ai redémarré l'ordinateur et l'interface sans fil a été reconnue. Je l'ai configuré et cela a fonctionné. ;)

Mon système est: Debian Jessie, noyau 3.16.0-4-amd64, utilisant gnome.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.