樹莓派 Raspberry Pi Zero W 安裝與設定 (MacOS)
準備
硬體
- 一台 MacOS 電腦
- 樹莓派 zero 一張 + 線材
- SD card 一張
- SD card 讀卡機
軟體
- 官網下載系統映像檔,下載哪種都可以,這邊因為 zero 版本效能沒那麼好,所以選
Raspberry Pi OS (32-bit) Lite
做最小安裝。下完後記得解壓縮,會得到.img
的檔案
安裝系統
先把 SD card 讀卡機連到電腦,並把卡插入。
插入後到 Terminal
下,確認該卡標示是啥
$ diskutil list
/dev/disk2 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: FDisk_partition_scheme *31.6 GB disk2
1: Windows_FAT_32 NO NAME 31.6 GB disk2s1
以我的裝置為例,disk2
就是該卡的標示,而 disk2s1 則是那張卡的硬碟分區標示。
因為寫入映像檔是用 raw disk mode 寫的,所以先卸載硬碟分區。
注意,一定要使用指令,或是從
Disk Utility.app
。在 Finder 介面點卸載圖示是不會完全卸載的。
$ diskutil unmount /dev/disk2s1
Volume NO NAME on disk2s1 unmounted
接下來使用 dd
指令將下載好的映像檔寫到卡上。
注意,這是直接寫到卡上,會抹除卡上所有資料!
記得這邊 disk2 標示前有加一個 r
,這是告訴系統是 raw disk mode 寫進去,可增進寫入效能
$ sudo dd if=~/2020-08-20-raspios-buster-armhf-lite.img of=/dev/rdisk2 bs=1m
1634+1 records in
1634+1 records out
1714094080 bytes (1.7 GB, 1.6 GiB) copied, 145.624 s, 11.8 MB/s
遇到錯誤:
dd: invalid number: ‘1m’
,代表你用的dd
版本可能是 GNU 的 (gnubin),請把 bs=1m 改為bs=1M
>dd: failed to open '/dev/rdisk2': Resource busy
代表你沒卸載,請重插卡,再輸入指令卸載一次。
系統設定
灌好的 SD card 硬碟名稱應該是叫 boot,用指令確認下路徑
diskutil list
ls -al /Volumes/boot/
允許 ssh 連入
在卡創建一個空的檔案,名稱為 ssh
touch /Volumes/boot/ssh
Wifi 網路 (這個跟
經由 USB ssh
選一個做)
讓樹莓派開機就可以直接抓到網路,方便 ssh 直接連入。
在卡創建檔案,名稱為 wpa_supplicant.conf
,內容為:
country=TW
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="network-name"
psk="network-password"
}
這邊 country 是 ISO 3166 alpha2 標準。主要影響的是 Wifi 頻段。
詳細設定可看此
Wifi 斷線重連
避免 Wifi 斷線,要做個重連。
創建一支 check_wifi.sh
來偵測 wlan0
有沒連到網路,沒連到的話自動重啟網卡
#!/bin/bash
cmd="sudo ifconfig wlan0"
expect_ip="192.168."
if ! $cmd | grep -q "$expect_ip"; then
$cmd down
$cmd up
fi
然後做一個 service check_wifi.service
[Unit]
Description=Check Wifi status and auto restart
Requires=networking.service
[Service]
ExecStart=/path/to/check_wifi.sh
[Install]
WantedBy=multi-user.target
再做一個 check_wifi.timer
[Unit]
Description=Run every 2 minutes
[Timer]
OnCalendar=*:0/2
[Install]
WantedBy=multi-user.target
最後啟用他們
sudo systemctl link "/path/to/check_wifi.service"
sudo systemctl enable "/path/to/check_wifi.timer"
sudo systemctl start "check_wifi.timer"
經由 USB ssh
有時 Wifi 太慢,直連 USB 快速救援。
打開 config.txt
,在最後加上一行
dtoverlay=dwc2
再打開 cmdline.txt
,在 rootwait
的後面加上 modules-load=dwc2,g_ether
... rootwait modules-load=dwc2,g_ether ...
開機測試
先從電腦上卸載 SD card
diskutil eject /dev/disk2
取出卡片裝到樹莓派上,並且接好電源
樹莓派有兩個 micro USB 接口,若是要使用 USB ssh 連入的話,記得要插到上面寫 USB 的那個不要插到 PWR 的。
接好線後就會自動開機,等到電源燈不閃爍大概就是開好機了,
開好機後,ssh [email protected]
連入,預設密碼是 raspberry
。
接下來就是一般正常 debian linux 操作。
注意一下樹莓派是 ARM 架構,不是 x64/x86,若是忘記到時候編譯不過就搞笑了...