Try   HackMD

樹梅派大補帖 2.0

硬體設備

  • Raspberry Pi 3 Model B
  • USB to TTL 線
  • MicroSD card
  • (Option) MicroSD 轉 SD card
  • (Option) 讀卡機
  • (Option) 電源供應用 micro usb

燒錄

下載作業系統 Raspbian

Download Raspbian from Official


選用 NOOBS - 圖形化新手安裝系統
提供 Raspbian 及其他作業系統 (如:Windows 10 IOT) 的安裝介面

  • NOOBS 包含預載 Raspbian 和 LibreELEC (多媒體系統)
  • NOOBS Lite 沒有預載,但仍然可以透過網路下載安裝作業系統

NOOBS 可供下載安裝的作業系統有

  • Raspbian
  • LibreELEC
  • OSMC
  • Recalbox
  • Lakka
  • RISC OS
  • Screenly OSE
  • Windows 10 IoT Core
  • TLXOS

(Bonus Issue) 掛載內建 SD Card Reader 到 VirtualBox (不建議使用)

如果今天你是外接 USB 讀卡器,恭喜你!可以輕鬆掛載到 VirtualBox 透過 裝置->USB->選擇裝置 就可以了,如果不是呢(繼續閱讀)

  • Windows
    1. 以系統管理員打開 CMD
    2. 輸入 wmic diskdrive list brief 查詢掛載磁碟位置
    3. 找到 VirtualBox 安裝路徑並使用
    ​​​​## D:\Program Files\Oracle\VirtualBox\ 請替換成自己的安裝路徑 ​​​​## D:\VirtualBox\ 請替換成自己要存放虛擬硬碟檔案的位置 (資料夾必須已經存在或自己建) ​​​​## \\.\PHYSICALDRIVE2 請換成剛剛查到的 SD Card DeviceID ​​​​"D:\Program Files\Oracle\VirtualBox\VBoxManage" internalcommands createrawvmdk -filename "D:\VirtualBox\sdcard.vmdk" -rawdisk "\\.\PHYSICALDRIVE2"
    1. 將虛擬硬碟檔案掛載至虛擬機
      • 按下 控制器 SATA 打勾 Use Host I/O cache 並旁按右邊的 磁碟+ 設定
    • Trouble Shoot
      • 遇到這個情況請確定你有打勾 Use Host I/O cache
      • 遇到這個情況請依循下面步驟
        1. 以工作管理員打開 CMD
        2. 檢查掛載的虛擬硬碟
          ​​​​​​​​​​​​​​​​## D:\Program Files\Oracle\VirtualBox\ 請替換成自己的安裝路徑 ​​​​​​​​​​​​​​​​"D:\Program Files\Oracle\VirtualBox\VBoxManage" list hdds
        3. 關閉媒體
          ​​​​​​​​​​​​​​​​## D:\Program Files\Oracle\VirtualBox\ 請替換成自己的安裝路徑 ​​​​​​​​​​​​​​​​"D:\Program Files\Oracle\VirtualBox\VBoxManage" closemedium disk SD卡的虛擬硬碟UUID
  • MacOS
    1. 查看記憶卡掛載位置
    ​​​​diskutil list
    1. 移除掛載
    ​​​​diskutil unmountDisk 記憶卡掛載位置
    1. 建立虛擬硬碟
    ​​​​sudo VBoxManage internalcommands createrawvmdk -filename 路徑/檔名.vmdk -rawdisk 記憶卡掛載位置
    1. 更改檔案權限
    ​​​​sudo chmod 666 路徑/檔名.vmdk ​​​​sudo chmod 666 記憶卡掛載位置
    1. 將虛擬硬碟檔案掛載至虛擬機
      • 按下 控制器 SATA 打勾 Use Host I/O cache 並旁按右邊的 磁碟+ 設定

格式化記憶卡 (建議在原生系統下進行)

  • Linux、Ubuntu

    • 終端機 Terminal
      1. 查看記憶卡掛載位置
      ​​​​​​​​sudo fdisk -l ​​​​​​​​## 或 ​​​​​​​​lsblk -p

      2. 卸載記憶卡
      ​​​​​​​​sudo umount 記憶卡掛載位置
      1. 格式化記憶卡 Parted 簡易教學
      ​​​​​​​​## fdisk 僅能處理到 2TB 的磁碟 / 如果要用 2TB 以上的請使用 parted ​​​​​​​​sudo fdisk /dev/記憶卡掛載位置 ​​​​​​​​## 接著會進入 fdisk 互動模式 ​​​​​​​​## 移除現有分割區 ​​​​​​​​輸入 `d` 可以刪除分割區(如果有複數個分割區會有數字選擇) ​​​​​​​​## 新增分割區 ​​​​​​​​輸入 `n` 可以建立分割區 ​​​​​​​​ 輸入 `p` 選擇建立主要分割區 ​​​​​​​​ 接著輸入 `1` 建立第一個分割區 ​​​​​​​​ 接著輸入分割區起始 sector (這邊按兩次 Enter 用預設的就是始至末) ​​​​​​​​輸入 `t` 可以對分割區進行格式化 ​​​​​​​​ 如果有複數個分割區會再選擇分割區 ​​​​​​​​ 輸入 `L` 可以看目前支援的格式代碼 ​​​​​​​​ 輸入 `b` 可以選擇 W95 FAT32 格式 ​​​​​​​​輸入 `w` 把更動寫入記憶卡
      1. 掛載記憶卡
      ​​​​​​​​sudo mount 記憶卡掛載位置
    • 圖形化介面
      1. 安裝 Gparted
        • sudo apt install gparted
        • sudo gparted
      2. 使用內建磁碟軟體進行格式化
  • MacOS

    • 終端機 Terminal

      1. 查看記憶卡掛載位置
      ​​​​​​​​diskutil list


      2. 卸載記憶卡

      ​​​​​​​​diskutil umountDisk 記憶卡掛載位置
      1. 格式化記憶卡
      ​​​​​​​​diskutil eraseDisk FAT32 記憶卡名稱(全大寫) MBRFormat 記憶卡掛載位置

    • [Option] 圖形化介面

      1. 打開磁碟工具程式並顯示所有裝置
      2. 針對裝置進行清除
  • Windows

    • 命令提示字元 CMD

      1. 打開 CMD (Win + R)
      2. 打開磁碟工具 diskpart (會另外開起新的視窗,以下皆在該視窗進行)
        (判斷有無分割可以先使用 list volume 看 SD Card 磁碟區是不是只有一個)
        例如像這樣,只有一個 F:/ 且容量與記憶卡相差甚遠,表示有另外進行切割
      • 磁碟區有分割(需要合併的情況)
        3. 查看記憶卡掛載磁碟 list disk
        4. 選擇磁碟 select disk 磁碟編號(###)
        5. 清除磁碟設定 clean
        6. 建立磁碟分割 CREATE PARTITION PRIMARY
        - 這邊可以加上 SIZE=容量(MB) 指定切割的大小
        - 主要分割區 PRIMARY 之外是使用 EXTENDED 標記延伸分割區
        7. 指定掛載的位置 ASSIGN LETTER=英文代號
        - 這邊代號請不要跟原本已經掛載的重複(有防呆)
      • 磁碟區未分割的情況
        3. 查看記憶卡掛載位置 list volume
        4. 選擇記憶卡 select volume 記憶卡的位置編號(### or Ltr)
        5. 快速格式化記憶卡 format fs=fat32 quick
    • [Option] 圖形化介面

      • 磁碟區有分割(需要合併的情況) 使用 磁碟管理 (通常在右鍵 Windows 開始選單裡)
        1. 刪除已分割磁碟區
        2. 新增簡單磁碟區
        3. 全部分配完畢
        4. 幫磁碟區命名
      • 磁碟區未分割的情況

透過 dd 進行燒錄 (Windows 請略過)

cc / convert and copy、dd / data description、dd / data destoryer

  1. 備份
  2. 複製
  3. 編碼轉換
  • Ubuntu
## if -> input file(or 裝置)、of -> output file(or 裝置)、bs -> BlockSize 一次讀寫的區塊大小(預設512 bytes) ## 可以嘗試 bs=4M ## conv=sync, 讀一個區塊寫一個區塊 / conv=fsync, 把區塊讀到磁碟快取, 通通讀完後一次寫入 ## status=progress 顯示進度 sudo dd if=下載的Raspbian.img of=記憶卡掛載位置 bs=1M status=progress conv=fsync
  • MacOS
## MacOS 沒有進度條也沒有 fsync sudo dd if=下載的Raspbian.img of=記憶卡掛載位置 ## 可以從另外一個 Terminal 下這個指令,原本跑 dd 的頁面會顯示執行狀況 sudo pkill -INFO -x dd

透過 Win32diskmager (Windows Only / 需格式化)

官方載點

  • 需要格式化記憶卡

燒錄方式

  1. 選擇Raspbian映像檔
  2. 選擇裝置掛載位置
  3. 寫入資料到裝置中

透過 Ecther 進行燒錄

官方網站
優點:幫你清除原先分割並燒錄

燒錄方式

  1. 下載、安裝 Etcher
  2. 打開,選擇Raspbian映像檔、記憶卡
  3. 按下Flash!等待完成

設定啟用 Uart

  1. 掛載 SD Card
  2. 打開 boot 找到 config.txt
  3. config.txt 在最底下新增
# Enable uart
enable_uart=1

如果檔案已經鎖定,請重新掛載(或拔掉重插也行)
或是檢查 SD Card 旁邊卡榫不要在 Lock(防寫入) 那邊

開始使用 Raspberry Pi

基本 Knowhow

  1. 完成後將記憶卡插入Raspberry Pi並且接上電源(5V),紅色指示燈為電源、黃色指示燈為記憶卡讀取,如果紅色燈閃爍代表供電不穩。(建議至少 2A 以上供電)

  2. Pi 是一台電腦,跟 Arduino 這類的控制板不同,現在出到第四代了

  3. 上面兩排稱作 GPIO(General-purpose input/output),通用型的輸入輸出,對應的針腳功能如下圖

與 Pi 溝通 / 透過 UART (這邊可以不用使用原生系統)

支援 UART 傳輸的驅動程式

Windows Driver

MacOS Driver

^安裝完可能需要重新啟動

  • Windows

    1. 安裝 PuTTY
    2. 安裝驅動程式
    3. 打開裝置管理員並按更新驅動
    4. 選擇 瀏覽電腦上的驅動程式軟體
    5. 選擇 讓我從電腦上的可用驅動程式清單中挑選
    6. 選擇最新的並按下一步,完成之後就能識別裝置了
    7. 打開 PuTTY 並設定 Session 如附圖,可取的名稱並 Save 設定
    8. 按下 Open
  • MacOS

    1. 在 Terminal 透過 ls /dev/ | grep cu.usb 來找到裝置路徑
    2. 接著用 screen /dev/cu.usbserial 115200 連線
  • Ubuntu

    • screen
    1. 安裝 screen sudo apt install screen
    2. 在 Terminal 透過 ls /dev/ | grep ttyUSB 來找到裝置路徑
    3. sudo screen
    • putty
    1. 在 Terminal 透過 ls /dev/ | grep ttyUSB 來找到裝置路徑
    2. 安裝 putty sudo apt install putty
    3. 打開 putty sudo putty
    4. 接著用照下面設定來連線

預設帳號密碼
帳號:pi
密碼:raspberry

基本設定記憶卡擴展、時區、語系、WIFI 設定

  1. 輸入 sudo raspi-config 進入設定
  2. 擴展記憶卡可使用空間 7.->A1

  3. 設定系統語系 4.->I1
  4. 設定時區 4.->I2 Asia -> Taipei (可以按T)
  5. 設定 WIFI 區域 4.->I4 TW
  6. [Option] 使用 WPA2-PSK Wifi 2.->N2
  7. FINISH

[ISSUE] 802.1X?

wpa_suplicant
WPA(WPA2) Supplicant for Linux, BSD, Mac OS X, and Windows

Scan Wifi / 蒐集 Wifi 資訊

  1. 簡易掃描
## 掃描周圍 Wifi wpa_cli -i wlan0 scan ## 印出掃描結果 wpa_cli -i wlan0 scan_results

  1. 更詳細的資訊
## 利用 iwlist 用 wlan0 掃描 sudo iwlist wlan0 scan > result.txt ## 看掃描結果 cat result.txt

  1. 安裝 vim sudo apt install vim
  2. 修改 wifi 設定檔 sudo vim /etc/wpa_supplicant/wpa_supplicant.conf
  3. 填入 Wifi 資訊
network={ ssid="NCNU(802.1X)" proto=RSN key_mgmt=WPA-EAP pairwise=CCMP auth_alg=OPEN eap=PEAP identity="s+學號" password="信箱密碼" } network={ ssid="MOLi_LEGACY" psk="moli.rocks" }

WPA2 資安議題

WPA2-PSK 可被暴力破解 aircrack-ng

Aircrack-ng是一個與802.11標準的無線網路分析有關的安全軟體,主要功能有:網路偵測,封包嗅探,WEP和WPA/WPA2-PSK破解(字典攻擊)

開機時自動發送 IP 到自己的信箱

關閉 TTL 連線

  • 修改 /boot/cmdline.txt
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

改為

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
  • 再修改 /etc/inittab
#Spawn a getty on Raspberry Pi serial line T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

改為

#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
  • 重開機

Reference

  1. 歷屆 LSA Raspberry pi 資料

  2. 偷我專題夥伴的筆記

  3. 之前專題的筆記資料(已經變成 LSA 歷史資料)