2017年4月2日 星期日

Pi Zero W 與 Pi 3 安裝 Raspbian

3/22 收到 Pi 3 以及 3/30 收到 Pi Zero W 後想要測試板子是否正常, 想把前次安裝好 R 與 Python機器學習套件製作的映像檔燒錄到創見 8G TF 卡卻發生 Size not enough 問題, 搞了一個禮拜企圖將映像檔瘦身卻不可行後只好放棄, 乾脆重新安裝 Raspbian 算了. 參考 :

樹莓派寫入映像檔時出現 not enough size 問題

會出現這問題主要是因為我之前製作的映像檔是在第一代樹莓派上備份的, 它使用大卡 ( TOPRAM SD 卡), 而 Pi Zero/Pi 3 使用小卡 (Trancend micro SD, 又稱 TF 卡), 雖然都是 8G 記憶卡, 但其內部可用容量不同 (即使是同樣創見 8G TF 卡都有可能不一樣), TOPRAM 的可用容量較大, 用 Win32DiskImager 做出來的映像檔也較大, 因此無法寫入較小的創見 TF 卡中.

把時間浪費在研究映像檔如何瘦身不值得, 於是決定重新在 Pi Zero W 的創見 TF 卡上安裝 Raspbian, 這樣備份出來的映像檔會比較小. 去下載新版 Raspbian 發現 Raspbian 已有 2017-03-02 新版 :


燒錄 Raspbian 後先完成 raspbian-config 的設定, 再安裝 zip 與 PHP 與 sSMTP 等基本工具, 以及 Python 與 R 的機器學習套件, 過程就不記錄了, 僅摘要所下指令, 詳細參考 :

# 樹莓派重新安裝 Raspbian 作業系統
# 在樹莓派上安裝 R 語言
樹莓派安裝 Python2 scikit-learn 函式庫
# 樹莓派安裝 Python3 scikit-learn 函式庫

一. 基本工具 :

$ sudo apt-get install zip unzip

二. 安裝 Apache + PHP + MySQL 網頁伺服器與 phpMyAdmin :

$ sudo apt-get install apache2
$ sudo apt-get install php5 libapache2-mod-php5sudo service apache2 restart
$ sudo apt-get install mysql-server mysql-client php5-mysql
$ sudo apt-get install php5-mcrypt
$ tar -jxf phpMyAdmin-4.6.6-all-languages.tar.bz2
$ mv phpMyAdmin-4.6.6-all-languages mysql
$ sudo mv mysql /var/www/html
$ sudo service apache2 restart

三. 安裝 Python 機器學習套件 :

for Python 3 :

$ sudo apt-get install python3-numpy
$ sudo apt-get install python3-scipy
$ sudo apt-get install python3-matplotlib
$ sudo apt-get install python3-pandas
$ sudo pip3 install scikit-learn -U

for Python 2 :

$ sudo apt-get install python-numpy
sudo apt-get install python-scipy
$ sudo apt-get install python-matplotlib
$ sudo apt-get install python-pandas
$ sudo pip install scikit-learn -U

四. 安裝 R 語言

安裝 R 語言前最好先更新已安裝套件清單並升級 :

$ sudo apt-get update 
$ sudo apt-get upgrade 
$ sudo apt-get install r-base

這樣便在 Pi Zero W 上安裝好 Raspbian 以及我研究機器學習所需要的工具了, 用 pip list 與 pip3 list 指令檢查已安裝套件清單 :

pi@raspberrypi:~ $ pip list
argparse (1.2.1)
beautifulsoup4 (4.3.2)
blinker (1.3)
chardet (2.3.0)
colorama (0.3.2)
decorator (3.4.0)
Flask (0.10.1)
gpiozero (1.3.2)
html5lib (0.999)
itsdangerous (0.24)
Jinja2 (2.7.3)
joblib (0.8.3)
lxkeymap (0.1)
MarkupSafe (0.23)
matplotlib (1.4.2)
mcpi (0.1.1)
mock (1.0.1)
ndg-httpsclient (0.3.2)
nose (1.3.4)
numexpr (2.4)
numpy (1.8.2)
openpyxl (1.7.0)
pandas (0.14.1)
picamera (1.13)
picraft (1.0)
pifacecommon (4.2.1)
pifacedigitalio (3.1.0)
pigpio (1.35)
Pillow (2.6.1)
pip (1.5.6)
pyasn1 (0.1.7)
pygame (1.9.2a0)
pygobject (3.14.0)
pyinotify (0.9.4)
pyOpenSSL (0.13.1)
pyparsing (2.0.3)
pyserial (2.6)
python-apt (0.9.3.12)
python-dateutil (2.2)
pytz (2012c)
requests (2.4.3)
RPi.GPIO (0.6.3)
RTIMULib (7.2.1)
scikit-learn (0.18.1)
scipy (0.14.0)
sense-emu (1.0)
sense-hat (2.2.0)
setuptools (5.5.1)
simplejson (3.6.5)
six (1.8.0)
smbus (1.1)
spidev (3.0)
statsmodels (0.4.2)
tables (3.1.1)
twython (3.1.2)
urllib3 (1.9.1)
Werkzeug (0.9.6)
wheel (0.24.0)
wsgiref (0.1.2)
xlrd (0.9.2)
xlwt (0.7.5)

pi@raspberrypi:~ $ pip3 list
beautifulsoup4 (4.3.2)
chardet (2.3.0)
codebug-i2c-tether (0.2.3)
codebug-tether (0.7.0)
colorama (0.3.2)
decorator (3.4.0)
Flask (0.10.1)
gpiozero (1.3.2)
html5lib (0.999)
itsdangerous (0.24)
Jinja2 (2.7.3)
lxml (3.4.0)
MarkupSafe (0.23)
matplotlib (1.4.2)
mcpi (0.1.1)
nose (1.3.4)
numexpr (2.4)
numpy (1.8.2)
pandas (0.14.1)
pgzero (1.1)
picamera (1.13)
picraft (1.0)
pifacecommon (4.2.1)
pifacedigitalio (3.1.0)
pigpio (1.35)
Pillow (2.6.1)
pip (1.5.6)
pygame (1.9.2a0)
pygobject (3.14.0)
pyinotify (0.9.4)
pyOpenSSL (0.13.1)
pyparsing (2.0.3)
pyserial (2.6)
python-apt (0.9.3.12)
python-dateutil (2.2)
python-debian (0.1.27)
pytz (2012c)
requests (2.4.3)
RPi.GPIO (0.6.3)
RTIMULib (7.2.1)
scikit-learn (0.18.1)
scipy (0.14.0)
sense-emu (1.0)
sense-hat (2.2.0)
setuptools (5.5.1)
six (1.8.0)
smbus (1.1)
spidev (3.0)
tables (3.1.1)
twython (3.1.2)
urllib3 (1.9.1)
Werkzeug (0.9.6)
wheel (0.24.0)

下面是剛安裝完 Raspbian 後 SD 卡的使用情形 :

pi@raspberrypi:~ $ df -Bm
Filesystem     1M-blocks  Used Available Use% Mounted on
/dev/root          7270M 4345M     2571M  63% /
devtmpfs            182M    0M      182M   0% /dev
tmpfs               186M    0M      186M   0% /dev/shm
tmpfs               186M    5M      182M   3% /run
tmpfs                 5M    1M        5M   1% /run/lock
tmpfs               186M    0M      186M   0% /sys/fs/cgroup
/dev/mmcblk0p1       63M   21M       42M  33% /boot
tmpfs                38M    0M       38M   0% /run/user/1000

下面則是安裝全部所需套件後的使用情形 :

pi@raspberrypi:~ $ df -Bm
Filesystem     1M-blocks  Used Available Use% Mounted on
/dev/root          7270M 4722M     2194M  69% /
devtmpfs            427M    0M      427M   0% /dev
tmpfs               432M    0M      432M   0% /dev/shm
tmpfs               432M    6M      426M   2% /run
tmpfs                 5M    1M        5M   1% /run/lock
tmpfs               432M    0M      432M   0% /sys/fs/cgroup
/dev/mmcblk0p1       63M   21M       42M  33% /boot
tmpfs                87M    0M       87M   0% /run/user/1000

因此上面所安裝的套件大約是 377MB 左右. 此 Transcend 8G TF 卡所備份的映像檔大小為 7761920KB (=7948206080 Bytes) :


而之前在第一代樹莓派上的 TOPRAM SD 大卡備份出來的映像檔大小是 7782400KB (=7969177600 Bytes), TOPRAM 的 SD  可用容量真的比 Transcend 的多了 20971520 Bytes (=20480 KB) :


我把這片新的卡放到 Pi 3 去跑一切 OK, 代表這片以 1000 元超便宜價新買的 Pi 3 也驗收過關啦! 其次以新的映像檔燒錄到可用容量大了 21MB 左右的 TOPRAM 8G SD 大卡上也沒問題, 這樣只要保留最新的映像檔即可, 以前的舊檔可以全部刪除了.

參考 :

Script to run some benchmark test for Raspberry Pi

沒有留言 :