Ralink RT2870에 대한 드라이버 컴파일 오류


14

Kali Linux에 rosewill RNX-N600UBE 무선 카드 (Ralink RT2870 칩셋) 용 드라이버를 설치하려고합니다. 웹 사이트에서 드라이버를 다운로드하여 압축을 풀고 압축을 풀었지만 'make'명령을 실행하려고하면이 오류가 발생합니다.

/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를 처음 접하는 사람이 Kali를 사용하는 이유는 무엇입니까? 보안 수준이 낮은 도구로 가득한 보안 테스트 및 공격을위한 배포판입니다. 확실 하지 미경 리눅스 사용자에 대한 의미
MestreLion

답변:


19

문제는 최근 3.x 커널에서 커널 헤더 / 인터페이스 중 하나가 변경되었다는 것입니다. UID / GID 값이 원래 정규 정수라고했던 경우, 이제 단일 요소를 가진 구조체입니다. 이전 정의에 의존하는 코드는 이제 새로운 커널 헤더와 일치하도록 업데이트 될 때까지 컴파일에 실패합니다.

현재 우분투 설치를 위해 virtualbox-guest-utils에서 비슷한 오류를 패치하는 실험을하고 있습니다. 이론적으로 오류에보고 된 줄 번호 와 ->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é 감사합니다. 그러나 변환 패치 intkuid_t도 트릭을 할 것으로 보인다.
enthusiasticgeek

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
이것은 Mediatek / Ralink 148F : 7601 칩셋에도 사용되는 MT7601U 드라이버에 적합하고 효과적인 솔루션입니다. (예, 검색 엔진 최적화를 위해 이러한 키워드를 추가하고 있습니다.)
billyjmc

Fedora 27의 커널 4.13.16-302.fc27.x86_64에서는 더 이상 작동하지 않습니다. 컴파일 오류로 실패합니다.
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 Jessie) 단계를 수행했습니다 .

  2. CDROM에 장비와 함께 제공되는 제조업체의 Linux 용 드라이버를 저장하고 폴더에 압축 해제했습니다.

  3. 폴더에 make( root)를 입력했는데 오류가 발생했습니다. 그래서 위의 수정을 수행했으며 효과가있었습니다.

  4. make install( root)을 입력 하고 컴퓨터를 재부팅 한 후 무선 인터페이스가 인식되었습니다. 나는 그것을 구성했고 효과가 있었다. ;)

내 시스템은 : gnome을 사용하는 Debian Jessie, 커널 3.16.0-4-amd64입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.