Hsüan's Blog

2020-09-17

樹莓派 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,若是忘記到時候編譯不過就搞笑了...

文獻閱讀

© 2019 ~ 2024 Hsüan, Powered by Gatsby, Theme Material UI