Raspberry Pi 무선랜(0BDA 8176) 드라이버 컴파일(Arch Linux Arm) Part.1

View Comments

Arch Linux Arm(이하 Arch)버전. 생각보다 강적.. Orz

우분투는 완전 편했던거 였다.

드라이버가 없어서 컴파일을 해야 한다니.. 포스팅하려는 내용의 글수가 생각보다 많아서, 포스팅을 세개로 쪼갠다.


Part.1 컴파일 환경과 준비
Part.2 드라이버 컴파일과 설치
Part.3 네트워크 환경설정


Raspberry Pi 무선랜(0BDA 8176) 드라이버 컴파일(Arch Linux Arm)


Part.1  컴파일 환경과 준비


[알림] 이 글은 Raspberry Pi(이하 RPi)에 올린 Arch Linux Arm(Linux RPi 3.1.9-33-ARCH+)을 포스팅 날짜 기준

"pacman -Syu"를 마친 상태에서 작성된 글입니다.


사용한 무선랜은 EFM ipTIME NCUBIC 으로 Realtek 8188CUS(0BDA:8176 - 8192cu)를 사용한 802.11n 지원(1TX-1RX)제품이다.

최신이라면 나름 최신인지라 Arch에 드라이버가 없다.


다행히 리얼텍 홈페이지에 컴파일을 위한 소스가 제공되고 있어서, 필요에 따라 직접 컴파일해서 쓸 수 있다.


Arch 로 부팅 후 별도로 설치하지 않았다면, 'make'를 실행할 수 없는 환경이다. 때문에 컴파일이 가능한 환경을 만들어줘야

드라이버를 올릴 수 있다.


http://archlinuxarm.org/developers/distributed-compiling

http://archlinuxarm.org/developers/distcc-cross-compiling

http://www.bootc.net/archives/2012/05/26/how-to-build-a-cross-compiler-for-your-raspberry-pi


위 링크를 참고 하였다. 요약하자면..

pacman -Sy distcc make automake bison flex cvs patch

이다. 사실상 이것만 해도 컴파일 하는데는 문제가 없을 것 같다.

아랫줄들은 크로스 컴파일과 관련 된 것인데, 필요한지 안한지는 확신이 없다. 대충 감은 오나 정확한 개념은 없어서..


Arch는 잘 알려진 리눅스 배포본들이 쓰는 rpm, dpkg, apt, aptitude, yum을 쓰지 않고, pacman 이라는 패키지 매니저를 쓴다.

이름에서 알겠지만, Pac(kage) Man(agement)의 줄임말이다. 구글에서 검색하면 순~ 게임밖에 안나온다.

기본적인 사용법은 아래 링크를 참고 하시라.. 사용하는 옵션들이 정말 유니크 아이템 드랍율 보다 안외워진다..ㅡ_-)-);;


http://archlinuxarm.org/support/guides/applications/package-management 

대충 가장 많이 쓰는 apt-get update, apt-get upgrade, apt-get install 패키지명, apt-get remove --purge 패키지명이 순서데로

pacman -Sy

pacman -Syu

pacman -Sy iampack

pacman -Rsn iampack


pacman -Ss iampack

pacman -Qs iampack

이고, 밑에 두줄은 apt-cache search 패키지명, dpkg -l | grep 패키지명 을 대신한다.

잘 보면 알겠지만, 구문강조에서도 pacman은 지원받지 못하고 있다. 


Arch에는 기본적으로 root 계정밖에 없다. 별도로 user 계정을 한개 생성한 후 다음을 진행하도록 권고한다.

아래 내용은 생성한 유저 계정의 /home/your_user 에 있다는 가정하에 진행하다.

/home/your_user/cross 에서 'your_user'를 생성한 유저 계정의 경로로 바꾸면 된다.

mkdir -p cross/src

cd cross

wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.9.3.tar.bz2

tar -xjf crosstool-ng-1.9.3.tar.bz2

cd crosstool-ng-1.9.3/

./configure --prefix=/home/your_user/cross

make

make install

위 명령중 wget 으로 받는 파일은 포스팅 날짜 기준으로 최신이다. 이 포스팅이 시간이 지난 후 보는 분들은 압축파일명을 경로에서 제거한 경로(http://crosstool-ng.org/download/crosstool-ng/)로 가서 보이는 리스트의 최하단 버전으로 바꾼 후 실행하시라.

당연히 버전이 바뀌면(파일명) 뒤에 따라오는 명령들도 바꿔줘야 한다.


자~ 이제 컴파일 환경이 끝났다. 난 리눅스를 네트워크 관리를 위해 배웠다. 컴파일은 이번이 처음이였는데, 위에 나열한 몇줄을

위해 삽질을 좀 했을 정도로 걸음마 수준임을 이제사 알린다. 분명 다 해보고 검증한 것이지만, 너무 믿지는 말라는 얘기다. :)


이제, 드라이버를 컴파일 해보자. 이 내용과 관련하여서는 아래의 링크를 참고 했다.


http://blog.thegiblins.com/2012/07/arch-linux-raspberry-pi-wirelss-usb.html

http://www.raspberrypi.org/phpBB3/viewtopic.php?f=5&t=4992


먼저, 리얼텍 홈페이지에서 해당되는 가장 최근 드라이버 버전중 Unix(Linux)란의 링크된 파일을 받는다.

받아서 풀어보면..


이런 디렉토리 구조이다. 이중에 필요한 것은 driver 하위의 압축파일이다.

rtl8188C_8192C~~~~.tar.gz 파일을 풀어, wget 으로 받을 수 있는 적당한 곳에 능력껏 알아서 올린다.

뭐~ 더 능력되면 알아서 USB를 마운트해서 옮기던, FTP를 통하든, 여하튼 방법은 알아서 각자의 몫.

컴파일 user 계정으로 할 것이므로, /home/your_user 경로에 받아 놓는다. 자~~~!


경험한 바.. 이 정도까지 하는데도 시간이 좀 걸렸을 것이다.

한탐 쉬고, 다음 포스팅에..계속..



[UPDATE 12/09/18]

어뜩하지.. 어뜩하지.. 납득이 안오네. 납득이..

내가 써놓고는 공백이 너무 떠버려서 수습이 안된다. ㅠㅠ)


기다리실 분들이 있으시진 않겠지만, 위 상태에서 'make'한 드라이버 파일이라도 올려놓습니다.


컴파일 관련 위에 있는 링크글에 설치 및 환경설정등이 안내되어 있습니다. 능력되면 설치 스크립트도 동봉해드리고


싶으나, 무능력자인지라..


8188cu.ko


생업이 바빠. 일단은, 이걸로 마무리..



[UPDATE 12/11/09]

이 포스팅을 보시는 분들이 있는 듯하여 드라이버 컴파일 중 가장 문제였던 점을 추가.


위에서 다운받은 드라이버의 압축을 풀고(tar -xjf 압축파일명), 푼 파일명의 디렉토리도 이동하여..


make

make install


을 하면 100% 에러가 뜬다. 문제는 makefile 파일 안에 변수 문제가 있다. (vim 이나 nano로 makefile 을 열어서 KVER 를 찾아보면)


경로문제 해결


250 ifeq ($(CONFIG_PLATFORM_I386_PC), y)

251 EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN

252 SUBARCH := $(shell uname -m | sed -e s/i.86/i386/)

253 #ARCH ?= $(SUBARCH)

254 ARCH ?= arm

255 CROSS_COMPILE ?=

256 KVER  := $(shell uname -r)

257 #KSRC := /lib/modules/$(KVER)/build

258 KSRC := /usr/lib/modules/$(KVER)/build

259 #MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/

260 MODDESTDIR := /usr/lib/modules/$(KVER)/kernel/drivers/net/wireless/

261 INSTALL_PREFIX :=

262 endif



위와 같은 라인이 보일 것이다.

내가 이 포스팅을 할 때 Arch 의 버전이 uname 명령어로 확인하면 실제와 다른게 나온다. 덕분에 컴파일 시 문제가 발생하고,

또 한가지 경로가 아에 틀리게 되어 있다.


위 글 상자의 주석처리(#)한 줄은 수정전 라인들이고, 그 다음줄이 수정된 라인이다. 기억이 가물가물하여 더 자세한 설명은 할

수가 없다. 그나마 이 정도도 기록을 남겨놓아 가능했다. 뭐든 하게 되면, 스스로가 로거가 되어 기록하며 해야하는 것을 뼈저리게

느낄 포스팅으로 남을 듯 하다.


위 내용은 본문의 http://blog.thegiblins.com/2012/07/arch-linux-raspberry-pi-wirelss-usb.html 이 링크데로 해봤다면

찾을 수 있는 에러임을 알립니다.


어쨌거나, 이 포스팅은 여전히 Part.1 에서 더 나아갈 수 가 없는 상황이 계속되고 있다는 점을 알아주셨으면.. Orz

저작자 표시 비영리 동일 조건 변경 허락
신고

3 Comments (+add yours?)

  1. unkonyang 2012.11.10 22:26 신고

    남겨두신 글을 보고 궁금한점이 있어서 리플 남겨요 ^^;;
    친절한 설명 감사합니다. 그런데 컴파일을 한 후에 나오는 모듈을 올릴때..
    ERROR: could not insert '8192cu': Exec format error
    이런 오류가 발생하는데 커널 빌드 한다음에 드라이버 모듈을 컴파일 해야 하는것인가요?

     답글달기  수정&삭제

    • Favicon of http://www.iambongsu.com 신의손길 2012.11.13 02:44 신고

      문두에도 밝혔지만, 저는 리눅스에서 '컴파일'이란걸 처음 해봤을 정도로 수준이 낮습니다. 대답을 드릴 수 있을 정도의 배경지식이 저에게는 없네요.

      제 경우는 커널빌드를 하지 않았고, 드라이버 모듈만 빌드한(파일명을 8192cu.ko 로 수정했던가? ' ';) 후 본문의 몇몇 링크를 따라하거나, 응용하여 해결했던 것으로 기억합니다.

       수정&삭제

    • unkonyang 2012.11.14 22:21 신고

      그렇군요.. 친절한 답변 감사합니다.
      라즈베리파이는 그냥 무선랜이 잡히길래.. 좋았는데
      아치리눅스에는 기본으로 잡히지 않네요..
      그래서 드라이버를 올려야 하는데 이거 참 어렵군요 ㅠㅠ

       수정&삭제

트랙백0 트랙백 (+view to the desc.)

앞으로 뒤로