
안녕하세요 우분투인 여러분 ;)
나는 우분투에 익숙했던 것처럼 마술처럼 작동할 것이라고 생각하면서 이 저렴한 Ralink Wi-Fi 어댑터를 구입했습니다. ;) 하지만 이 드라이버 설치로 인해 예상했던 것보다 훨씬 더 많은 문제가 발생했습니다. 나는 모든 것을 시도하면서 몇 시간 동안 보드를 뒤졌습니다. 글쎄요... 저는 이것이 올바른 접근 방식이라는 것을 처음부터 알고 있었습니다(답을 의미합니다).
Ralink MT7601U (148f:7601) Wi-Fi 어댑터 설치
그러나 패치를 적용해도 다음과 같은 결과가 나타납니다.
ahti@ahti:~/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913$ make
make -C tools
make[1]: Siirrytään hakemistoon "/home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/tools"
gcc -g bin2h.c -o bin2h
make[1]: Poistutaan hakemistosta "/home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/tools"
/home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/tools/bin2h
cp -f os/linux/Makefile.6 /home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/Makefile
make -C /lib/modules/3.2.0-70-generic/build SUBDIRS=/home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux modules
make[1]: Siirrytään hakemistoon "/usr/src/linux-headers-3.2.0-70-generic"
CC [M] /home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/../../os/linux/rt_profile.o
In file included from /home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/include/rtmp_os.h:44:0,
from /home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/include/rtmp_comm.h:75,
from /home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/include/rt_config.h:33,
from /home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/../../os/linux/rt_profile.c:28:
/home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/include/os/rt_linux.h:282:2: virhe: unknown type name ”kuid_t”
/home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/include/os/rt_linux.h:283:2: virhe: unknown type name ”kgid_t”
/home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/../../os/linux/rt_profile.c: Funktio ”announce_802_3_packet”:
/home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/../../os/linux/rt_profile.c:331:16: varoitus: käyttämätön muuttuja ”pAd” [-Wunused-variable]
/home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/../../os/linux/rt_profile.c: Funktio ”STA_MonPktSend”:
/home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/../../os/linux/rt_profile.c:399:9: varoitus: format ”%d” expects argument of type ”int”, but argument 3 has type ”long unsigned int” [-Wformat]
make[2]: *** [/home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/../../os/linux/rt_profile.o] Virhe 1
make[1]: *** [_module_/home/ahti/data/drivers/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux] Virhe 2
make[1]: Poistutaan hakemistosta "/usr/src/linux-headers-3.2.0-70-generic"
make: *** [LINUX] Virhe 2
내 콘솔 출력이 핀란드어로 되어 있어서 죄송합니다. (어쨌든 그 이상한 콘솔 출력을 영어로 어떻게 변경합니까? btw? 주로 터미널 세션의 모든 것에 대해 영어 로케일을 사용할 수 없는 경우 적절한 및 빌드 도구의 경우? 불가능합니까?)
하지만 네, 기본적으로 저는 지금 이 순간에 있습니다.
나도 써보려고 했는데ndis 래퍼 접근 방식, 그러나 unshield는 Windows 드라이버 실행 파일을 추출할 수 없었고 어디에서도 .sys/.inf 콤보를 찾을 수 없었기 때문에 그 아이디어는 버려졌습니다.
도움을 주시면 감사하겠습니다. 이것이 사용자 네임스페이스 문제라는 것을 알고 있지만 커널 코딩을 해본 적이 없습니다. 그럼에도 불구하고 저는 코더이므로 이 문제를 스스로 해결할 수 없습니다.
아, 그리고 필요한 경우 내 시스템 정보도 조금 있습니다: Ubuntu 12.04(정확함), 커널: 3.2.0-70-generic(#105-Ubuntu SMP Wed Sep 24 19:49:16 UTC 2014), GCC 버전: 4.6(x86_64 -linux-gnu), 그놈 3.4.2
미리 감사드립니다!
답변1
나 자신에게 대답합니다.
패치를 적용하고 싶은 마음이 너무 컸습니다. 패치를 적용하지 않고 드라이버가 컴파일되었습니다. 그러나 매핑이 잘못되었거나 내 148f:760b(<- 1 대신 b에 주목) USB 어댑터에서 작동하지 않는 것 같습니다. 새 별칭을 추가하기 위해 장치 목록을 수정하기도 했지만 드라이버나 이와 관련된 기타 항목을 로드한 후에도 어댑터가 인식되지 않았습니다.
그러나 Windows 7에 드라이버를 설치했을 때(Windows XP에서는 작동하지 않는 것 같음) 설치 프로세스가 C:/ProgramData/Mediatek Driver/RT2870 Wireless LAN Card/Driver/에 있는 드라이버 폴더를 Ubuntu에 복사하고 ndis 래퍼와 ndiswrapper-dkms 패키지를 사용하여 로드하면 어댑터가 즉시 작동했습니다. 실제로 Windows 측에서는 어떤 이유로든 내 무선랜을 전혀 인식하지 못했지만 Ubuntu에서는 단 한 번의 클릭만으로 즉시 무선으로 온라인에 접속할 수 있었습니다.
여기저기서 이상한 동작이 발생했지만 마침내 작동했습니다.
답변2
아마도 더 이상 Ubuntu 12.04를 사용하지 않을 것입니다. 그러나 어쨌든 패치 적용 시 발생한 컴파일 오류에 대한 해결 방법은 다음과 같습니다.
패치는 Linux 커널 >=에서만 기본적으로 작동합니다.3.5. Ubuntu의 12.04 커널에서 작동하도록 하려면3.2약간의 수정이 필요합니다:
에서 include/os/rt_linux.h
다음 블록을 찾습니다. 내 버전에서는 280번째 줄에서 시작하지만 소스를 어디서 얻었는지에 따라 약간 다를 수 있습니다.
typedef struct _OS_FS_INFO_
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)
uid_t fsuid;
gid_t fsgid;
#else
kuid_t fsuid;
kgid_t fsgid;
#endif
mm_segment_t fs;
} OS_FS_INFO;
다음 줄을 얻으세요(내 경우에는 282):
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,12,0)
그리고 그것을 다음과 같이 바꾸십시오.
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)
지금 컴파일해 보면 제대로 작동할 것입니다 :)