드라이버 컴파일 질문 드립니다

kali linux iptime n150ua(칩셋은 rlink 7601 인것 같습니다.)
make를 했는데 오류가 나면서 안됩니다 ㅠㅠ
도움을 좀 받을 수 있을까요?

root@kali:~/test# make
make -C tools
make[1]: Entering directory /root/test/tools' gcc -g bin2h.c -o bin2h make[1]: Leaving directory /root/test/tools’
/root/test/tools/bin2h
cp -f os/linux/Makefile.6 /root/test/os/linux/Makefile
make -C /lib/modules/3.12-kali1-486/build SUBDIRS=/root/test/os/linux modules
make[1]: Entering directory /usr/src/linux-headers-3.12-kali1-486' CC [M] /root/test/os/linux/../../os/linux/rt_linux.o /root/test/os/linux/../../os/linux/rt_linux.c: In function ‘RtmpOsUsDelay’: /root/test/os/linux/../../os/linux/rt_linux.c:179:8: warning: unused variable ‘i’ [-Wunused-variable] /root/test/os/linux/../../os/linux/rt_linux.c: In function ‘__RtmpOSFSInfoChange’: /root/test/os/linux/../../os/linux/rt_linux.c:1121:20: error: incompatible types when assigning to type ‘int’ from type ‘kuid_t’ /root/test/os/linux/../../os/linux/rt_linux.c:1122:20: error: incompatible types when assigning to type ‘int’ from type ‘kgid_t’ /root/test/os/linux/../../os/linux/rt_linux.c: In function ‘RtmpDrvAllRFPrint’: /root/test/os/linux/../../os/linux/rt_linux.c:2052:4: warning: passing argument 2 of ‘file_w->f_op->write’ from incompatible pointer type [enabled by default] /root/test/os/linux/../../os/linux/rt_linux.c:2052:4: note: expected ‘const char *’ but argument is of type ‘UINT32 *’ /root/test/os/linux/../../os/linux/rt_linux.c:2037:22: warning: unused variable ‘macValue’ [-Wunused-variable] /root/test/os/linux/../../os/linux/rt_linux.c:2037:9: warning: unused variable ‘macAddr’ [-Wunused-variable] /root/test/os/linux/../../os/linux/rt_linux.c: In function ‘RtmpOSIRQRelease’: /root/test/os/linux/../../os/linux/rt_linux.c:2173:21: warning: unused variable ‘net_dev’ [-Wunused-variable] make[4]: *** [/root/test/os/linux/../../os/linux/rt_linux.o] Error 1 make[3]: *** [_module_/root/test/os/linux] Error 2 make[2]: *** [sub-make] Error 2 make[1]: *** [all] Error 2 make[1]: Leaving directory /usr/src/linux-headers-3.12-kali1-486’
make: *** [LINUX] Error 2

iptime n150ua는 rt2800/rt3070 칩셋입니다.
기본적으로 잡히는 rt2800보다는 rt3070으로 잡히면 성능이 더 좋습니다.
이에 따라 드라이버를 컴파일 하실 경우, rt2800관련 모듈은 blacklist 처리하셔야 합니다.

기본적으로 최신 버젼인 2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO의 경우,
그냥 컴파일하시면 컴파일이 안됩니다.

제가 올린 파일로 해보시죠.

저번에 올린것이, 패치를 적용한 것이고,
이번에 올린것은 커널 3.13에 맞춰 패치를 추가한 것입니다.

그런데 님이 사용하시는 커널이 3.12이고, 오류가 나는 것을 보니 3.12에서도 패치가 필요하군요.
정확히 어떤 버전 부터 바뀌었는지 몰라 최근의 버전에만 적용했었습니다.

다음 파일로 해보세요.
[attachment=0:1wktaj1z]rt3070x-v2.5.0.3-dkms-build.tar.gz[/attachment:1wktaj1z]
컴파일은
tar xvfz rt3070x-v2.5.0.3-dkms-build.tar.gz
cd rt3070x-v2.5.0.3-dkms-build
#정적 컴파일
sudo make static-install

#dkms 컴파일
sudo install dkms
mkdir deb
sudo make
sudo dpkg -i deb/rt3070x-dkms_0.1_all.deb

protochaos 답변 감사드립니다.

말씀하신데로 해보았는데

[attachment=1:1irx4r8f]스크린샷 2014-04-24 오전 12.45.33.png[/attachment:1irx4r8f]

이렇게 에러가 납니다.

lsusb 결과 입니다. 죄송한데 정확하게는 n150ua-4dbi 제품입니다.

[attachment=0:1irx4r8f]스크린샷 2014-04-24 오전 12.46.01.png[/attachment:1irx4r8f]

uname -r 수행시 버전은
3.12-kali1-486
입니다.

헐 칩셋이 다르군요.
그렇다면 소스 패치를 수동으로 해보세요.

어떤 것인가 하면, os/linux/rt_linux.c 파일을 열어
__RtmpOSFSInfoChange 부분을 찾으신 후,

[code:1b8rmk6x]
static inline void __RtmpOSFSInfoChange(OS_FS_INFO * pOSFSInfo,
BOOLEAN bSet) {
if (bSet) {
/* Save uid and gid used for filesystem access. /
/
Set user and group to 0 (root) */
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29)
pOSFSInfo->fsuid = current->fsuid;
pOSFSInfo->fsgid = current->fsgid;
current->fsuid = current->fsgid = 0;
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)
pOSFSInfo->fsuid = current_fsuid().val;
pOSFSInfo->fsgid = current_fsgid().val;
#else
pOSFSInfo->fsuid = current_fsuid();
pOSFSInfo->fsgid = current_fsgid();
#endif
pOSFSInfo->fs = get_fs();
set_fs(KERNEL_DS);
} else {
set_fs(pOSFSInfo->fs);
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29)
current->fsuid = pOSFSInfo->fsuid;
current->fsgid = pOSFSInfo->fsgid;
#endif
}
}
[/code:1b8rmk6x]
함수의 내용을 다음과 같이 바꿔주세요.

이 패치의 주내용은
current_fsuid()의 결과가 kuid_t 타입이고, current_fsgid() 함수의 결과가 kgid_t 타입인데,
이것이 모두 int 타입에서 struct 타입으로 변경되었고, 실제 값은 구조체의 val 멤버입니다.

그런데, 이것으로 컴파일이 될 것이라고 장담하지는 못합니다.
이유는 제가 이전 버전에서도 컴파일이 안되서 패치를 적용한 부분이 있기 때문입니다.

protochaos님 정말 눈물나게 감사드립니다. ㅠㅠ

[attachment=0:2d7ntevj]스크린샷 2014-04-24 오전 1.36.47.png[/attachment:2d7ntevj]

덕분에 잘 해결 되었습니다. 늦은밤 고생 많이 하셨습니다. ^^

다시한번더 감사드립니다.

Many thanks! just my 2 cents!