칼리리눅스 2.0에서 IPTIME의 N150UA USB무선랜카드 사용하는 방법을 소개하겠다.
아래 삭제된 내용과 같이 글을 썼었는데, 왜인지 모르겠으나 rt28xx_get_wireless_stats() 함수에서 커널 패닉이 종종 일어나는 것을 확인하였다.
조금 더 뒤적뒤적해본 결과 리눅스 커널 4.2부터 MT7601U가 지원된다는 것을 확인할 수 있었다. 하지만 칼리리눅스 2.0의 기본 커널 버전은 4.0이었다. 따라서 커널컴파일을 해서 커널 업그레이드를 시도해보았다.
현재 kernel.org에서 stable한 버전은 4.4.2버전이므로 이 버전으로 업그레이드를 진행하였다. http://docs.kali.org/development/recompiling-the-kali-linux-kernel를 참고하였다.
커널 컴파일을 본격적으로 진행하기 전에 실패할 경우를 대비해 SNAPSHOT을 꼭 찍어두길 바란다.
apt-get install kernel-package ncurses-dev fakeroot
로 필요한 것들을 받아준다. 그리고 kernel.org에서 linux-4.4.2.tar.xz 등 최신 stable 버전을 받아준다.
tar -xvf linux-4.4.2.tar.xz
cd linux-4.4.2
로 압축을 푼 뒤 폴더로 이동한다.
cp /boot/config-4.0.0-kali1-amd64 .config
로 기본 설정을 복사해준 뒤
make menuconfig
를 이용해 세부 설정을 해준다. 이 때, MT7601U는 기본으로 설치되지 않아 설정이 필요하다.
Device drivers - Network device support - Wireless LAN - Mediatek Wireless LAN support
로 들어가 이를 체크해주고, 이 하위로 들어가 Mediatek MT7601U (USB) support도 체크해준다. 하위 옵션으로 이동시에는 엔터를, 체크에는 스페이스바를 이용하면 된다. 체크를 해준 뒤 save를 해서 콘솔로 빠져나온다.
export CONCURRENCY_LEVEL=$(cat /proc/cpuinfo | grep processor | wc -l)
를 통해 멀티코어를 이용해 컴파일을 할 수 있다.
make-kpkg clean
로 이전 패키지가 존재한다면 삭제하고,
fakeroot make-kpkg kernel_image
를 이용해 컴파일한다. 이 때 컴파일 시간이 환경에 따라 몇 시간까지 걸릴 수 있으니 자고 오거나 하면 된다.
컴파일이 완료되면 다음과 같이 입력해주면 된다.
dpkg -i ../linux-image-4.4.2_4.4.2-10.00.Custom_amd64.deb
update-initramfs -c -k 4.4.2
update-grub2
reboot
버전이나 deb 파일명은 알아서 조절하면 된다. 재부팅 이후에 바로 될줄 알았는데 firmware를 설치해주어야 한다.
wget -O /lib/firmware/mt7601u.bin https://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git/plain/mt7601u.bin
deprecated: https://github.com/porjo/mt7601/raw/master/src/mcu/bin/MT7601.bin)
그리고 다시 재부팅하면 잘 되는 것을 확인할 수 있다.
혹시 커널컴파일이 귀찮은 분들을 위해 deb파일을 올려두겠다. 다시 한번 말하지만 실패할 경우를 대비해 꼭 SNAPSHOT을 찍어두길 바란다.
linux-image-4.4.2_4.4.2-10.00.Custom_amd64.7z.001
linux-image-4.4.2_4.4.2-10.00.Custom_amd64.7z.002
linux-image-4.4.2_4.4.2-10.00.Custom_amd64.7z.003
linux-image-4.4.2_4.4.2-10.00.Custom_amd64.7z.004
=== 16.02.24 업데이트로 삭제된 내용 (사유: 잦은 커널 패닉) ===
칼리리눅스에 N150UA를 연결한 뒤 lsusb를 입력하면 MT7601U를 볼 수 있다.
하지만 iwconfig를 쳐보면 인식이 되지 않는다. 드라이버를 설치해야 한다.
N150UA Linux용 드라이버는 http://www.mediatek.com/en/downloads1/downloads/?sort=os 에서 MT7601U USB를 선택해 다운받을 수 있다.
먼저
apt-get install linux-headers-$(uname -r) build-essential
로 필요한 헤더와 프로그램 등을 다운받는다.
압축을 푼 뒤 이를 컴파일해서 install해야하는데, 오래된 소스이다보니 make를 그냥 하면 몇 군데 에러가 뜬다.
총 두 군데를 고쳐야한다.
1. sta/sta_cfg.c
__DATE__와 __TIME__ 매크로에서 에러가 난다. 따라서 5766번째 줄을 다음과 같이 수정한다.
2. os/linux/rt_linux.c
type casting이 지원이 되지 않아 에러가 난다. 강제 casting을 해준다.
그런 다음 make와 make install을 차례대로 실행 후 reboot한 뒤 modprobe mt7601Usta해주면 잘 된다.