跳到主要內容

架設 Raspberry Pi 4 以 SSD 起動

Raspberry Pi 必須要以 SD 卡啟動,至少就目前來說是這樣。我希望它能以 SSD 作為主要儲存媒體。要達到這個目的,需要做一點修改。以下是在 macOS Catalina 的步驟。


首先,到 https://ubuntu.com/download/raspberry-pi 下載 Ubuntu 18.04 64-bit 版本。把影像檔以 balenaEtcher 分別燒錄到 SD 卡及 SSD。在 Terminal 輸入 lsusb。把 SSD 以 USB 接上電腦,然後再輸入:
$ lsusb
查看多出來的一行的 SSD 的編號。如上圖所示,我的 SSD 編號是 152d:0583,把它記錄下來。插入 SD 卡,打開 /nobtcmd.txt。把「root=LABEL=writable」改為「root=/dev/sda2」。如果使用的是非 ORICO 連接合,則需要在行首輸入「usb-storage.quirks=152d:0583:u 」,那是剛才得到的 SSD 編號。這是告知 Raspberry Pi 啟動的裝置是 SSD。


把 SD 卡和 SSD 都接上 Raspberry Pi 4,然後開機。當成功運行後,輸入:
$ findmnt -n -o SOURCE /
如果顯示 /dev/sda2 代表了正在使用 SSD 作為主要儲架媒體。再以:
$ df -h
觀看 SSD 的大小。我的 SSD 是 512GB,看到哪個 470G 就是了。

參考:
https://krdesigns.com/articles/raspberry-official-ubuntu-18.04.04-bootable-from-USB-SSD-drive
https://jamesachambers.com/raspberry-pi-4-usb-boot-config-guide-for-ssd-flash-drives/

留言

這個網誌中的熱門文章

After Effects 下的影片加速

Fast Forward in After Effects

很久很久沒有剪片了。今個星期接了一個項目,替客人製作兩段影片作為報告之用。雖然這個項目沒有難度,但步驟很多。總算完成了第一段。要在 iPad 中為動畫編程,然後錄下模擬器的動畫,把影片裁好後,還要將原來 2 分 17 秒的影片濃縮到 8 秒。否則看報告的人必然睡著。花了一點時間,才找到影片加速的方法。在 Composite 中點右鍵,選 Time 內的 Time Stretch 後,輸入最終想要的時間長度。

連接 PSVR 到 MacBook Pro

一兩個星期前,在 PS4 Pro 上安裝了 Littlstar 軟件去播放儲存在 USB 的立體影片。豈料今天在自動更新過後,這個免費的軟件現在只能播放兩分鐘,若要播放完整影片,則需要以訂購方式每月付費,或一次過給 US$39.9。對於 Littlstar 這個吸金方法,讀取 USB 影片要收費、官方內容又太少的情況下,很多人亦因此離開,尋找其他方法。其中一個方法是把 PSVR 連接到 macOS 上看。

方法是利用 https://github.com/emoRaivis/MacMorpheus 這個開源程式。先開著 PS4 Pro 及 PSVR,然後如上圖把線重新連接,這樣就能把 MacBook Pro 的畫面投射到 PSVR 上。

Python 按鍵檢測程式

完成了計數器程式後,接著是測試按鍵的程式。程式用來確保接線無誤之外,同時測試怎樣檢測會來得順暢,甚至是確保按鍵時的噪訊處理。以前開發遊戲程式時,在讀取搖桿訊號時會出現噪訊。例如按鍵時,從系統收到的訊號很多時候會像是 0000010101111111,而不會是 000000111111 這麼乾淨。這是硬件無法處理的情況,需要從軟件方面修正。Raspberry Pi 同樣有這種情況。

兩顆按鈕的接線非常簡單,一邊接地,另一方接 GPIO。在網上了解過後,我決定用較多人用的 BCM 作為 GPIO 的編號格式。同時選用了位於接口群右下方的 #20 及 #21 號腳;地線也選用了上兩格的 #18 號腳。它們位於外殻邊沿,能減少阻礙或鬆脫而導致接觸不良。焊接工作很快地完成了。正常來說,按鍵線路需要加入「上拉」或「下拉」設計,我曾向朋友 Peter 請教,了解兩者的分別及用法。主要都是用來確保未按鍵時的值,就像軟件中的 Initialise 一樣。然而,Raspberry Pi 已經內鍵了這兩種設計,GPIO.setup() 就是決定針腳是「上拉」或「下拉」。

我測試了兩款在 Raspberry Pi 的 Python 中的按鍵檢測方法。第一種 GPIO.wait_for_edge() 是等候按鍵時會一直停著,直到狀態成立才能繼續,套用到 #21 號腳;第二種 GPIO.add_event_detect() 是事件方式,當按鍵發生時會直接跳到已登記的程式,套用到 #20 號腳。#!/usr/bin/python ##------------------------------------------------------------ ## AMIGO Camera Button Test ## Copyright Pacess Studio, 2015. All rights reserved. ##------------------------------------------------------------ import RPi.GPIO as GPIO import time ##------------------------------------------------------------ def buttonPressed(channel):…