컴퓨터공부/Linux & Unix

리눅스 커널에서 지원하지 않는 무선랜의 지원 방법

achivenKakao 2006. 7. 25. 04:31

서핑하다보니 유용한 정보가 하나 있는 듯 해서요.

R150에 리눅스 설치를 실패해서 아직 정확한 테스트를 해보지는 못했습니다만....

 

R150에 포함된 무선랜 칩의 제조업체가 Atheros(http://www.atheros.com) 인것으로 알고 있습니다

도시바 홈페이지의 드라이버를 보면 그렇게 나와있거든요

좀 이상한 것은 Atheros 홈페이지에는 대형 벤더에 대한 칩셋 공급 현황에 R150은 없다는 점이지요.

즉 구체적인 칩셋의 모델명은 발견하지는 못했습니다.

이후 알게되면 다시 올려드리죠.....

 

일단 Atheros 사의 무선 랜 드라이버의 리눅스 지원 방법에 대한 자세한 설명이 되어 있으니

혹 저처럼 R150에 리눅스를 설치할까 궁리하시는 분들은 참고하시기 바랍니다.

 

 

출처 근거  http://blog.naver.com/fleshta26/110003862841

 

 

 

필요한 준비물은 다음입니다.

1. ndiswrapper.tar.gz
2. 리눅스 커널 소스
3. wireless-tools 패키지 (데비안 sid의 경우 wireless-tools 26-6 을 받았습니다)
4. WINDOWS 에서 사용하던 드라이버 ( sys와 inf , 장치관리자에서 드라이버 정보를 보면
됩니다)
무언가 메시지가 조금 나올겁니다.

ndiswrapper 라는 모듈로 windows 의 드라이버를 빌려와서 사용가능케 하는 거죠.

http://ndiswrapper.sf.net 에 가시면 구할 수 있고요 지원하는 무선랜 칩셋은

* Admtek
* Atheros
* Broadcom
* Intel PRO/Wireless Lan (Centrino)
등입니다 .(그 외에도 가능한지는 모르죠)

일단 소스를
http://sourceforge.net/projects/ndiswrapper/

에서 다운 받은 후에 임시 디렉토리에 압축을 풉니다.

이때 리눅스 커널 소스가 설치되어 있어야 하고

현재 리눅스 커널이 설정된 환경이어야 합니다. 버젼은 2.4, 2.6 모두 지원합니다.

압축이 풀린 디렉토리에서 간단히 make 명령을 내립니다.

코드:
/var/tmp/ndiswrapper$ make
make -C driver
make[1]: Entering directory `/var/tmp/ndiswrapper/driver'
make -C /lib/modules/2.6.1-mm1/build SUBDIRS=/var/tmp/ndiswrapper/driver modules
make[2]: Entering directory `/usr/src/linux-2.6.1-mm1'
*** Warning: Overriding SUBDIRS on the command line can cause
***          inconsistencies
make[3]: `arch/i386/kernel/asm-offsets.s' is up to date.
  CC [M]  /var/tmp/ndiswrapper/driver/wrapper.o
  CC [M]  /var/tmp/ndiswrapper/driver/loader.o
  CC [M]  /var/tmp/ndiswrapper/driver/winsyms.o
  CC [M]  /var/tmp/ndiswrapper/driver/ndis.o
  CC [M]  /var/tmp/ndiswrapper/driver/misc_funcs.o
  LD [M]  /var/tmp/ndiswrapper/driver/ndiswrapper.o
  Building modules, stage 2.
  MODPOST
  CC      /var/tmp/ndiswrapper/driver/ndiswrapper.mod.o
  LD [M]  /var/tmp/ndiswrapper/driver/ndiswrapper.ko
make[2]: Leaving directory `/usr/src/linux-2.6.1-mm1'
make[1]: Leaving directory `/var/tmp/ndiswrapper/driver'
make -C utils
make[1]: Entering directory `/var/tmp/ndiswrapper/utils'
cc -g -Wall   -c -o loaddriver.o loaddriver.c
flex  -t inf-parser.l > inf-parser.c
cc -g -Wall   -c -o inf-parser.o inf-parser.c
gcc -o loaddriver loaddriver.o inf-parser.o
rm inf-parser.c
make[1]: Leaving directory `/var/tmp/ndiswrapper/utils'

위와 같은 식으로 컴파일이 금방 끝납니다.

이제 루트 권한으로
코드:
# pwd
/var/tmp/ndiswrapper
# mkdir /lib/modules/$(uname -r)/misc
# depmod -a
# cp driver/ndiswrapper.ko /lib/modules$(uname -r)/misc     // 2.4 라면  ndiswrapper.o

# cp utils/loaddriver /usr/local/sbin/

자 이제 저 소스에서 하는 건 다 했습니다.

실제로 사용하는 걸 보겠습니다.

일단 자신의 노트북의 pci 정보에서 PCI ID , vendor id 등을 알아내야 합니다.

코드:
# lspci
....
[b]01:0d.0[/b] Network controller: Intel Corp. PRO/Wireless LAN 2100 3B Mini PCI Adapter (rev 04)
....

01:0d.0 이 제 노트북의 무선랜 칩셋 PCI ID 입니다.
코드:
# lspci -n |egrep 01:0d.0
[b]01:0d.0[/b] Class 0280: [b]8086:1043[/b] (rev 04)

8086 이 인텔의 벤더 ID , 1043 이 제 칩셋의 디바이스 ID 입니다.

이 정보를 외우든지 적어 두시기 바랍니다.

다음은 각 노트북등에 포함된 윈도우즈 드라이버 파일이나 메이커에서 다운 받은 드라이버 파일안에서

*.sys 와 *.inf 를 추출해서 /usr/local/share/ndiswrapper 와 같은 디렉토리 안에 넣습니다.

그리고

코드:
# modprobe ndiswrapper
# loaddriver 8086 1043 /usr/local/share/ndiswrapper/w70n51.sys /usr/local/share/ndiswrapper/w70n51.inf

어디까지나 제 노트북의 경우입니다. 메시지가 조금 나왔을 겁니다.

코드:
# iwconfig eth1 mode Managed
# iwlist eth1 scannig    // 가능한 무선랜 리스트가 나옵니다
# iwconfig eth1 essid "ESSID_이름"
# ifconfig eth1 up
# ifconfig eth1 x.x.x.x netmask m.m.m.m up //수동 IP 부여
또는
# dhclient eth1   // dhcp 를 사용한 IP 할당

이상입니다.

ndiswrapper 소스에 포함된 README 를 읽어보시면 자동화 하는 과정도

나와있습니다.

많은 분들이 리눅스에서도 무선 인터넷을 사용하시면 좋겠네요.

********
2.6.0 에서 모듈 로딩 확인했으며 무선 인터넷 이용가능합니다.
2.6.1 에서 가능합니다(기억상으로는)
2.6.1-mm2 에서 로딩 되지 않습니다. (__mdulf3 심볼때문에..)
(mm은 커널 패치입니다. linux커널 미러에서 kernel/people/akpm/patches/ 에서 찾을 수 있습니다.)
********
ndiswrapper version 0.4 가 나왔습니다. kernel version 2.6.1-mm3 에까지도
잘 올라가는 군요.
ethx 에서 wlanx 으로 바뀌었군요. 속도도 괜찮게 나옵니다.
그리고 loaddriver -> loadndisdriver 로 윈도 드라이버 로더 이름이 바뀌었습니다.