샤르의 잡동사니 창고

DD-WRT 공유기에서 OPKG 사용하기

컴퓨터 2011. 7. 6. 17:43

들어가며

OpenWRT 를 이용하여 웹서버를 구축하였다가 설정을 잘못 건드리는 바람에 벽돌이 되어버린 이후로, 리셋 버튼과 펌웨어 영역의 변경이 불가능한 DD-WRT를 공유기에 올려서 이용하고 있습니다.

사용하다 보니 초기에는 공유기 자체의 펌웨어를 건드릴 수 없다보니 불편하게 느껴졌었는데, 기기를 재기동만 시키면 원래대로 돌아와 주니 마음 놓고 이것 저것 실험해볼 수 있어서 좋더군요.

허나, OpenWRT의 opkg 가 DD-WRT의 ipkg보다 여러모로 편리한 점이 많기 때문에, 이를 DD-WRT 에서도 이용해 볼 생각을 하게 되었고, 결국 구글링을 통해 세 가지 방법을 짜집기 하여 포스팅 하였습니다.

[참조한 문서들]
http://g300nh.blogspot.com/2010/06/software-installation-on-dd-wrt-part-1.html
https://forum.openwrt.org/viewtopic.php?id=28488


준비물

WinSCP
Putty
OpenWRT의 library 파일
넉넉한 공간의 USB 드라이브
WinSCP 와 Putty 는 홈페이지의 다운로드 페이지 링크를, OpenWRT의 library 파일은 제 블로그 계정에서 다운로드 링크를 걸어 두었습니다.


시작하기

  1. WinSCP 를 이용해 공유기에 접속합니다.
    설정은 Putty와 동일하게 설정하면 됩니다. (SSH)



  2. 접속하는데 성공하였다면 루트로 이동하여 bin, etc, lib, tmp, usr 폴더를 선택, USB 드라이브에 폴더 하나를 만들어서 그 폴더 안에 복사하도록 합니다.
    저는 fck 라는 폴더를 만들어서 그 안에 넣었습니다.



  3. 복사를 마쳤다면 OpenWRT의 라이브러리를 넣어 줄 폴더 하나를 만듭니다.
    이름은 lib2 정도로 적당히 붙이겠습니다.



  4. 생성한 폴더에 OpenWRT의 라이브러리 파일들을 복사한 후, 공유기에 USB 드라이브를 마운트 시킵니다. (웹GUI 에서 /mnt/로의 자동 마운트를 강력 추천!)



  5. 이제 Putty를 이용하여 공유기에 접속합니다.



  6. 방금 USB 드라이브에 복사하였던 폴더들을 공유기 내부의 같은 이름을 가진 폴더들로 마운트를 시켜주어야 합니다.

    mkdir /mnt/fck/jffs
    mount /mnt/fck/jffs /jffs
    mount /mnt/fck/etc /etc
    mount /mnt/fck/bin /bin
    mount /mnt/fck/lib /lib
    mount /mnt/fck/usr /usr
    mount /mnt/fck/tmp /tmp
    jffs 폴더는 생성하지 않았으므로, mkdir 명령어를 이용하여 하나 만들어 주도록 합니다.



  7. 이제 ipkg.conf 파일과 ipkg 파일을 수정하여 ipkg가 제기능을 할 수 있도록 만들어 줄 차례입니다.
    mv /etc/ipkg.conf /etc/ipkg.conf.orig
    echo -e "src backfire http://downloads.openwrt.org/backfire/10.03.1-rc3/ar71xx/packages/\ndest root /\ndest ram /tmp" > /etc/ipkg.conf
    cp /bin/ipkg /bin/ipkg.orig
    cat /bin/ipkg.orig |sed -e "s/--passive-ftp //" > /bin/ipkg


  8. ipkg update 를 입력합니다.
    ipkg update



  9. 리스트의 업데이트가 완료될 때까지 기다렸다가, 업데이트가 완료되면 ipkg를 이용하여 opkg를 설치하도록 합니다.
    ipkg install opkg





  10. opkg가 정상 동작하려면 OpenWRT의 라이브러리가 필요하므로, 이를 마운트 시켜주도록 합니다.
    mount /mnt/fck/lib2/ /lib
    mount /mnt/fck/jffs /opt
    jffs를 opt로 마운트 시킨 이유는 opkg의 루트를 opt로 설정할 것이기 때문입니다.
    굳이 이럴 필요 없이, opkg.conf 의 루트 경로를 /mnt/fck, 즉, 루트와 마찬가지의 역할을 수행할 경로로 설정하는 것이 나을 것 같습니다.
    단, 마운트 된 경로를 여기에 또 넣으면 에러납니다. -_-a



  11. opkg.conf 파일을 생성해 주도록 합니다.
    echo -e "src/gz snapshots http://downloads.openwrt.org/backfire/10.03.1-rc3/ar71xx/packages/\ndest root /opt/\ndest ram /tmp\nlists_dir ext /tmp/var/opkg-lists" > /etc/opkg.conf

    echo -e "src/gz snapshots http://downloads.openwrt.org/backfire/10.03.1-rc3/ar71xx/packages/\ndest root /mnt/fck\ndest ram /tmp\nlists_dir ext /tmp/var/opkg-lists" > /etc/opkg.conf



  12. LD_LIBRARY_PATH와 PATH를 마운트 시킨 /opt/에 맞추어 지정해 줍니다.
    export LD_LIBRARY_PATH='/opt/lib:/opt/usr/lib:/lib:/usr/lib'
    export PATH='/opt/bin:/opt/usr/bin:/opt/sbin:/opt/usr/sbin:/bin:/sbin:/usr/sbin:/usr/bin'

    아마 이 과정은 필요 없을겁니다.
    혹시라도 에러나면 붙여넣어 보시기 바랍니다.



  13. opkg의 목록을 업데이트 시켜줍니다.
    opkg update

    만약 이 과정에서 rockf64 같은 에러가 발생한다면 OpenWRT의 라이브러리가 제대로 마운트 되지 않은 것입니다. 위의 과정 10을 참조하셔서 마운트 시켜주시기 바랍니다.



  14. 이제 opkg 를 이용하여 패키지 설치가 가능하게 되었습니다.
    만약 재부팅 후 다시 폴더들을 마운트 시키고 싶다면 다음과 같이 입력하시면 되겠습니다.
    mount /mnt/fck /opt
    mount /mnt/fck/etc /etc
    mount /mnt/fck/bin /bin
    mount /mnt/fck/lib2 /lib
    mount /mnt/fck/usr /usr
    mount /mnt/fck/tmp /tmp
    mount /mnt/fck/jffs /opt

    export LD_LIBRARY_PATH='/opt/lib:/opt/usr/lib:/lib:/usr/lib'
    export PATH='/opt/bin:/opt/usr/bin:/opt/sbin:/opt/usr/sbin:/bin:/sbin:/usr/sbin:/usr/bin'


문제점

현재 이 방식으로 패키지를 설치했을 때 발생하는 문제점은 다음과 같습니다.

패키지 스스로 이름을 변경할 수 없음

php-fastcgi 를 설치한 화면입니다.


그림과 같이 파일의 이름이 변경되지 않아, 직접 변경해 주어야 하는 번거로움이 있습니다.

Putty나 WinSCP 등을 이용하여 변경해 주면...


그림과 같이 정상 작동함을 확인할 수 있습니다.


마치며

ipkg 를 이용하여 패키지를 설치하면 그 패키지만이 설치되고 끝입니다.
그렇게 되면 해당 패키지의 정상적인 동작을 보장할 수 없죠.

하지만 opkg 를 이용하여 패키지를 설치하면 그 패키지에 필요한 패키지들까지 함께 설치가 됩니다.
opkg install php-fastcgi 를 입력하면 php5와 php5-cgi 등의 패키지들이 함께 설치되듯이 말이죠.

'컴퓨터' 카테고리의 다른 글

RewriteRule - 이전 주소 접근 시 변경된 주소로 이동시키기  (2) 2011.07.12
공유기(EDIMAX BR-6204Wg)와 시리얼 통신 하기  (0) 2011.07.11
티스토리 초대장을 드립니다. (종료)  (11) 2011.07.08
Firefox 에서 한글로 input 입력 시 onkeypress, onkeyup, onkeydown 안 먹는 문제 해결 트릭  (1) 2011.07.08
DD-WRT 공유기에 텍스트큐브 설치하고 포트 포워딩 하기  (4) 2011.07.07
티스토리 블로그에 구글 맞춤검색 달기 (DIV의 display 이용)  (2) 2011.07.04
티스토리 블로그에 구글 맞춤검색 달기 (iframe 방식)  (2) 2011.07.02
자신의 블로그에 구글 번역 기능 달기  (2) 2011.07.01
USB 메모리 4종 읽기 속도 비교  (0) 2011.07.01
티스토리 이메일 이벤트에 당첨되어 버렸습니다.  (2) 2011.06.30
현재 브라우저에서는 댓글을 표시할 수 없습니다.
IE9 이상으로 브라우저를 업그레이드하거나, 크롬, 파이어폭스 등 최신 브라우저를 이용해주세요.
블로그 이미지

안드로이드 앱 개발을 업으로 삼고있는 헬조선 컴돌이의 잡동사니 창고

by Selnis

카운터

Total
Today
Yesterday

최근에 올라온 글

  • 더 보기

최근 댓글

방명록 : 관리자 : 글쓰기
Selnis's Blog is powered by daumkakao
Skin ⓘ material T Mark1 by 뭐하라

ⓒ 2015. Selnis all rights reserved.

favicon

샤르의 잡동사니 창고

안드로이드 앱 개발을 업으로 삼고있는 헬조선 컴돌이의 잡동사니 창고

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • 전체 (322)
    • 공지 (4)
    • 잡담 (35)
    • 게임 (150)
    • 컴퓨터 (123)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바