<< 樹莓派安裝前準備 - 概論 >>

     目前樹莓派支援的作業系統以 Linux 為主流,Microsoft 在 2016 年底也發行了 Win10 loT For 樹莓派,

而目前支援樹莓派的作業系統,安裝之後,都只有作業系統的核心 (Core),或者再給一點點的應用軟體,

這些應用軟體都是最基本部分,MS 的 Win10 loT 還真的只給核心,裝起來後...除了核心,什麼都沒有,

所以玩樹莓派,並無法像手機或 PDA,有很多的 App 等妳去探索,樹莓派...想要什麼東西都必須手動安裝。

    簡單的講,樹莓派主要的是以開發者為導向,並非使用者導向,也就是說樹莓派主要是讓樹莓的使用者開發相關之應用,

而非平板電腦或一般的電腦那樣,所以樹莓派可以用於設備開發、程式開發、學校之教學等,

因此開始前要有心理準備,要一台可運用的樹莓派,有很長的路要走,並且本文之內容,最終也是將樹莓派架成 Linux Server為目的。

 


<< 樹莓派安裝前準備 - 硬體需求 >>

1. 硬體準備 microSD 卡

microSD 以 64 G Class 10 (U1) 最佳,過大或太快 (U3) 容易出現樹莓不支援之情況

建議:

     a. http://24h.pchome.com.tw/prod/DGAG0H-A90082K9X?q=/S/DGAG5E

     b. http://24h.pchome.com.tw/prod/DGAG6K-A9006K5CW?q=/S/DGAG5E

2. 硬體準備 Monitor

Monitor 的選擇有兩種:

   a.樹莓派的影像輸出只有 HDMI,所以可接具有 HDMI 介面,之 Monitor

若 Monitor 沒有 HDMI 介面,可以轉接。

HDMI to VGA 轉接頭 : http://24h.pchome.com.tw/prod/DCACH3-A90056LBI

    b.樹莓派官方螢幕

https://www.taiwaniot.com.tw/shop/extended-module/raspberry-pi-part/raspberry-pi-touchscreen/

(我是買官方觸控螢幕)

3. 硬體準備 鍵盤與滑鼠 -- USB 介面

4. 硬體準備 網路

樹莓派 3 內建 藍牙 4.1 及 WiFi,雖然有 WiFi 可用,但我個人偏好使用有線網路, 有線網路要能提供 DHCP 上網,

因為初期在安裝階段使用 DHCP 上網 - 可免去網路組態設定,待 OS 全部灌好後,再來設定 PPPoE 上網,

用 PPPoE 上網才能取得實體 IP,Client 才能透過 Internet 存取 Server,若沒有這個需求,則繼續使用 DHCP 或 WiFi 即可。

5. 硬體準備 電源

樹莓派使用 USB Mini Type A 的電源所以要準備 USB Type A 的線材,

 USB Mini-A 就是一般 Android 的充電接頭,電源插頭就用手機充電用的市電轉 USB 即可。

6. 硬體準備 樹莓派主機板

http://24h.pchome.com.tw/prod/DRAD70-A9006WHY0



https://www.taiwaniot.com.tw/products-category/mcuboard/raspberry-pi/ 

 

     良興會員價一片 NT$1499 是目前找到最便宜的 (個人網拍的不算),另外良興也有一些配件...塑膠殼、散熱片等。


     但不建議用上圖的塑膠殼,因為運作時,樹莓派還是有點溫度,上面的殼雖然有孔,但並不通風,所以可以買個 USB 散熱風扇來吹樹莓派...

     百來塊的風扇,風力不強,但很有效果,隨時去摸 CPU,都是冷的...XD

---------------------------------------------- 以上為硬體需求 ----------------------------------------------

<< 樹莓派安裝前準備 - 硬碟 >>

     樹莓派用 SD 卡來當做硬碟,在灌好作業系統後,當然可以加掛USB實體硬碟,

但對樹莓派來說,SD卡才是主硬碟,樹莓派只能由 SD 卡開機。 

     未安裝任何作業系統的樹莓派,只認識 FAT 及 FAT32 Partition 的 SD 卡,

 但目前市售的高容量 SD 卡 (32G以上)都是使用 exFAT 格式的 Partition,因此,樹莓無法讀取全新的 SD 卡。

 

全新的 64G SD 卡的內容,可看到它的 Partition 是 exFAT (創見、Sandisk、KingSton 都是如此):

    要將 SD 卡 Format 成 FAT32 的方法很多,樹莓官方網站的教學是用  

SDFormatter Version 4 這支程式,但其教學影片的日期是 2006 年,所以到 SDFormatter 的官網,

下載的版本並不是 SDFormatter 4,用下載到最新版的 SDFormatter 來 Format SD 卡,

會發現 Format 出來後一樣是 exFAT 的 Partiton;所以只好找找 Version 4 的版本。

     在 SDFormatter 官網上,好不容易找到 Version 4 的版本,但 Format 出來的結果完全一樣,

所以可以認定...SDFormatter 只是一個圖形化的 Shell,它應該還是呼叫 Windows 的檔案總管來 Format SD 卡。

 

     我嘗試用 Windows 的命令列 format 指令來將 SD 卡 Format 成 FAT32 的 Partition,

這樣 Format 出來的 SD 卡表面上能用,將 NOOBS 複製到 SD 卡後,

樹莓也能讀的到,好像是 OK 的,但是...樹莓就停在下面的畫面: 

    然後就開始 Settings Partition 直到天荒地老,我很有耐心的等了 12 hr+,依舊沒結果...

一開始以為是 SD 卡或是 樹莓派的問題,換一片新的樹莓及新的 SD 卡,一樣的做法後,

發現這應該是樹莓不吃 Windows Format 出來的 FAT32 Partition...

 

    還好...我們從小就摸著電腦長大的,知道以前還有些工具可以使用,其實是...死馬當活馬醫啦....XD

以前有一個工具叫做 FAT32Format,它沒有圖形介面,只能用 Windows 裡的 cmd 來操作,

用它來 Format SD卡試試,方法如下:

1. 先將 SD 卡 Format 成 NTFS 格式:

 

2. 開啟 DOS 視窗,並切換到 FAT32Format 檔案所在目錄,下命令 -  fat32format <磁碟機代號>:

     按下 Enter 後,它會問妳 Y 不 Y?

     當然 Y 啊!所以按下 'Y' & Enter 後,就完成 NTFS 轉 FAT32...如下圖:

    這樣做出來的 FAT32 Partition 樹莓派才能使用,這也是目前找到唯一能用的方法....

雖然有點奇怪,但能抓老鼠的貓就是好貓,管它什麼貓,妳說對不對?

 

FAT32Format.zip <-- 點它下載

---------------------------------------------- 以上為樹莓派安裝 OS 前準備 ----------------------------------------------

<< 樹莓派安裝作業系統 >>

     要在樹莓派上安裝作業系統有兩種方式 --

     第一:安裝樹莓派官方提供的 NOOBS,NOOBS 是一個非常簡單的選單系統,

當妳的樹莓派用 NOOBS 開機,並且連上網路後,NOOBS 會自動去官網下載最新及可供安裝的作業系統,

然後可透過選單的選擇來安裝目的作業系統。

 

     這種安裝方式的好處是...懶人安裝法,並且其中所列的作業系統,樹莓絕對支援,

缺點是 NOOBS 用掉了約 1.4G 的 SD 空間,並且每次開機都會提示按 Shift 鍵來進入 NOOBS,妳不理會,一會後才會進真正的作業系統開機。

 

    第二:自行上網搜尋各種作業系統的 Image 來安裝。 

     這種安裝方式的好處是開機快就跟一般電腦灌了Linux一樣,硬體Power On就開始跑 OS,並且看起來...比較專業 XD。

 

<一> 安裝 NOOBS 來安裝其它的作業系統

    NOOBS 是樹莓派官方提供的多重開機作業選單,所以能透過樹莓官網免費下載,載點:

https://www.raspberrypi.org/downloads/noobs/ 

NOOBS_v2_4_2.zip <-- 備份載點,官網為首選,這裡速度不快...

 

依上圖選擇後,即會下載 NOOBS 的 zip 檔,載完後,可直接解壓到妳的 SD 卡,完成後,SD卡長的像下圖... 

 

     然後就可以將 SD 卡插入樹莓派的 SD 插槽,如下圖:

請看好方向...

 

指揮艇...組合!

 

     再來...便可接上螢幕、Keyboard、Mouse及電源...請看下圖:

    建議是先接好Keyboard、Mouse、網線、螢幕後,再插上電源,因為樹莓派沒硬體電源開關,所以插上電源就會開機。

 

     開機後,NOOBS會先確認及轉換 Partition,接著就進入 NOOBS 的介面,如下圖:

 

     當妳連上網路後,NOOBS 將上網讀取可供下載的作業系統,如下圖:

     想要安裝什麼作業系統,只要在左邊的 Check Box 打勾,然後點選左上的 Install,BOONS 就會啟動安裝,然後就等待即可完成安裝,

這就是懶人安裝法,不過很遺憾的是 CentOS 7 並未被放到 NOOBS裡,所以若想玩 CentOS 7 就只能用手動的方式來進行安裝。 

 

     其實 張同學 他在玩樹莓派,都是使用 Debian 的樹莓 Raspbian 作業系統 (樹莓建議的),問他為什麼用 Raspbian?

他的回答:『啊就內建的啊,不用再那邊弄來弄去,比較方便,反正都是 Linux 啊』。

 

     所以,如果妳也嫌手動安裝麻煩的話,使用 NOOBS 來安裝作業系統也是不錯的選擇,

若妳選擇用 NOOBS 安裝作業系統,首選應該也是官方建議的 Debian,那接著就不用繼續往下看,

因為我這篇主要是安裝 CentOS 7!

 

    透過 NOOBS 安裝 Debian,當安裝完成後,基本上該有的都有,只有 PostgreSQL 需要額外安裝;

Debian 的安裝與介紹,有空我再寫一篇...

 

<二> 手動安裝 CentOS 7

     為什麼要用 CentOS ?因為可以直接說它是 Redhat Enterprise 的免費版 -- 它跟 RHEL 同核心  ~~ CentOS Wiki

 

     之前的工作,接觸的非 Windows 系統 ,大概就是 HP 的 UX -- 這只能灌在那貴貴的 HP 機器上;

Dec 的 VMS,Dec 已經沒了,VMS 與 Linux 其實差距算大;再來就是 RHEL,而用最多的也是 RHEL,

但個人要玩 RHEL ,除了付錢給 Redhat 外,也只有非法的管道,想要用 RHEL 又不想付費, CentOS 就是唯一的選擇。

 

     要安裝 CentOS 7,可到 這裡 下載 Image 檔,請選擇 for RPI3 的壓縮檔,如下圖

 

下載下來的檔案是 Image 的壓縮檔,附檔名是 .xz,.xz的壓縮檔可以用 7z 來解壓縮,311Mb 的壓縮檔,解開後變成 3G 大的 Image:

     Image 檔並不能直接 Copy 到 SD 卡,直接摳鄙過去,樹莓派也不認識,因為 Image 檔要用燒錄的方式燒錄到 SD 卡裡... 

 要將 Image 燒錄到 SD 卡,需要第三方軟體。

 

     Win32DiskImage 可以將 Image 檔燒錄到 SD 卡,未來灌好作業系統後,也可以用它來做備份,别看它命名為 Win32開頭,

它最新版的,可是絕對的 64bit 軟體喔! 

 

    Win32DiskImage 可由 這裡 下載, 若是怕亂七八糟的網站,可由我的 網址 下載,但速度會慢一點點...一點點而已啦~真的...XD

 

    手動安裝 CentOS 7,不用費心的去準備 SD 卡要用什麼 Partition,因為將 Image 燒錄到 SD 卡後,SD 卡就變成 Image 映像檔裡的 Partition。

 

    下載並安裝後,就用力的執行它,Win32DiskImage 啟動後,就會自動抓到妳的 SD 卡,如下圖:

 

     選擇好剛剛下載的 CentOS 7 Image 後,按下『寫入資料到「裝置」中』並回答 Yes 後,就可將 Image 寫入 SD 卡;

當完成後,妳會發現,SD 卡上多了很多檔案,而SD卡的 Partition 也被 Image 檔做分割了,如下圖:

     所以...等 CentOS 7 啟動後,妳可以看到妳的磁碟機會變成好幾顆...這裡我不做任何變更,

等 CentOS 7 執行後,官方已經幫我們準備好指令會自動去調整 Partition,所以這裡就不用做調整。

 

      接著將 SD 卡插回樹莓派,插上電源,就可以開始「使用」 CentOS 7 了。

 

   疑?使用 CentOS 7?不用安裝嗎?....XD 其實剛剛燒錄的 CentOS 7 映像檔,就是已經安裝好的磁碟映像,

所以,只要將 SD 卡插入樹莓派,接上網路及電源,就可以開始使用 CentOS 7 了。 

 

    用 Image 的方式,才是真正的懶人安裝法,張同學 他還以為要弄來弄去的,

我就「懶」的跟他講...這樣是不是很壞?...ㄎㄎㄎ 

 

<三> 系統設定及元件安裝   

     第一次開機,將會停在下面的畫面:

     這時,CentOS 7 已經完成開機,它是在等妳的動作,所以妳按下 Enter 後,會出現登入畫面:

    第一次登入,使用者當然只有 root,密碼則預設為 「centos」,所以就用 root 登入 CentOS 7,

登入後,第一件事當然是先改 root 的密碼,因為目前 root 的密碼是地球上 60億人口,大家都知道的密碼,所以要趕快改掉,

改 root 密碼請使用下列指令:

passwd root

     接著輸入兩次新密碼後,密碼就完成修改。

 

     接著第二件事,就是讓妳的 CentOS 7 已安裝的元件更新到最新的版本,所以請用下列指令:

yum -y update

    -y 的意思是:不要再詢問 y 不 y 的問題,全部都 y 就對了,下完之後,就等 CentOS 7 完成更新。 

一會的等待後,出現 Complete! yum 幫我們完成了所有已安裝元件的更新;完成後,讓它重新開機:

shutdown now -r

 

    系統再次重開後,還是用 root 登入,我們先看一下網路設定,請用下列指令: 

ifconfig

    結果如下圖:

     如果妳不用 PPPoE 去取得 Internet 的實體 IP,那現在就可使用 Windows 的 putty 來登入妳的 CentOS,

但我要架的是一台對外的 Server,所以先安裝 PPPoE...

 

    首先,先用 yum 去找 PPPoE 的元件,指令如下:

yum search pppoe 請看下圖:

     yum 上網找到了一個 rp-pppoe.armv7hl 的元件,所以我們就可以安裝它,請用下面指令:

yum install rp-pppoe.armv7hl -y

    當安裝完成,會出現 Complete!

 

      安裝好 pppoe 之後,要進行 pppoe 的設定,請用:

pppoe-setup

   開始 Setup 後...

第一個會問妳 LOGIN NAME,請輸入妳的撥接帳號,中華電信的是 xxxxxxxx@hinet.net

第二個問題是,pppoe 要使用哪個 INTERFACE,Default 是 eth0,請按 Enter 或輸入 eth0 Enter

第三個問題是問妳幾歲....啊不是!是說是否每隔一段時間就要重新撥號以取得新 IP?Default 是 no,我們當然要持續連線,所以 Enter 或 no Enter

第四題....要設定 DNS,hinet 的 DNS 是:192.168.95.1 跟 192.168.95.2 還有 168.95.1.1,但網友說,

                 用 google 的 DNS 會比較快...google 的 DNS :8.8.8.8 及 8.8.4.4;但其實我們架 Server 並沒有存取網路的網頁,所以...別被迷思了,

                 至於用哪個 DNS?我是種花電信的,又是排行老二,所以我就設成中華第二組:192.168.95.2....

第五題---還是 DNS!第二組 DNS,好吧,這麼有誠意,那我設 google 的好了:8.8.8.8 這樣看會不會一直發....XD

第六題,密碼,這個密碼是妳 ADSL PPPoE 撥接上網的密碼,所以妳問我多少?我也不知道,請自行想辦法....

                 好不容易找到 Hinet ADSL PPPoE 撥接密碼,並輸完之後...

第七題  USERCTRL,問妳是否要讓 root 以外的 user 也可控制 pppoe ? default 是 yes...我是回答 yes

再來這題是問:連線模式,共有 3 種,如果沒有什麼特別需求就回答 0 就好

第九題,開機時是否要啟動 pppoe 撥號?這個問題...嗯~好問題....這裡請注意,它的 Default 是 no 喔,所以我給他 yes + Enter

第九題問完,它會把妳之前的答案約略的列給妳看,然後就問最後一題...這樣的設定對不對?

若回答 n + Enter,就再回去重來一次,若回答 y+Enter,就完成了 PPPoE 的設定:

     它說,用 /sbin/ifup ppp0 來啟動,/sbin/ifdown ppp0 來結束,然後用

/sbin/pppoe-status /etc/sysconfig/network-scripts/ifcfg-ppp0 來查看連線狀態,其實,用 ifconfig 更快...XD

 

     所以我們先用 /sbin/ifup ppp0 來試試是否能撥接?請下:

/sbin/ifup ppp0

下完後,可以用 ifconfig 指令來查看 ppp0 是否成功啟動並取得 Internet IP:

     然後在 Windows 裡去 ping 妳的 IP,如果 OK,那就是 OK 了,接下來就是 reboot,看它開機後是否會自動去撥號,

請:shutdown now -r

 

    按照道理,應該在重開機後會自動撥號才對,但我裝過幾次 CentOS 7 for arm,都不會自動撥號,

不知道是否我有哪裡設錯,不過沒關係,pppoe 它不自動撥號,我們就用手動方式讓它開機時撥號 Orz...

請用 root 登入,現在我們還沒建 user 所以也只能用 root...登入後,用下列指令:

vi /etc/rc.d/rc.local

然後在最後面增加一行:

/sbin/ifup ppp0

如下圖:

    加完後,要把 /etc/rc.d/rc.local 改為可執行,這樣開機才會起作用,請用下列指令:

chmod +x /etc/rc.d/rc.local

    然後 reboot, 重開後再下 ifconfig 就會看到 ppp0 被啟動,並取得 IP 了。

 

     若妳不要讓它開機上 Internet,妳也可以寫一個 shell,內容就是 /sbin/ifup ppp0 然後要上網時,執行 shell 就可以。

 

     到目前為止,作業系統裡的所有元件都 Update 到最新狀態,並且已經設定好 PPPOE,所以我們可以先將 SD 卡備份起來,

這樣若後面玩錯或玩壞了,就不用整個重來一次,所以,先 Shutdown now,然後關電源,將 SD卡拔下,拿到 Windows,

用 Win32DiskImage 來備份...備份完成後,我們繼續後面安裝。

 

    備份很久齁!我的開始備份後去吃午餐,吃完回來才備 87%...X的,我拿到不能再高的分數...

 

    備份完成後,我們讓指揮艇組合....不是啦~ 是將 SD 卡插回樹莓派,然後開機,現在我們要使用 ssh 來操作我們的 CetnOS 7,

所以我們要先建立我們要用的使用者帳號:

adduser <使用者名稱>

     建好後,改密碼:

passwd <使用者名稱>

    輸入兩次後, root 可以:

ll /home/

     如果有看到 /home 下面多了使用者的目錄,那就是成功了,然後我們就能用 putty 來連上 Server 與操作。

 

     當我們用 ssh 連上 Server 後,第一件事是要改 /etc/ssh/sshd_config 讓 root 不能用 ssh 來登入 Server,

vi /etc/ssh/ssh_config 後,將 PermitRootLogin 這個設定改為  "PermitRootLogin no"

     修改完成後,理論上是重啟 sshd 就可以:

service sshd restart

或 

/etc/rc.d/sshd restart

應該要可以限制 root 登入,但 CentOS 7 卻要 reboot 剛剛的修改才會生效,所以我們就再 reboot 一次。

 

    重開後,我們用 root putty 看看:

     root 真的就無法 SSH 了。

 

     剛剛我們將 CentOS 7 燒錄到 SD 時,有說到 官方有準備好指令讓我們調整 Partition,

我們先將 SD 卡的 Partition 調整好,如此才能有效的運用到整張的 SD 卡,否則 SD 買再大的也沒用!?

我們來看看官方教的指令效果如何?官方的 README 說可透過下列指令來調整 Partition:

 /usr/local/bin/rootfs-expand

    我們先看看調整前的磁碟使用狀況,指令是:df 

    嗯~ 主磁碟機使用率是 68%...高的嚇人...好,我們用官方教的指令試試: 

 /usr/local/bin/rootfs-expand

    執行完成後,再來看看成果如何?一樣用 df

    看起來...68%掉到 2%,但是...這個數字是因人而異的,因為我用的是 128G 的 SD 卡...XD

所以,透過官方教的指令,便能將 SD 卡全部的使用而沒有浪費。  (調整完可以重開一次機...)

 

    CentOS 官方在 root 的 home (/root) 裡放了一個 README 檔,相信很多人都不知道...至少沒看...

    README 的內容如下圖: 

     它說了兩件事:

第一 就是教我們怎麼取回 SD 卡的容量...這點剛剛已經做完了。

第二 就是安裝 CentOS 7 for arm 的 wifi 元件,這個元件用 yum 是找不到滴。

 

     wifi元件若妳有需要就自己安裝,我就不教學了,因為在上文我已經設定了 PPPoE 的連線了,我用不到 wifi;

樹莓派還有 Bluetooth 的功能,但我搜尋過 (老狗也會用網路的 XD) CentOS 目前好像不支援 Bluetooth,

這點我倒覺得有點遺憾...我在福州買的 Pii 籃芽小鼠鍵盤用不上啊~

 

    OK,回魂...我們的主磁碟機設好了,整張 SD 卡都可以使用了,接著來設定 CentOS 7 的系統語系,

照 CentOS 7 的公開資料裡說的,CentOS 提供的 CentOS 7 for arm 並沒有設定語系,

我們先來驗證一下,用 localectl 指令來查看 (要先 su - 喔):

真的 -- System Locale: n/a,那我們查查看,CentOS 支援了我們台灣哪種語系?用下列指令:

 localectl list-locales | grep "zh_TW"

令人意外的,居然有支援大五碼!好吧,就當意外之喜,但是...作業系統支援 PostgreSQL 並不支援,

所以大五碼就別想了,乖乖的用 UTF8 吧...用下列指令來設定語系:

localectl set-locale LANG=zh_TW.utf8

下完指令,系統沒有什麼反應,所以立刻再查一次看看...

很好,語系已經被設定成我們指定的語系,在繼續前,請先重新開機,開機後確認一下,系統語系是否依然是剛剛的設定值?

請重新開機,之後用:

 localectl

來檢查語系,設完中文語系,別忘了...

cd ~

vi .bash_profile

在最後面加上:

LANG=C

這樣,系統的回應才不會變亂碼,上面第一張圖是 root 的 home,記得妳建的一般 User 也要改喔!

CentOS 裡 ''~' 就是 user 的 home...

 

 

     接著,我們安裝我們的舞台 -- gcc,請用下面指令:

su -

yum search gcc

出現了好多元件...但是...不能只裝 gcc,因為在寫程式過程,有可能會用的一些 Library...

所以正確的作法:

yum group install "Development Tools"

下完指令,yum 會去找"Development Tools" 的所有元件,然後問妳要不要?

我們當然要...所以回答 y+ Enter,然後 yum 就開始努力的裝...抽支煙,喝口水回來後,出現:

看來應該是裝好了,但那是我們的舞台,所以要再次確認,下:

whereis gcc

gcc --version

得到滿意的答覆後,確認 gcc 已經正確的安裝。 

 

    裝完 gcc,再來就是 PostgreSQL 的安裝,安裝指令:

yum install postgresql-server postgresql-contrib

又問歪不歪?當然歪...

接著再裝:

yum install postgresql-devel.armv7hl -y

完成後,再裝

yum install postgresql-upgrade.armv7hl -y

以上四個 PostgreSQL 的元件裝好後,可以用

yum list postgre*

來確認裝了哪些元件

可以看到,還有一些 perl 及 Java 的元件未安裝,所以如果妳會用到 perl 或 Java,那就要安裝這些元件。

 

以上安裝完成!但還不能用,因為要 Initial Database ,指令:

postgresql-setup initdb

postgresql initial 好之後,要把它啟動,並且讓系統開機就執行...

設定讓系統開機啟動 PostgreSQL 的指令:

systemctl enable postgresql

啟動 PostgreSQL 的指令:

systemctl start postgresql

 

     跟著上面做到這邊,剛剛我們用 yum list postgre* 確認了安裝的元件,現在我們來確認很重要的 ecpg 是否存在?

所以跟確認 gcc 一樣,先 whereis 一下,然後再 version 一下...

到這裡,PostgreSQL 算是安裝完成,接下來就是建 Tablespace、建 User、 建 Database...

 

    裝完 PostgreSQL 後,我們先講外掛硬碟,因為資料庫的 tablespace 應該是放到外掛硬碟會比較合適,

否則那小小的 SD 卡,應該隨時都有爆卡的危機!

 

    在開始掛硬碟之前,建議是再做一次 SD 卡的備份.... 

 

    要外掛硬碟,請選一顆好一點的硬碟,最好別單一 USB 供電的隨身碟,樹莓派的電源也是吃 USB 5V 的電源,

要是還要供電給 USB 硬碟...我上一次的 Server 就是這樣掛掉的。

上圖就是 USB 單一供電的硬碟 ---> X

下圖就是獨立電源的硬碟 -->O

 

     這次我用 SATA 介面外接電源轉 USB 80G 硬碟 ...

 

     備份完成,插上 SD 卡,將外掛的硬碟插上後開機,開機完先切到 root,下下列指令:

fdisk -l

可以看到,有一顆 /dev/sda 80 GB 的硬碟,它有三個 Partition,分別是  /dev/sda1  /dev/sda2  /dev/sda5

這不是一顆乾淨的硬碟,所以先將 Partition 清掉:

fdisk /dev/sda

fdisk 是互動式的介面,下 m 可看到所有的指令

刪除 Paration 是用 d,所以下 d + Enter

詢問要 Delete 哪一個 Partiton,一般我們是由最後面的 Partition 往前殺,這裡有三個  Partition,為 5、2、1,

所以先殺 5 再 2 再 1...

Partition 清完,下 p 可看看目前狀況

再來是建立新的 Partiton ...

建 Partition 是 n

然後會問 Partiton Type,我要建的是主要的 Partition,所以按 p

接著問 Partiton number,直接按 Enter 就用 default 值,

後面就是 開始的 Sector 跟結束的 Sector,我是要切整顆,所以全部都用 Enter 來接受 default 值,就是整顆...

最後要按 w 來將新的 Partition 寫入...

fdisk 遇到 w 指令後,除了將設定的 Partition 寫入外,會順便把使用者踢出去...

我們用 fdisk -l 看看剛剛操作的結果:

可以看到,變成只有一個 Partition,叫做 /dev/sda1,再來是將 /dev/sda1 做 Format ,指令是:

mkfs -t ext4 /dev/sda1

 

     ext4 是指定檔案格式,是目前 Linux base 最新的檔案格式,之前在中龍,ext4 還太新,

那時我跟宋兄還在猶豫要不要用...XD

Format 速度很快...硬碟 Format 好了,但還不能用,因為要將硬碟掛起來才可以使用,

用 mount 來掛硬碟...下次開機,Mount 的東西就不見了,所以用 Mount 是臨時要讀 USB 隨身碟或掛光碟機用的,

要永久掛載就必需使用 UUID 來掛硬碟;可以先下 blkid  來查詢硬碟的 UUID

可以看到 /dev/sda1 的 UUID= ... 很長的一串,接著只要修改 /etc/fstab 檔案,在 /etc/fstab 裡加上:

UUID=c5a32c3a-ad14-4330-8c52-57e23369ef3c /datas ext4 defaults 0 0

fstab 共有六個欄位:

1. UUID

2. 掛載點

3. 檔案型態

4. 檔案系統參數 -

          async/sync、auto/noauto、rw/ro、exec/noexec、user/nouser、suid/nosuid、

          defaults:同時具有 rw, suid, dev, exec, auto, nouser, async 等參數。 基本上,預設情況使用 defaults 設定即可! 

5. 能否被 dump 備份指令作用

6. 是否以 fsck 檢驗磁區

 

    掛好後,就可以 reboot, 看看重開後是否新硬碟會生效?重新開機後,下 df 指令:

可以看到 /dev/sda1 已經被系統 Mount 起來了,掛載點是 /datas

但有一點要注意,/datas 除了 root ,任何使用者都無法存取!連 root 他爸爸都不能用...那...那要怎麼辦?

 

    我們接著回來講 PostgreSQL 後續的 DB、Tablespace、User 的建立...

其實,以上三者的建立,在中龍 BOF 2-2 的 「PostgreSQLVer 8.3.7 安裝方式.doc」Step 8(含)之後完全一樣!

用 yum 安裝 PostgreSQL 的好處是,懶...「PostgreSQLVer 8.3.7 安裝方式.doc」這份文件的 Step 8 以前的步驟全部由 yum 安裝做完了,

所以只要由 Step 8 開始繼續,就能完成資料庫的建立 (Step 8 Initial DB 剛剛前面有做過了)。

 

     但是,我怎麼把 Tablespace 建在新掛的硬碟?以下是方法...

1. su -

    切換到 root

2. cd /datas

    到 /datas 目錄下  (新掛上去的硬碟)

3. mkdir dbspace

    建立一個目錄 /datas/dbspace 用來放 Tablespace  

4. chown postgres dbspace

    將目錄的 Owner 切給 postgres 

5. chgrp postgres dbspace

    將目錄的 Group 切給 postgres

    完成以上五個動作,postgres 就可以在 /datas/dbspace 目錄下完全的存取,

要讓其他使用者使用 /datas,方法一樣....

 

    在建立 Tablespace 時,只要把 Location='/datas/dbspace' 這樣 PostgreSQL 就會開始使用加掛的硬碟了。 

 

    到此,妳有 PostgreSQL DB、妳有 gcc,妳可以用 ipc,可以寫 Socket,可以把 BOF2-2 整個 Source Code

摳過來 make....妳的環境跟張同學的完全一樣,所以...一個具備開發環境的 CentOS 7 on 樹莓就完成。

 

    以上,講完,若有問題,可以問我...

 

    這樣的一個開發環境,隨時可以帶著走,雖然大家都習慣用 VM ,但樹莓還是有它的強處,等妳慢慢去體會....

 

整個裝好,我的個人 Server 長這樣:

啊~令人害羞的裸機...一個比樹莓還大的風散吹涼涼的,不會發燒...顆顆

------------------------------------------------------------------- 謝 謝 收 看 ★ 祝 妳 學 習 愉 快 -------------------------------------------------------- by Pony 2017/07/23

 

 

     怎麼讓妳隨時知道妳的樹莓現在的 Internet 實際 IP 是多少?讓樹莓變成妳的私人雲端,隨時可存取妳的樹莓?

想做到這樣再Call 我,我再跟妳說怎麼做。ㄎㄎㄎ...XD 

 

------ 後 記 ---------------------------------------------------------------------------------------------------------------------------------------------------

2017/08/21

     使用 CentOS 7 開發機器人一個月後,我放棄 CentOS 7 了,

如果拿 CentOS 7 來當 Server,那絕對沒有什麼問題,

但如果要用 CentOS 7 來使用樹莓的 GPIO ...那問題就不小了!

 

     有注意到樹莓派的 『一邊』有一排接腳嗎?如下圖:

     這些接腳叫做 GPIO 接腳,共有 40 Pin;若妳對妳的樹莓派下 「gpio readall」指令,

妳將會看到下圖:

     這張圖說明了那一排 40 pin 接腳的用途,所以可以看到,樹莓提供了兩個 5v 輸出、

兩個 3.3v 輸出、8個 0v (接地或叫負極),也就是 40 - 12 = 28,樹莓共有 28 個 GPIO 可以使用,

若是單純只是當 GPIO 來用,那 CentOS 7 也沒什麼問題,而問題是...

這 28 個 GPIO 包括 2 組 I2C 介面及一組 SPI 介面。

 

    什麼是 GPIO? 簡單講就是 DI/DO。

    什麼是 I2C?這...有點難說明,請自行辜一下 I2C...簡單講就是利用 DI/DO 與設備通訊的 protocol。

    什麼是 SPI?簡單講就是 DI/O (Digital I/O) 與 AI/O (Analog I/O) 的轉換介面,詳細請自行辜狗。

     玩了一個月...I2C 介面在 CentOS 7 裡,還能克服,但 SPI 介面就完全不行了!

樹莓要使用 AI/O 設備,只能透過 SPI 介面!但 CentOS 7 卻不支援 SPI !我的天啊...

 

     所以....我只好回去使用 Raspberry Pi 建議的 Debian 了...Orz,

如果妳會使用到 AI/O 設備,還是乖乖灌 Debian 吧,

如果...Debian 也需要教學,再跟我說。