반응형

OS: Ubuntu 계열 (11 이상에서 테스트했으나 이하 버전도 아마 가능할 듯)


컴퓨터에 USB 무선랜카드를 여러 개를 번갈아 가면서 쓰다 보면, wlan0, wlan1, wlan2 등 여러 개의 무선 네트워크 인터페이스가 존재하는 것으로 인식될 뿐만 아니라 인터페이스 번호도 뒤죽박죽이 되는 경우가 있다.

또한 네트워크 관련 프로그래밍을 하다 보면 의도적으로 인터페이스 이름을 지정해야 하는 경우도 생기는데, 인터페이스 번호가 달라서 실행하지 못하는 문제가 발생하기도 한다.


이 때는 /etc/udev/rules.d/70-persistent-net.rules 파일을 열어서 인터페이스 번호를 수정할 수 있다.


# This file maintains persistent names for network interfaces.

# See udev(7) for syntax.

#

# Entries are automatically added by the 75-persistent-net-generator.rules

# file; however you are also free to add your own entries.


# PCI device 0x8086:0x10f5 (e1000e)

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1f:16:08:98:a5", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"


# PCI device 0x8086:0x4236 (iwlagn)

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:16:ea:b1:9d:a4", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan0"


# USB device 0x148f:0x2573 (usb)

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:08:9f:fd:55:4b", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="wlan*", NAME="wlan1"


위에서 빨간색 표시된 영역을 원하는 인터페이스 이름으로 수정할 수 있다. 

만약 현재 쓰지 않는 네트워크 인터페이스일 경우에는 #을 이용해서 주석처리할 수도 있다.

또는 아예 운영체제가 자동으로 네트워크 인터페이스 이름을 처음부터 새로 잡아주길 바란다면 위 파일을 삭제하고 재부팅하는 방법도 있다.




반응형
블로그 이미지

Bryan_

,
반응형

(Software)

OS: Ubuntu 11.04 desktop (32bit)

Kernel: linux-2.6.38.8-generic

라우팅 프로토콜: aodv-uu-0.9.6 (http://sourceforge.net/projects/aodvuu/files/AODV-UU/0.9.6/)


(Hardware)

IBM X40, IBM X60s, Lenovo X200 (3대)



1. Ad-hoc 네트워크 설정

각 노트북에서 /etc/network/interfaces 파일에 아래와 같이 설정을 추가한다. (무선랜 인터페이스가 wlan0일 경우)

아래 설정은 하나의 예시이며, address, wireless-channel, wireless-essid는 원하는 대로 변경할 수 있다. 대신 address는 모든 기기가 같은 subnet 안에 있도록 맞출 필요가 있다.

(IBM X40)

auto wlan0

iface wlan0 inet static

address 192.168.0.3

netmask 255.255.255.0

wireless-mode ad-hoc

wireless-channel 1

wireless-essid testadhoc


(IBM X200)

auto wlan0

iface wlan0 inet static

address 192.168.0.4

netmask 255.255.255.0

wireless-mode ad-hoc

wireless-channel 1

wireless-essid testadhoc


(Lenovo X60s)

auto wlan0

iface wlan0 inet static

address 192.168.0.5

netmask 255.255.255.0

wireless-mode ad-hoc

wireless-channel 1

wireless-essid testadhoc


interfaces 파일을 저장하고 하고 나서 네트워크를 재시작한다. 사실 가장 확실한 방법은 재부팅이다. 
$ sudo /etc/init.d/networking restart

만약 Ubuntu 11.04 desktop을 쓰는 경우 우측 상단에 있는 네트워크 아이콘은 무시하는 것이 좋다. Interfaces 파일을 직접 고칠 경우 GUI 상에서 "어느 네트워크에 연결되었다"는 메세지가 보이지 않고 부채꼴 모양의 아이콘 모양도 연결된 모양으로 바뀌지 않는다. 하지만 애드혹 네트워크에 이미 참여해 있을 가능성이 높다.

어떤 경우에는 재부팅하고 나서 ifconfig 명령을 쳐봐도 무선랜 인터페이스가 보이지 않을 때도 있다. 그럴 때는 networking restart 명령을 입력한다. 우선 모두 서로 신호가 닿는 가까운 거리에 두고(one hop) 서로 ping을 보내서 응답이 오는지 테스트한다.
서로 인식되는 경우 멀티홉이 가능하도록 2대를 가능한 한 거리를 멀리 두거나 복도, 코너 등 실내 구조를 이용한다. 그래도 여전히 3대가 서로 신호가 닿을 경우에는 iwconfig를 이용해서 아래와 같이 신호 세기를 조절한다.
$ sudo iwconfig wlan0 txpower 10.0

보통 무선랜 어댑터의 신호세기가 15dBm~20dBm 정도 되는데, 조금씩 줄여 가면서 테스트할 필요가 있다. 주변에 있는 다른 신호나 벽의 위치, 공간의 폐쇄 여부에 따라서 성능이 많이 달라지기 때문에 정답이 없는 것 같다.


2. AODV 소스코드 빌드 및 실행

이어서 다운로드 받은 aodv-uu-0.9.6.tar.gz 파일을 적당한 위치에 압축을 푼다.

aodv-uu 디렉토리에 가서, 빌드를 새로 해주고 나면 aodv 데몬을 바로 실행할 수 있다.

$ make clean; make

$ make install

$ sudo ./aodvd -l -r 5

(-l 옵션은 /var/log/aodvd.log 파일에 로그를 남기는 것이고,

-r 옵션은 라우팅 테이블을 매 몇 초마다 파일에 기록할지 정하는 것이다.)



(여기부터는 내가 했던 삽질들에 대한 기록이다. ㅠㅠ)

*사실 좀더 최신 버전의 우분투(12.04 또는 12.10)를 쓰고자 했으나, aodv-uu 소스코드를 에러 없이 빌드하기 위한 조건이 커널 버전 2.6이기 때문에 커널 3.0 이상을 쓰는 최근 버전은 쓸 수 없었다.


*본 글에서 언급한 구형 노트북들보다 훨씬 성능 좋은 최신 노트북을 네트워크에 참여시키고자 했으나, (삼성 시리즈9, NT900X3C) 우분투 11.04 이하 버전을 설치하자 내장 무선랜카드가 인식되지 않았다. 그래서 어렵지만 우분투 12.04를 먼저 설치하고, (기본으로 커널 3.2만 깔린다) 커널 2.6을 빌드해서 부팅했더니 무선랜카드를 또다시 인식하지 못했다. 게다가 i5 CPU 중에서 2개의 코어가 지속적으로 80~90%의 자원을 점유하며 발열이 심해지는 현상이 발생하여 포기했다. ㅜㅜ


*게다가 우분투 12.04에서조차 시리즈9 노트북의 내장 무선랜카드는 오작동을 보였다. 그냥 내장 무선랜을 포기하고 시리즈9에 우분투 11.04를 설치하고 나서, 잘 인식되는 USB 무선랜카드를 새로 구입하기로 했다.



반응형
블로그 이미지

Bryan_

,
반응형

콘솔창(Windows의 cmd 또는 리눅스의 terminal)에서 아래와 같이 입력한다.

전제조건: 안드로이드 폰에 대한 USB 드라이버 및 adb가 설치되어 있어야 함.


> adb shell

$ pm list packages -f




반응형
블로그 이미지

Bryan_

,
반응형

Windows 7 ISO 이미지를 가상 씨디롬 드라이브로 열고, sources\idwbinfo.txt 파일을 연다.


32비트는 BuildArch=x86

64비트는 BuildArch=amd64

이렇게 적혀 있다.


반응형
블로그 이미지

Bryan_

,
반응형

(환경) QualNet 5.0.1, Windows 7 64bit, Visual Studio 2008


경험으로 볼 때, 리눅스에서는 gcc에서 디버그 옵션을 지정하기 때문에 별다른 설정 없이 그냥 빌드해도 gdb qualnet 명령으로 디버그가 가능했다. 하지만 윈도우 환경에서는 QualNet Makefile에서 기본 설정으로 디버깅 옵션이 꺼져 있다. 매뉴얼에는 runtime efficiency를 위해서 그렇게 했다고 적혀 있다.


윈도우 환경에서 디버깅 옵션을 켜려면, [QUALNET_HOME]\main\Makefile을 열고 아래와 같이 고쳐 준다.

[QUALNET_HOME]\main\Makefile 중에서...


#DEBUG = /Zi  ---------->  DEBUG = /Zi

OPT = /Ox /Ob2  ---------->  #OPT = /Ox /Ob2


만약 main 폴더 안에 Makefile이 없을 경우, 윈도우 버전 및 Visual Studio 버전별로 호환되는 Makefile 예시가 여러 개 있으니(Makefile-windows-vc8, Makefile-windows-x64-vc9 등) 그 중에서 현재 시스템과 호환되는 파일을 복사해서 Makefile로 이름을 변경한다.


추가로, Visual Studio에서 "빌드 > 솔루션 빌드"를 눌렀을 때 수행되는 Makefile은 위의 것이 아니고 [QUALNET_HOME]\Makefile이다. (Programmer's guide에 적힌 visual studio 연동 방법대로 진행한다면 이 위치에 텍스트파일을 만들게 된다.) 그 파일에서 nmake 명령 뒤에 참고하는 파일 이름이 방금 main 폴더에서 새로 복사해서 만든 Makefile인지 확인할 것. 내용이 아래와 같아야 한다.

[QUALNET_HOME]\Makefile

all:

cd main

nmake -f Makefile

rebuild: clean

nmake -f Makefile

clean:

cd main

nmake -f Makefile clean



그리고 Visual Studio에서 다시 빌드하고 나서 "프로젝트 ---> [QualNet 프로젝트 이름] 속성..."에 들어간다.

왼쪽 메뉴에서 "구성 속성 > 디버깅"으로 들어간다.

작업 디렉터리는 실행하고자 하는 시나리오 config 파일이 있는 폴더 위치,

명령 인수에서는 시나리오 config 파일의 이름을 입력한다.



이제 Visual Studio 메뉴에서 "디버그 > 디버깅 시작(F5)" 으로 특정 시나리오에 대해서 디버그할 수 있다.




반응형
블로그 이미지

Bryan_

,