디링크 dir-868lw 공유기 dd-wrt 사용시 관련 질문입니다.

   조회 10061   추천 0    

안녕하세요. 
오랫만에 질문 글을 올리는 것 같네요.

다름이 아니라 이번에 구매한 이마트발 디링크 공유기 dd-wrt설정 관련해서 궁금증이 있습니다.

간단히 요약하면 문제는 이렇습니다.
GUI 설정 페이지에서 설정하는 값들은 저장이 되지만, 텔넷 접속 후 쉘에서 각 데몬들의 conf파일을 
변경하는 것 같은 경우에는 재부팅 후에 여지없이 설정이 초기화 됩니다.

이는 ROM에서 돌아가는 dd-wrt OS가 기본적으로 read-only 속성을 가져서 생기는 문제로 보이는데
보통 이같은 경우에 어떤 방식으로 설정 파일들을 유지하는지 알고싶습니다.

한가지 상황을 예로 설명드리자면,
proftp같은 경우, 재부팅 후 기본 경로가 [ /tmp/proftpd/users/계정명 ]으로 잡히는데, 
이 경로를 공유기 usb에 붙은 외장 하드로 마운트시켜 파일 업로드시 외장하드로 저장되도록 변경해놓았습니다.
요약하면, proftp의 기본경로는 설정을 변경해도 재부팅 후에는 초기화되니, 이 경로 설정은 건드리지 않고
마운트를 이용하여 외장하드를 proftp 기본경로에 붙여놓은 걸로 일단 땜빵^^;을 해놓은 겁니다.

위의 방법을, 기동시 스크립트에 마운트 명령어를 넣어 재부팅 하여도 ftp는 사용가능하도록 해결을 보았는데, 
dd-wrt처럼 ROM에 쓰기 금지된 임베디드 리눅스에서, 재부팅을 하여도 사용자가 추가로 설치한 데몬이나 설정들을
그대로 유지하며 사용하는 방법을 알지 못해 질문을 드립니다.

구글링 검색으로 알게 된 한가지 방법은
dd-wrt에 추가적으로 데몬을 설치하는 경우 / 아래에 있는 설치에 필요한 디렉토리 몇개를 외장하드로 마운트하여 설치 후
기동 스크립트에 해당 디렉토리들을 마운트하는 명령어들을 저장하여 부팅시마다 마운트되게하여 사용하는 것입니다만

이것보다 더 간단한 방법이 있을까요?


 
짧은글 일수록 신중하게.
즐거운이 2014-11
USB에 메모리 스틱을 넣어 jffs로 마운트하고 해당 설정 파일들은 USB 메모리의 영역으로 링크시켜서
사용이 가능하십니다. 잘 읽어보니 벌써 이렇게 하고 계시네요.
dir-868lw에는 serial Nor 메모리가 많아서 파티션을 하나 만드셔도 될 것 같습니다만... 이렇게 하려면
커널을 컴파일해야 겠네요... 파티션을 보니... 먼가 맞지 않네요...

  31        0      2048 mtdblock0
  31        1        64 mtdblock1
  31        2        64 mtdblock2
  31        3      32768 mtdblock3
  31        4      31231 mtdblock4
  31        5      98304 mtdblock5

어케 MTD파티션들의 크기의 합이 sflash  용량인 128MByte보다 많은지 모르겠네요.^^

맞추려면 커널에 파티션 정보를 새로 넣고 만들어야 할 것 같네요...
현재로써는 말씀하신 것처럼  USB에 jffs로 마운트 하는 것이 제일 좋을 듯 합니다.

http://www.dd-wrt.com/wiki/index.php/Jffs#Enable_JFFS:_Create_.2Fjffs

http://www.dd-wrt.pl/phpBB2/viewtopic.php?t=268455&postdays=0&postorder=asc&start=15&sid=b1dca7b29c2f3f783e43b234624faf1d
최봉현 2014-11
자세한 답변 감사드립니다.
안그래도 jffs의 경우 dd-wrt옵션에서 jffs2 설정을 켜주니 해당 폴더는 재부팅해도 설정파일들이 다 남아있네요.^^
자동으로 파티션을 생성하여 jffs폴더에 붙여주는 것 같습니다.
이게 가능하면 해당 폴더에 startup 스크립트들을 사용하여, 재부팅 후 데몬들의 재설정이 가능할걸로 보입니다.

정말 많은 도움이 되었습니다.
감사드리고, 좋은 하루 되시기 바랍니다^^
최봉현 2014-12
행여나 저와 같은 분들을 위해서 추가 글 남깁니다.

일단 dir-868lw에 dd-wrt 펌웨어 먹이면 jffs2옵션을 켜주지 않는 이상, usb외장기기를 제외한 모든 디렉토리는
재부팅하면 모든게 다 초기화됩니다.(GUI웹페이지 설정은 제외합니다. NVRAM에 설정값을 따로 저장하기에..)

저와같이 transmissiond이나 proftpd, httpd를 usb외장에서 돌리고싶은데,
재부팅만 하면 conf설정을 다시 만져줘야 하기에 여간 불편한게 아니죠.

이 경우 해결 방법은 간단합니다.
GUI 웹페이지에서 jffs2옵션을 켜주시면 /jffs는 더이상 지워지지 않는 디렉토리로 변경이 됩니다.
그리고 /jffs/etc/config 경로대로 디렉토리를 만들어주시고, 그 안에 <원하는파일명.startup> 이라는 파일을
만들어주시면 됩니다.
startup 파일에는 각 데몬들(transmission, proftp, http)들의 프로세스를 kill한 후 다시 실행시켜주는
스크립트를 작성해주시면 됩니다.
(재부팅 시, dd-wrt에서 jffs/etc/config 디렉토리에 있는 startup파일들을 자동으로 검색하여
스크립트를 실행하여 줍니다. 그리고 startup파일의 권한은 반드시 700으로 해주시기 바랍니다.)

한가지 예로 proftpd를 재부팅하여도 원래 설정한 대로 실행되도록 해주는 스크립트 파일을 적어보겠습니다.

#!/bin/sh

#kill any previously-running instances of proftpd
killall proftpd

sleep 5

#execute proftpd using /jffs/etc/proftpd as the configuration file.
proftpd --config /jffs/etc/proftpd/proftpd.conf


이런 방식으로 작성하시면 되며, --config 옵션뒤에 원하는 경로의 conf파일을 지정해주시면 됩니다.
(저의 경우 /jffs/etc/proftpd/proftpd.conf에 conf파일을 저장해놨기에 저 경로를 적어준겁니다.)

그리고 jffs2옵션을 사용하지 않고 dd-wrt GUI 웹페이지상에서 기동시 스크립트 실행에 usb외장안에 있는
jffs 디렉토리를 dd-wrt의 /jffs 디렉토리에 마운트 시킨 후, usb외장 jffs디렉토리에 위의 작업을 동일하게
적용하여도 사용 가능합니다만, 저는 개인적으로 jffs2옵션을 사용하는 것을 추천드립니다.


QnA
제목Page 3017/5732
2015-12   1794231   백메가
2014-05   5269142   정은준1
2011-01   12754   손경화
2016-04   5197   도브샴푸씀
2020-10   7079   신은왜
2015-02   3855   조병철
2011-01   10712   jore
2013-10   6330   황진우
2018-06   6180   장동건2014
2020-11   3902   박상범
2023-12   1757   꺄울
2015-02   3790   차평석
2013-10   7905   컴지기
2015-02   7200   황성진
2018-06   3356   황진우
2011-02   6119   미수맨
2015-02   3615   Ark
2019-08   3934   원주늘품
2020-11   3077   GPGPU
2011-02   14680   홍상훈
2019-08   2822   김준유
2022-05   2562   malalari