前面我們在安裝樹莓派系統之後, 並沒有做任何的分區調整, 通過df –h命令可以看到, 樹莓派16GB的記憶體卡只佔用了其中的3.5GB, 而/dev/root這個目錄才分配了2GB的記憶體, 這著實是不夠用的, 因為我們在後面開發Java程式之後, 如果引入了各種jar包, 輕輕鬆松能達到幾十MB, 所以我們需要對樹莓派進行擴容, 磁片擴容有風險, 擴容前記得備份重要文件。
系統是CentOS7的樹莓派版本, 具體的擴容步驟如下:
$ sudo df -h #這個是查看當前樹莓派磁片大小的命令, 在顯示出來的清單中我們可以看到dev/root只有2GB
$ sudo fdisk /dev/mmcblk0 #這個是用來開啟分區命令
$ p #根據提示按p鍵,
$ d #按d鍵, 刪除分區, 然後提示你刪除哪個分區, 需要刪除的是3分區
$ p #列出來發現當前只有兩個分區了
$ n #增加分區的命令
$ p #根據提示, 選擇p, 主要的
$ 3 #根據提示, 我們選擇3分區
此時會提示你輸入分區開始和結尾的位址, 開始就選擇預設值(分區2的結尾值+1), 結尾值選擇默認的最大值, 此時可以大概計算出開始值到結尾值大約有14GB的大小
$ p #輸入完畢後, 按p列出當前分區是否預設成功
$ w #按鍵w, 保存剛才的分區修改
$ reboot #重啟
$ sudo resize2fs /dev/mmcblk0p3 #把我們剛剛修改的分區進行最終的修復, 經過一段時間大約1分鐘左右, 分區便重寫完畢了
$ reboot #重啟使得所有的設置生效
當這個時候我們再執行df –h之後,
分區完畢了, 而且前面我們已經實現了鬧鐘功能和音樂播放機功能, 房間裡還有一些需要控制的地方:窗簾、燈、空調、語音控制、遠端控制。 那麼先從簡單的開始, 搭建一個總控中心, 這個總控中心主要負責資料的轉發, 命令的執行, 具有擴展功能, 可以方便後面硬體指令的接入。 語言呢, 有Python、Java、C, 因為我一直都是用Java來做開發的, 所以也就選擇Java語言了。
安裝jdk環境, 目前有SUN Java和openjdk可用, SunJava有些代碼是閉源不可見的, openjdk我們可以認為是精簡版的Java, 開發足夠用, 所有我們選擇openjdk:
$ yum install java-1.8.0-openjdk* #把openjdk的所有包安裝進行, 安裝後約佔用500MB記憶體
等待Java安裝完成, 然後我們輸入java、javac、java –version如果均有內容輸出,
為了能夠分散式實現控制中心, 我決定採用兩級結構的控制中心, 大概思路是這樣的, 外網伺服器有一個控制中心, 用於轉發外部的控制請求, 比如在外面就可以用手機APP控制家裡的電器, 內網, 即樹莓派上有一個內網控制中心, 它跟外網控制中心相連, 時刻接收外網控制中心的請求, 但是如果手機連接上內部局域網, 手機APP便不再發送報文到外網控制中心了, 直接通過內網進行控制, 這樣可以保證外網的流量減少, 減少不必要的網路延遲。
那麼, 控制中心我們怎麼做呢?目前初步決定採用Apache的開源框架MINA, 這個是一個封裝完善的JavaSocket, 我們無需關注具體的連接過程, 只需要實現心跳包, 報文推送即可,