MT7688 抗痛寧:遠端掛載檔案系統來開發 Node.js 應用程式

Ivan Chang
Feb 19, 2016 · 6 min read

Author: simen

一、前言

我在 MT7688 Linkit Smart 主要都是開發 node.js 的東西,但是咧,我真的覺得老是用 scp 在開發主機(Host)與開發板(Target)之間丟檔案真的超麻煩的~~ 以前上課時,老師都用 WinScp 在那 copy 來 copy 去,雖然是視窗化了沒錯~~ 我覺得好像也是有點…. 麻煩阿!!然後,我實在是很不會用 vim 在 target 上寫程式碼,我太笨啦,只會 esc, i, :wq (無限循環)~~ 哈哈哈!我知道 vim 很強,但我就是不會阿(完全很懶得學一下….)。總之,一言以蔽之,我是個沒有 Sublime Text 就無法做開發的人~ 塊陶阿~~

好啦~ 為了方便工作,我就想說,那把 target 上的工作目錄掛到 host 上好了~ 其實一般 IDE(Eclipse)大多有支援 (s)ftp 網路掛載工作目錄,但是我只是要用個(陽春的)Sublime Text 而已阿!立馬想到,那來找個 plugin 好了,google 一下,馬上發現 Sublime SFTP 這個外掛。很好,其實我試了一下,發現我好像看不懂它的說明在寫什麼…. \__/ 放棄~~~

於是,不管了,我打算用自己的方式做了啦!用 sshfs(SSH Filesystem)來把 MT7688 上的目錄掛過來 host 啦!!將遠端目錄掛載到 host 上之後,看你想幹嘛就幹麻,這跟開不開發 node.js 的程式倒是沒有關係~ 你要寫 c、寫 python 都是可以的…. 或是怎樣搞,都是看你自己啦~ 因為遠端掛載工作目錄其實蠻常用到的,我就想說雞婆一下,跟大家分享,或許可以讓一些還不知道的人,可以寫 code寫得舒服一點點~~~~(vim??? 殺了我吧~~~ 我是連 nano 都會用到有點發瘋的人啊~~~~)


二、步驟

1. Host 端,安裝 sshfs(我的 host 是 Ubuntu 14.04 LTS x86_64)

host:~$ sudo apt-get install sshfs

2. Host 端,開個目錄當 mountpoint

 host:~$ mkdir remote7688
host:~$ ls remote7688/

3. Target 端,安裝 openssh-sftp-server

 target:~# opkg update && install openssh-sftp-server

4. Host 端,使用 sshfs 掛載遠端目錄

host:~$ sshfs root@192.168.0.106:/ /home/simen/remote7688/

以上指令會將整個遠端根目錄 / 掛到 host 的 ~/remote7688

ls 一下,可以看到遠端根目錄下的內容都進來囉!

像我只需要把遠端某個工作目錄 (/root/app) 掛到 host,可以這樣做:

 host:~$ sshfs root@192.168.0.106:/root/app /home/simen/remote7688/

5. 將工作目錄拉進 Sublime Text 吧!

試著修改一下檔案,然後在 target 上 cat 看看

檔案的修改立馬同步過去啦~

現在還有個問題,就是 SFTP Server 並不會在開機時啟動,所以當你重開機之後,每次都要重啟服務,這樣 host 才有辦法將遠端的目錄掛載過來哦!! 以下說明如何使 MT7688 每次開機自動啟動 sftp 服務。如果你覺得沒有需要,下一小節可以跳過不用看~


三、讓 MT7688 開機之後,自動啟動 sftp 服務

OpenWrt 的 ssh 服務是由 dropbear 套件所提供的輕量版,你可以把它換成 openssh-server,官網 WiKi 有說明要怎麼做。然後你就可以靠 sshd 來啟用 openssh-sftp-server。

但是~ 我不打算這麼做啦!我只是要單純啟用 openssh-sftp-server 而已,所以接下來,單純在 init.d 增加一支啟動程序。 我們在 /etc/init.d 中加入啟用程式的指令稿,然後在 /etc/rc.d 加入規則檔 (檔名S開頭代表啟動,各檔名數字代表載入順序),ㄟ~我就不多說了,請大家自己參考 System V 的 init 規則吧~

target:~# touch /etc/init.d/sftpdtarget:~# echo -e ‘#!/bin/sh /etc/rc.common\n\n./usr/libexec/sftp-server -d /’ > /etc/init.d/sftpdtarget:~# chmod a+x /etc/init.d/sftpdtarget:~# ln -s /etc/init.d/sftpd /etc/rc.d/S99sftpd

重開機試試看吧!(我沒寫 Kill 規則檔, 加 -f force reboot)

target:~# reboot -f

在 host 端將遠端目錄掛載過來(記得先卸載再掛載)

host:~$ sshfs root@192.168.0.106:/root/app /home/simen/remote7688/

四、結語

遠端目錄掛載到 host 上之後,看你想幹嘛就幹麻,這跟開不開發 node.js 的程式倒是沒有關係~ 你要寫 C、寫 Python 都是可以的…. 或是整個根目錄掛載回來,在裡面修修改改的也是可以的~ 還有,遠端掛載其實跟 MT7688 也沒什麼關係,科科~ 單純就是我自己正在 MT7688 上面寫 node.js 的 program,就直接下這樣的標題,感覺比較乾脆一點啦~

遠端掛載的方法不只一種,歡迎大家提供更簡便的方法給我~ 我要分享給大家!!!!

PS: 原文連結請參考 E. E. 狂想曲:http://simeneer.blogspot.tw/2016/02/mt7688-nodejs.html

Maker Cup

創客、自造者技術交流

Ivan Chang

Written by

A passionate professional with 10 years technical experience in IoT Solution, RF Hardware, and Wireless Testing. Now a dedicated advocate for industrial IoT.

Maker Cup

Maker Cup

創客、自造者技術交流

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade