큐냅은 시작 스크립트 구성이 어렵습니다.
1. 기기마다 다른 구현 방법
어려운 이유 중 하나가 Qnap 기기의 프로세서에 따라서 구성하는 방법이 다르기 때문입니다.
스크립트 구성하는 방법(영어)
2. 변동사항이 발생할 때 마다 구성해야 함
qnap 스크립트 구성이 어려운 두번째 이유는 부팅할 때 실행할 모든 명령을 한 파일에 관리하면 많은 불편함이 있습니다.
예를 들어 새로 추가한 명령에 문법 오류가 있는 경우, 그 아래에 적힌 모든 명령이 중단됩니다.
그렇다고 여러 파일을 이용하면 파일을 추가할 때마다 autorun.sh를 수정해줘야 합니다.
그래서 위 문제를 해결하기 위해 autorun.sh
에서는 특정 폴더 안에 있는 모든 파일을 실행하게 하려고 합니다.
이 폴더가 공유 폴더 안에 있는 폴더라면 smb나 ftp, QTS의 File Station에서도 쉘 스크립트를 수정, 편집, 추가가 간편해지겠죠.
구성 방법
위 페이지에서 자신의 모델명을 검색했을때 안나온다면 ALL HAL-based Intel and AMD NAS를 따르면 됩니다.
저는 AMD 모델이므로 HAL-based 모델로 알려드리겠습니다.
먼저 ssh나 telnet으로 나스에 접속합니다.
ssh에 아래 명령을 씁니다.
mount $(/sbin/hal_app --get_boot_pd port_id=0)6 /tmp/config
명령을 입력하면 ls -l /tmp/config
에서 autorun.sh
를 확인하실 수 있습니다.
해당 파일에 아래와 같은 스크립트를 넣을 예정입니다.
#!/bin/bash
# 스크립트 폴더가 마운트 될때까지 대기
until (mount | grep -c "/share/CE_CACHEDEV1_DATA" > 1); do sleep 1; done
# 폴더 안의 스크립트 목록을 변수에 저장
lists=$( ls /share/CE_CACHEDEV1_DATA/scripts/autorun/*)
#스크립트
for Do in $lists; do
chmod +x $Do
bash $Do &
done
하지만 이 쉘 스크립트를 실행하기 전에 주의해야 할 몇몇 사항이 있습니다.
스크립트 폴더의 경로나 스크립트 파일 이름에 띄어쓰기가 존재해서는 안됩니다.
저라면 간편하게 띄어쓰기 대신 __나 -를 넣어서 해결해야 합니다.
CE_CACHEDEV1_DATA는 첫번째 볼륨을 의미합니다.
이 때 첫번째 볼륨 이름은 역시 기기마다 다릅니다.
HAL-based라면 모두 같을 수 있습니다.
만약 공유폴더를 3번째 볼륨에 만들었다면 CE_CACHEDEV3_DATA가 되겠지요.
공유폴더 위치는 /share 안에서 찾아봐야 할것 같습니다.
/share/CE_CACHEDEV1_DATA/scripts/autorun/
는 스크립트 파일들을 넣어둘 폴더의 경로입니다.
원하시는 경로로 설정해주세요.
이제 이 코드를 /tmp/config/autorun.sh에 넣어줄 것입니다.
echo '#!/bin/bash
# 스크립트 폴더가 마운트 될때까지 대기
until (mount | grep -c "/share/CE_CACHEDEV1_DATA" > 1); do sleep 1; done
# 폴더 안의 스크립트 목록을 변수에 저장
lists=$( ls /share/CE_CACHEDEV1_DATA/scripts/autorun/*)
#스크립트
for Do in $lists; do
chmod +x $Do
bash $Do &
done
' > /tmp/config/autorun.sh
정리하기
이제 두가지만 더 수행하면 됩니다.
autorun.sh에 실행할 수 있는 권한을 주는 작업과 autorun.sh를 수정할 수 있는 /tmp/config를 마운트 해제해주는 것입니다.
# chmod +x /tmp/config/autorun.sh
# umount /tmp/config
File Station에서 scripts/autorun/ 폴더 안에 파일을 넣어두면 시작할때 해당 스크립트가 실행될 것입니다.