---
# System prepended metadata

title: Rpi環境設置
tags: [Linux, ECEproject]

---

Rpi環境設置
===
###### tags: `ECEproject` `Linux`

    - 在linux安裝Rapbian
    - 在開機之前開啟ssh連線 和 設定 Wi-Fi 連線
    - 設定時區、密碼等等
---
## 在linux安裝Rapbian
1. 在 terminal 上輸入```lsblk```尋找 microSD 的位址
    * 位址可能會是```/dev/mmcblk0```或是```/dev/sdX```，（然後之下可能又有分區像是```/dev/mmcblk0p1```或是```/dev/sdX1```），X代表某個小寫字母（例：```/dev/sdb1```）
    
2. 取消掛載```umount```該 microSD 所有已掛載的分區，(例：```umount /dev/sdXn```)，n代表某個分區的數字。

3. 格式化磁區
```sudo mkdosfs -F 32 -v /dev/sdb1```

4. 複製 Image 檔到 microSD 卡
    * ```dd bs=4M if=[the .img file] of=[microSD address] conv=fsync```
        * 例：```dd bs=4M if=2018-06-27-raspbian-stretch.img of=/dev/sdX conv=fsync```
    * **ps1:** 特別小心microSD的位址不要寫錯！
    * **ps2:** 位址是整個microSD卡的位址，不是microSD卡下的分區位址，（例：是```/dev/sdb```而不是```/dev/sdb1```，或是```/dev/mmcblk0```而不會是```/dev/mmcblk0p1```）
    * 如果```bs=4M```無法運作，改成```bs=1M```。

5. 如果 (4.) 沒有.img檔，也可以複製 Zipped Image 檔到 microSD 卡
    * 如果是 .zip 檔，需要解壓縮(```unzip```)：
        * ```unzip -p 2018-04-18-raspbian-stretch.zip | sudo dd of=/dev/sdX bs=4M conv=fsync```

    (4. 5. 如果要看下載進度，在加上```status```參數：```status=progerss```)

6. 檢查複製的結果是否正確
    * 複製 microSD 卡的內容回本機硬碟
        * ```dd bs=4M if=/dev/sdX of=from-sd-card.img```
    * 把大於原始 .img 檔的部份去除掉（```truncate```）
        * ```truncate --reference 2018-04-18-raspbian-stretch.img from-sd-card.img```
            * ```--reference```的參數是原始.img檔名
    * 比較兩者不同
        * ```diff -s from-sd-card.img 2018-04-18-raspbian-stretch.img```
    
7. 在 terminal上 輸入```sync```。確保 write cache 已經被清掉，才可以取消掛載 microSD 並拔除。

### Reference
- [INSTALLING OPERATING SYSTEM IMAGES ON LINUX](https://www.raspberrypi.org/documentation/installation/installing-images/linux.md)
- [Linux 使用 dd 指令將 ISO 檔製作成 Live USB 隨身碟](https://blog.gtwang.org/linux/linux-dd-command-write-iso-to-usb-flash-drive/)
---
## 在開機之前開啟ssh連線 和 設定 Wi-Fi 連線
### 開啟ssh連線
* Rasbian
    * 在 microSD 的資料夾 boot/ 中，加入一個檔名為 ssh 的空檔案，之後插入 rpi 開機。
* Ubuntu Mate
    * 沒有內建ssh server, 需要進入GUI 安裝ssh server，和更改conf檔案。

### 設定 Wi-Fi 連線
1. interfaces
* 在 microSD下，直接更改root/下的檔案資料）
```sudo vi /media/user/pi_root/etc/network/interfaces```
```
# lo
auto lo
iface lo inet loopback

# eth0
allow-hotplug eth0
iface eth0 inet dhcp

# wlan0
auto wlan0
allow-hotplug wlan0

iface wlan0 inet dhcp
        wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
```
        
2. wpa_supplicant.conf
* 在 microSD 的資料夾 boot/ 中，建立一個新檔案 wpa_supplicant.conf 
（或是直接更改root/下的檔案資料）
```sudo vi /media/user/pi_root/etc/wpa_supplicant/wpa_supplicant.conf```
* 檔案內容： 
    ```
    country=TW
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
    update_config=1

    network={
        ssid="SSID_NAME"    # Wi-Fi 的名稱
        psk="SSID_KEY"      # Wi-Fi 的密碼
        key_mgmt=WPA-PSK    # Wi-Fi 認證方式
                            # 注意 '=' 的兩側不要多加空格
    } 
    ```
    
### Reference
[Raspberry Pi 的基礎 - 沒螢幕、沒鍵盤、沒網路，居然也能設定 Wi-FI 連線](http://blog.itist.tw/2017/03/headless-wifi-setup-without-monitor-keyboard-or-cables-for-raspberry-pi-zero-w-and-3-model-b.html)
[Linux 網路設定 筆記](https://hackmd.io/n40ONTaWRBurPH1gR-9kdQ?both)
* man page
    [wpa_supplicant.conf (5) - Linux Man Pages](https://www.systutorials.com/docs/linux/man/5-wpa_supplicant.conf/)
    
---
## 設定時區、密碼等等

### Reference
[[Raspberry Pi 3] 老朋友，新功能！關於那些開箱後馬上要作的事](http://blog.itist.tw/2016/03/clean-installation-and-setup-on-raspbian-jessie.html)