เกิดข้อผิดพลาดในการรวบรวมไดรเวอร์สำหรับ Ralink RT2870


14

ฉันพยายามติดตั้งไดรเวอร์สำหรับการ์ดไร้สาย Rosewill RNX-N600UBE (ชิปเซ็ต Ralink RT2870) บน Kali Linux ฉันดาวน์โหลดไดรเวอร์จากเว็บไซต์ของพวกเขาและแตก / คลายซิป แต่ตอนนี้เมื่อฉันพยายามเรียกใช้คำสั่ง 'ทำ' ฉันจะได้รับข้อผิดพลาดนี้

/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

ฉันคิดว่าคุณอาจต้องการบางสิ่งบางอย่างในเวอร์ชั่นอื่นบางทีคอมไพเลอร์?
PlasmaPower

ในฐานะที่เป็นบันทึกย่อทำไมคนที่ใหม่กับ Linux fiddle กับ Kali? นั่นเป็น distro สำหรับการทดสอบความปลอดภัยและการโจมตีบรรจุด้วยเครื่องมือระดับต่ำ ไม่ได้มีไว้สำหรับผู้ใช้ linux ที่ไม่มีประสบการณ์แน่นอน
MestreLion

คำตอบ:


19

ปัญหาคือหนึ่งในเคอร์เนล / อินเทอร์เฟซส่วนหัวเปลี่ยนในเคอร์เนล 3.x ล่าสุด เมื่อเริ่มต้นที่ค่า UID / GID ถูกอ้างถึงว่าเป็นจำนวนเต็มปกติตอนนี้พวกเขาจะ struct กับองค์ประกอบเดียว รหัสใด ๆ ที่ใช้คำจำกัดความที่เก่ากว่านี้จะไม่สามารถรวบรวมได้จนกว่าจะมีการอัปเดตให้ตรงกับส่วนหัวเคอร์เนลใหม่

ขณะนี้ฉันกำลังทดลองแก้ไขข้อผิดพลาดที่คล้ายกันใน virtualbox-guest-utils สำหรับการติดตั้ง Ubuntu ของฉัน ในทางทฤษฎีและการเปลี่ยนตำแหน่งของอินสแตนซ์->i_uid =ที่มี->i_uid.val =หรือ->i_gid =ที่มี->i_gid.val =อยู่กับตัวเลขบรรทัดที่มีการรายงานข้อผิดพลาดควรจะแก้ไขปัญหาที่เกิดขึ้น ( แต่ผมไม่สามารถรับประกันได้ว่าในขณะนี้การรวบรวมอยู่ในขณะนี้ล้มเหลวในการที่แตกต่างกันที่ไม่เกี่ยวข้องกับข้อผิดพลาดสำหรับฉัน)

ทางออกที่ดีที่สุดของคุณคือการติดต่อผู้เขียนรหัสต้นฉบับของคุณสำหรับแหล่งที่มารุ่นปรับปรุงที่ทำงานกับเมล็ดใหม่กว่า


7
ผ่านการทดสอบ! มันใช้งานได้! ฉันเปลี่ยนcurrent_fsuid()เป็นcurrent_fsuid().val
Jonathan

1
สำหรับฉันฉันต้องเปลี่ยนcurrent_fsgid()เป็นcurrent_fsgid().val
ฉันต้องการรหัส

@JonathanLeaders touchéขอบคุณ อย่างไรก็ตามแพทช์ที่แปลง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 ซึ่งใช้สำหรับชิปเซ็ต Mediatek / Ralink 148F: 7601 เช่นกัน (ใช่ฉันแค่เพิ่มคำหลักเหล่านี้เพื่อเหตุผล SEO)
billyjmc

สำหรับเคอร์เนลของฉัน 4.13.16-302.fc27.x86_64 บน Fedora 27 สิ่งนี้ไม่ทำงานอีกต่อไป ล้มเหลวด้วยข้อผิดพลาดในการรวบรวม
kmonsoor

@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. ผมทำตามขั้นตอนในการจัดจำหน่ายของฉัน (Debian เจสซี) จากที่นี่

  2. ฉันบันทึกไดร์เวอร์สำหรับ Linux ของผู้ผลิต (ซึ่งมาพร้อมกับอุปกรณ์ใน CDROM) และฉันคลายซิปลงในโฟลเดอร์

  3. ในโฟลเดอร์ฉันพิมพ์make(ตามroot) และฉันพบข้อผิดพลาด ดังนั้นฉันจึงทำการแก้ไขด้านบนและทำงานได้

  4. ฉันพิมพ์make install(ตามroot) ฉันรีบูทคอมพิวเตอร์และรู้จักอินเตอร์เฟซไร้สาย ฉันกำหนดค่าและใช้งานได้ ;)

ระบบของฉันคือ Debian Jessie, เคอร์เนล 3.16.0-4-amd64, โดยใช้ gnome

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.