OpenWRT version: 14.07 (Barrier Breaker)
Tested device: Buffalo WZR-600DHP
설치에 사용한 PC: Ubuntu 12.04.1 LTS (64-bit)
이 글에서는 라우터(또는 액세스 포인트, 여기서는 라우터로 표현)에 OpenWRT를 설치하는 여러가지 방법들 중에서 TFTP를 활용한 설치 방법을 설명한다. 라우터가 TFTP 서버를 돌리고 있는 경우에 한해 TFTP를 통해서 펌웨어 파일을 라우터에 전송하고, 라우터는 이렇게 전송받은 펌웨어를 설치하는 방식으로 진행된다. 이 글에서 설치 과정에 사용한 라우터 모델은 Buffalo WZR-600DHP이다.
<설치에 필요한 준비물>
- OpenWRT 펌웨어(.bin 확장자) 중에서 TFTP 설치용 파일 (파일명에 tftp가 들어가 있음)
(예: openwrt-ar71xx-generic-wzr-600dhp-squashfs-tftp.bin) - 랜선 연결 가능한 리눅스 컴퓨터
- 라우터(Buffalo WZR-600DHP)
크로스 컴파일 환경에서 직접 빌드해서 펌웨어를 만드는 방법은 이전 포스팅(http://skylit.tistory.com/76)을 참고할 것. 또는 이미 빌드된 펌웨어를 여기(http://wiki.openwrt.org/toh/buffalo/wzr-600dhp)에서 받을 수 있다. 하지만 자신에게 필요한 소프트우어 패키지를 추가하는 등의 customization을 하고 싶다면 크로스 컴파일 환경을 구축해야 한다.
크로스 컴파일 환경에서 빌드(make)를 끝내고 나면 아래 위치에 펌웨어 파일이 생성된다:
[OpenWRT 최상위 디렉토리]/bin/ar71xx/openwrt-ar71xx-generic-wzr-600dhp-squashfs-tftp.bin
<설치 과정>
1. 라우터 전원을 끄고(전원 케이블을 뽑아 둔다), 끈 상태로 랜선을 리눅스 컴퓨터와 라우터의 LAN 포트 4개 중 아무 곳에나 연결한다.
2. 리눅스 컴퓨터에 TFTP가 설치되어 있는지 확인하고, 설치되어 있지 않으면 설치한다.
(Ubuntu 12.04를 기준으로)
$ sudo apt-get install tftp
3. 여전히 라우터를 꺼둔 상태에서 리눅스 컴퓨터에서 커맨드 라인 쉘을 열고 아래와 같이 입력한다.
(Ubuntu 12.04를 기준으로 작성)
$ cd [OpenWRT 최상위 디렉토리]/bin/ar71xx
↑ tftp에서는 디렉토리 변경불가. bin 파일이 있는 위치에 미리 가 있어야 한다
$ sudo ifconfig eth0 192.168.11.2
↑ 600DHP 라우터는 복구 모드에서 이 IP주소를 갖는 클라이언트만 허용
$ sudo arp -s 192.168.11.1 02aabbccdd20
↑ 라우터가 복구 모드일 때 클라이언트에서 이 IP주소/MAC주소로 연결 가능
$ tftp 192.168.11.1
>
4. 위와 같이 하고 나면 TFTP가 실행이 된다. 아래와 같이 펌웨어 전송에 필요한 명령을 입력한다.
> binary
> verbose
> trace
> rexmt 1 <-- 전송 실패 시 1초마다 재시도
> timeout 60 <-- 60초 동안 전송을 시도함
> put openwrt-ar71xx-generic-wzr-600dhp-squashfs-tftp.bin
5. 마지막의 "put" 명령을 치고 나면 전송을 시도하는 메세지가 1초마다 1개씩 올라오는데, 이 때 얼른 라우터 전원을 켠다. 60초 내로 연결이 성공해야 하므로 미리 랜선을 연결해둔 상태에서 전원 케이블만 바로 꽂을 수 있도록 준비해 두면 좋다.
WZR-600DHP 라우터는 맨 처음 전원이 켜졌을 때 정상적으로 부팅되기 전에 복구 모드에 잠시 들르는데, 이 때 위의 tftp 설정을 통해서 펌웨어가 라우터에 전달된다.
sent DATA <block=1, 512 bytes>
received ACK <block=1>
sent DATA <block=2, 512 bytes>
received ACK <block=2>
...
Sent XXXXXXX bytes in XX seconds
>
위와 같이 데이터가 전송이 되었다는 메세지가 뜨고 전송이 끝이 나면 이제 라우터가 펌웨어를 자동으로 설치할 것이다. 이제 TFTP의 역할은 끝났으므로 quit 를 입력하고 종료한다.
빨간색 LED가 깜빡거리면서 펌웨어를 재설치하는 과정이 몇 분(체감상 5분 가량) 지속된다. 빨간색 LED가 꺼지고 전원 LED만 켜진 상태가 되면 설치가 완료된 것이다.
<설치 후 준비>
OpenWRT를 설치(flashing)하고 나면 SSH 접속이 가능하도록 비밀번호를 설정할 필요가 있다.
랜선을 뽑았다가 다시 연결하고 (제대로 IP 주소를 받기 위해), 콘솔 창에 아래와 같이 입력한다.
그러면 바로 OpenWRT 라우터에 연결될 것이다. 이제 비밀번호를 설정한다.
비밀번호 설정이 완료되면 telnet을 종료하고 잠시 기다렸다가(2~3초), 이제 SSH로 로그인을 시도해 본다.
비밀번호를 물어볼 때, 방금 설정한 비밀번호를 입력해서 똑같이 로그인이 된다면 정상적으로 설정된 것이다.
여기까지 하고 나면 이제 원하는 대로 OpenWRT를 활용하면 된다.
<참고자료>
* TFTP를 이용한 OpenWRT 설치 방법(공식 페이지): http://wiki.openwrt.org/doc/howto/generic.flashing.tftp
* OpenWRT - Buffalo WZR-600DHP 관련 페이지: http://wiki.openwrt.org/toh/buffalo/wzr-600dhp