Ralink RT2870 के लिए ड्राइवर संकलित करने में त्रुटि


14

Im काली लिनक्स पर एक आरएवीएस-आरएक्सएक्स-एन 600 यूबीई वायरलेस कार्ड (रालिंक आरटी 2870 चिपसेट) के लिए ड्राइवरों को स्थापित करने की कोशिश कर रहा है। मैंने ड्राइवरों को अपनी वेबसाइट बनाने के लिए डाउनलोड किया और उन्हें अनपैक / अनज़िप किया, लेकिन अब जब मैं 'मेक' कमांड चलाने की कोशिश करता हूं तो मुझे यह त्रुटि मिलती है।

/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

मुझे लगता है कि आपको कुछ अलग संस्करण की आवश्यकता हो सकती है, शायद संकलक?
प्लाज़्मापॉवर

साइड-नोट के रूप में, कोई क्यों काली के साथ लिनक्स फिडल के लिए नया होगा? निचले स्तर के उपकरणों के साथ पैक किए गए सुरक्षा परीक्षणों और हमलों के लिए एक दूरी। निश्चित रूप से एक अनुभवहीन लिनक्स उपयोगकर्ता के लिए नहीं है
MestreLion

जवाबों:


19

मुद्दा यह है कि कर्नेल हेडर / इंटरफेस में से एक हाल ही में 3.x कर्नेल में बदल गया है। जहां यूआईडी / जीआईडी ​​मानों को मूल रूप से नियमित पूर्णांक के रूप में संदर्भित किया गया था, वे अब एक एकल तत्व के साथ संरचित हैं। पुरानी परिभाषा पर निर्भर कोई भी कोड अब नए कर्नेल हेडर से मेल खाने के लिए अपडेट होने तक संकलन करने में विफल रहेगा।

मैं वर्तमान में अपने Ubuntu स्थापित के लिए virtualbox-guest-utils में एक समान त्रुटि पैचिंग के साथ प्रयोग कर रहा हूं; सिद्धांत का पता लगाने और के उदाहरण की जगह में ->i_uid =साथ ->i_uid.val =या ->i_gid =के साथ ->i_gid.val =लाइन नंबर पर त्रुटि समस्या को ठीक करना चाहिए की रिपोर्ट में (लेकिन मैं गारंटी है कि इस समय संकलन के रूप में अब मेरे लिए एक अलग, असंबंधित, त्रुटि पर विफल हो रहा है पर नहीं कर सकते हैं)।

आपका सर्वश्रेष्ठ दांव स्रोत के एक अद्यतन संस्करण के लिए आपके कोड के मूल लेखक से संपर्क कर रहा है जो नए कर्नेल के साथ काम करता है।


7
परीक्षण! यह काम करता है! मैं बदल current_fsuid()गयाcurrent_fsuid().val
जोनाथन

1
मेरे लिए, मैं भी परिवर्तन करना पड़ा current_fsgid()करने के लिएcurrent_fsgid().val
मैं कोड चाहते

@JonathanLeaders धन्यवाद को छूते हैं। हालांकि, यह भी करने के intलिए परिवर्तित पैच kuid_tचाल करने के लिए लगता है।
उत्साही

10

मुझे इस वेबसाइट पर एक अन्य ड्राइवर में संकलन त्रुटियों का हल मिला: http://www.arnelborja.com/compiling-rt2870-wifi-driver-in-fedora/

नीचे पैच सामग्री है:

--- 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
यह MT7601U ड्राइवर के लिए एक अच्छा, काम करने वाला समाधान है, जिसका उपयोग मेड्टेक / रालिंक 148F: 7601 चिपसेट के लिए भी किया जाता है। (हाँ, मैं एसईओ कारणों के लिए इन खोजशब्दों को जोड़ रहा हूँ।)
billyjmc

फेडोरा 27 पर मेरी कर्नेल 4.13.16-302.fc27.x86_64 के लिए, यह अब काम नहीं करता है। संकलित त्रुटि के साथ विफल।
किमी।

@billyjmc: बस ध्यान दें कि, जैसा कि, यह समाधान गुठली <3.5 के लिए काम नहीं करता है, जहां kuid_tऔर kgid_tपेश किए गए थे। उन लोगों के लिए, kके रूप में, गिरा दिया जाना चाहिए uid_t fsuid;औरgid_t fsgid;
MestreLion

2

make केवल त्रुटियों की रिपोर्ट करता है लेकिन वे वास्तव में आपके कंपाइलर (शायद gcc) से त्रुटियां हैं:

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

मूल रूप से, आपका कोड आपके प्लेटफ़ॉर्म के लिए छोटी या अनुचित है, लेकिन makeसही तरीके से कार्य करता है।


1

इस समाधान ने मेरे लिए काम किया। मैंने जो प्रक्रिया अपनाई वह थी:

  1. मैंने यहां से अपने वितरण (डेबियन जेसी) के लिए कदम उठाए ।

  2. मैंने निर्माता के लिनक्स के लिए डी ड्राइवर को बचाया (जो सीडीरॉम में उपकरण के साथ आता है), और मैंने इसे एक फ़ोल्डर में अनज़िप कर दिया।

  3. फ़ोल्डर में, मैंने टाइप किया make(जैसा root), और मुझे एक त्रुटि मिली। तो, मैंने ऊपर संशोधन किया, और यह काम किया।

  4. मैंने टाइप किया make install(जैसा कि root), मैंने कंप्यूटर को रिबूट किया, और वायरलेस इंटरफ़ेस को पहचान लिया गया। मैंने इसे कॉन्फ़िगर किया और यह काम किया। ;)

मेरा सिस्टम है: डेबियन जेसी, कर्नेल 3.16.0-4-amd64, सूक्ति का उपयोग कर।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.