在實際應用中,Raspberry Pi 的效能表現至關重要。本文提供多種最佳化技巧,包含使用 PiBakery 快速設定系統、組態 headless 模式以提升效率、解決儲存空間限制問題、啟用 USB 磁碟開機以提升系統速度,以及組裝 Pi Desktop 套件打造桌面環境。此外,文章也涵蓋螢幕大小和邊框調整,以及如何安全地進行超頻設定以提升 Raspberry Pi 的運作效能,滿足不同應用場景的需求。

討論

硬體供應商有時會提供自己的磁碟映像檔,內含對其硬體的支援。但是,使用這些映像檔並不理想,因為您將無法獲得標準 Raspbian 分佈版的所有優勢和預先安裝的軟體。此外,如果您遇到軟體問題,尋找支援將變得更加困難,因為您正在使用非標準分佈版。

另請參考

若要檢視使用此配方從正確的磁碟而非 SD 卡執行 Raspbian 的示例,請參考配方 1.10。

使用 PiBakery 組態和寫入 SD 卡

問題

您想要在多個 Raspberry Pi 上安裝 Raspbian,但不想個別設定每一臺。

解決方案

下載由玄貓建立的 PiBakery 工具。這個軟體在您的 Mac 或 Windows 電腦上執行,允許您寫入 SD 卡(如配方 1.6),以及自動執行通常在基本安裝後的額外步驟,例如設定 Wi-Fi 連線(配方 2.5)或更改 Raspberry Pi 的網路名稱(配方 2.4)。

首先,下載並安裝 PiBakery。當您執行安裝程式(圖 1-14)時,您可以選擇 Raspbian Full 或 Raspbian Lite,或者兩者皆選。除非您計劃在沒有鍵盤、滑鼠或螢幕的情況下使用 Raspberry Pi,否則您可能只需要 Full 版本。注意檔案大小,這些檔案相當大!

安裝 PiBakery 後,執行 PiBakery 應用程式。這將開啟一個視窗,您可以在其中指定如何組態 Raspbian 微 SD 卡。圖 1-15 顯示瞭如何新增一個「在每次啟動時」區塊從「啟動」類別,並新增三個更多的區塊連線到它們下面。

第一個區塊確保虛擬網路計算(VNC)(配方 2.8)已啟用。第二個區塊設定 Wi-Fi 連線,最後一個區塊示範如何啟用 I2C 介面(配方 9.3)以連線外部電子元件。

當您對設定感到滿意時,將微 SD 卡插入電腦,然後點選「寫入」按鈕。出現提示,詢問您是否確定要繼續。確認後,PiBakery 將開始寫入 SD 卡。

使用 PiBakery 安裝及設定 Raspberry Pi

在開始使用 Raspberry Pi 之前,需要先將 Raspbian 作業系統安裝到 microSD 卡中。PiBakery 是一種方便的工具,可以幫助您輕鬆地安裝和設定 Raspberry Pi。

安裝 Raspbian

  1. 下載並安裝 PiBakery。
  2. 選擇要安裝 Raspbian 的 microSD 卡。
  3. 選擇 Raspbian Lite 或 Raspbian Full。除非您要設定 headless 模式,否則建議選擇 Raspbian Full。
  4. 點選「Start Write」開始安裝 Raspbian。

設定 Headless Raspberry Pi

如果您想要設定 headless 模式的 Raspberry Pi,可以使用 PiBakery 來組態 microSD 卡。以下是步驟:

  1. 啟動 PiBakery。
  2. 選擇 Raspbian Lite。
  3. 設定 WiFi 認證。
  4. 設定 hostname。
  5. 下載並執行 Python 指令碼。

使用 PiBakery 組態 Headless Raspberry Pi

PiBakery 提供了一個圖形化介面,讓您可以輕鬆地組態 headless 模式的 Raspberry Pi。以下是步驟:

  1. 啟動 PiBakery。
  2. 選擇 Raspbian Lite。
  3. 設定 WiFi 認證。
  4. 設定 hostname。
  5. 下載並執行 Python 指令碼。

組態 Headless Raspberry Pi 的範例

以下是組態 headless Raspberry Pi 的範例:

  • 設定 hostname:piZero
  • 設定 WiFi 認證:您的 WiFi 網路名稱和密碼
  • 下載並執行 Python 指令碼:blink.py
內容解密:

上述步驟中,我們使用 PiBakery 來組態 headless 模式的 Raspberry Pi。PiBakery 提供了一個圖形化介面,讓您可以輕鬆地設定 WiFi 認證、hostname 和下載並執行 Python 指令碼。

  flowchart TD
    A[啟動 PiBakery] --> B[選擇 Raspbian Lite]
    B --> C[設定 WiFi 認證]
    C --> D[設定 hostname]
    D --> E[下載並執行 Python 指令碼]

圖表翻譯:

上述 Mermaid 圖表展示了使用 PiBakery 組態 headless 模式的 Raspberry Pi 的步驟。圖表中,每個步驟都被連線起來,展示了設定 headless 模式的 Raspberry Pi 的流程。

解決 Raspberry Pi 的儲存空間限制

如果您的 microSD 卡太小,或者您對於整個作業系統執行在 SD 卡上感到擔憂,您可以考慮使用外部 USB 快閃磁碟、USB 硬碟或高容量 SSD。這些裝置可以被 Raspberry Pi 認可並使用。

啟用 USB 快閃磁碟開機

要讓您的 Raspberry Pi 從外部硬碟開機,而不是隻將其作為資料儲存使用,您需要進行以下步驟:

  1. 升級您的 Raspberry Pi:投資一款具有 4 GB RAM 的 Raspberry Pi 4 B,它的額外計算能力對於新增一個適當的磁碟非常有幫助。另外,從 Raspberry Pi 3 開始,才支援從 USB 開機。
  2. 安裝 Raspbian:使用 microSD 卡在您的 Pi 上安裝 Raspbian。
  3. 更新您的 Pi:確保您的 Pi 是最新的,方法是執行 sudo apt-get updatesudo apt-get dist-upgrade
  4. 組態硬體:您需要使用 OTP(一次性程式設計)來組態 Raspberry Pi 的硬體,使其從 USB 開機。這涉及到一個永久性的改變,因此在輸入以下命令之前,請確保您的 Pi 是最新的,並且您已經備份了重要的資料。
echo program_usb_boot_mode=1 | sudo tee -a /boot/config.txt
  1. 關閉 Pi 和移除 microSD 卡:執行 sudo shutdown -h now 關閉您的 Pi,然後移除 microSD 卡。
  2. 安裝磁碟映像:將外部 USB 磁碟連線到您的常規電腦,然後按照安裝 Raspbian 的步驟,在這個磁碟上安裝一個磁碟映像。
  3. 連線 USB 磁碟到 Pi:將 USB 磁碟從您的電腦中移除,然後連線到您的 Raspberry Pi。
  4. 啟動 Pi:啟動您的 Raspberry Pi,它應該開始從 USB 磁碟開機。您會看到一個訊息,指出根檔案系統已被重塑,然後 Pixel 桌面介面會出現在螢幕上。

討論

如果您想要將您的 Raspberry Pi 的主磁碟換成一個真正的磁碟,並且找到一個好的外殼來容納您的 Raspberry Pi 2 和 3,一個很好的解決方案是 Element 14 的 DIY Pi Desktop 套件。這個套件包括:

  • 一個 USB-to-mSATA(1.8 英寸)介面卡板,可以安裝在您的 Raspberry Pi 上方。
  • 一個 U 形的 USB 聯結器,可以連線 Raspberry Pi 的其中一個 USB 埠到 USB-to-mSATA 介面板。
  • 一個散熱器,用於您的 Raspberry Pi 的處理器晶片。

圖表翻譯:

  flowchart TD
    A[開始] --> B[安裝 Raspbian]
    B --> C[更新 Pi]
    C --> D[組態硬體]
    D --> E[安裝磁碟映像]
    E --> F[連線 USB 磁碟到 Pi]
    F --> G[啟動 Pi]

這個流程圖展示瞭如何啟用 USB 快閃磁碟開機的步驟。每一步驟都對應到上述的描述,提供了一個清晰的視覺化過程。

Raspberry Pi 桌面套件組裝與設定

為了組裝 Raspberry Pi 桌面套件,需要準備以下幾個元件:

  • 1.8 英寸的 mSATA 硬碟。建議使用固態硬碟硬碟(SSD),因為它比傳統硬碟更耐用,耗電量也更低。
  • 一個好的電源供應器。由於現在需要同時供應 Raspberry Pi 和 USB 硬碟的電力,可能需要升級電源供應器。建議使用 5V 2.5A 的電源供應器。
  • 可選擇性地新增 Pi Camera,如果想要讓 Raspberry Pi 桌面具有網路攝影機的功能。

組裝套件時,請先按照 Element 14 提供的說明檔案進行組裝。然而,在將 Raspberry Pi 固定在外殼之前,強烈建議先按照以下步驟進行設定,以避免日後移除 microSD 卡的困難。

連線 DVI 或 VGA 監視器

如果您的監視器沒有 HDMI 聯結器,但您仍想要使用它與 Raspberry Pi 連線,則可以購買介面卡。DVI 介面卡是最簡單和最便宜的選擇,可以以低於 5 美元的價格購買。然而,VGA 介面卡則需要額外的電子元件來將數字訊號轉換為模擬訊號,因此請注意選擇包含這些電子元件的介面卡。

使用複合影片監視器/電視

如果您使用的是低解析度的複合影片監視器,文字可能會變得難以辨識。為瞭解決這個問題,需要調整 Raspberry Pi 的解析度以適應小螢幕。您可以編輯 /boot/config.txt 檔案來進行設定。這個檔案可以在 Raspberry Pi 上使用 nano 編輯器進行編輯,也可以從 SD 卡中取出並使用電腦上的文字編輯器進行編輯。

編輯 /boot/config.txt 檔案時,需要找到以下兩行,並根據您的螢幕解析度進行修改:

#framebuffer_width=1280
#framebuffer_height=720

將這兩行的註解符號 (#) 刪除,並將寬度和高度設為您的螢幕解析度。例如,如果您的螢幕解析度是 320x240 畫素,則修改後的內容應如下:

framebuffer_width=320
framebuffer_height=240

儲存並離開編輯器後,重新啟動 Raspberry Pi,即可看到螢幕上的文字變得清晰可讀。

Mermaid 圖表:Raspberry Pi 桌面套件組裝流程

  flowchart TD
    A[開始] --> B[準備元件]
    B --> C[組裝套件]
    C --> D[設定 Raspberry Pi]
    D --> E[連線監視器]
    E --> F[調整解析度]
    F --> G[完成]

圖表翻譯:

此圖表展示了 Raspberry Pi 桌面套件的組裝和設定流程。從開始到完成,共有七個步驟:開始、準備元件、組裝套件、設定 Raspberry Pi、連線監視器、調整解析度和完成。每個步驟都代表著組裝和設定過程中的重要環節,幫助使用者順利完成 Raspberry Pi 桌面的搭建。

內容解密:

在上述流程中,設定 Raspberry Pi 和調整解析度是兩個非常重要的步驟。設定 Raspberry Pi 需要編輯 /boot/config.txt 檔案,以確保系統能夠正常啟動和執行。調整解析度則需要根據螢幕的實際解析度進行設定,以確保文字和影像清晰可讀。這兩個步驟都需要使用者具有一定的技術知識和操作能力,因此在進行這些步驟時,請務必小心並仔細遵循指導。

調整螢幕大小和邊框

當您第一次連線 Raspberry Pi 到螢幕時,您可能會發現文字太小或螢幕周圍有一個大黑邊框。這篇文章將教您如何調整螢幕大小和邊框。

調整螢幕大小

如果您的螢幕解析度太低,您可以調整 framebuffer 的寬度和高度。編輯 /boot/config.txt 檔案,找到以下兩行:

#framebuffer_width=720
#framebuffer_height=720

移除 # 符號,並將寬度和高度改為您的螢幕解析度。例如:

framebuffer_width=320
framebuffer_height=240

儲存檔案並重新啟動 Raspberry Pi。您應該會發現螢幕變得更容易閱讀。

調整邊框

如果您的螢幕周圍有一個大黑邊框,您可以使用 Raspberry Pi 的桌面組態工具調整。開啟 Raspberry Pi 選單,選擇 “Preferences”,然後點選 “Raspberry Pi Configuration”。在 “Display” Tab 中,點選 “Disabled” 按鈕旁邊的 “Underscan”。注意,變更將不會立即生效,直到您點選 “OK” 和重新啟動 Raspberry Pi。

如果您的文字超出螢幕邊緣,您可以啟用 “Underscan” 來調整螢幕大小。

編輯 config.txt 檔案

您也可以編輯 /boot/config.txt 檔案來調整螢幕大小和邊框。使用 nano 編輯器開啟檔案:

$ sudo nano /boot/config.txt

找到以下四行,開始於 #overscan

#overscan_left=0
#overscan_right=0
#overscan_top=0
#overscan_bottom=0

移除 # 符號,並調整數值來設定螢幕大小和邊框。例如:

overscan_left=-20
overscan_right=-20
overscan_top=-20
overscan_bottom=-20

儲存檔案並離開 nano。重新啟動 Raspberry Pi 即可看到變更。

過度時脈設定以達到最佳效能

當您發現您的樹莓派執行速度非常慢時,您可以嘗試透過超頻來提高其執行速度。這尤其適用於較舊的單核心樹莓派。

問題描述

您的樹莓派執行速度很慢,您想要超頻它以使其執行更快。

解決方案

如果您使用的是樹莓派2、3或4,具有四核心處理器,您不太可能覺得它執行太慢。然而,較舊的單核心樹莓派可能會相當遲緩。

您可以增加樹莓派的時脈頻率以使其執行稍微快一些。這將使其消耗稍微更多的功率並執行稍微熱一些(見下面的討論部分)。

本文中描述的超頻方法被稱為動態超頻,因為它自動監控樹莓派的溫度並在溫度過高時降低時鐘速度。這被稱為節流。

使用樹莓派組態工具是超頻最簡單的方法。要啟動它,請前往樹莓派選單,選擇偏好設定,然後點選樹莓派組態。接下來,點選效能標籤(圖1-20)。

圖1-20. 使用樹莓派組態工具進行超頻設定

可用的超頻選項將根據您使用的樹莓派型號而有所不同。選擇其中一個選項,然後點選確定。更改將在重新啟動時生效。

如果您正在遠端執行樹莓派(無顯示器),您仍然可以更改超頻設定,但您需要先學習SSH(請參閱配方2.7)。連線SSH後,執行以下命令:

sudo raspi-config

選擇超頻選項。然後,您將看到圖1-21中顯示的選項。

圖1-21. 使用命令列上的raspi-config工具進行超頻設定

選擇一個選項。如果您發現您的樹莓派開始變得不穩定並且意外掛機,您可能需要選擇一個更保守的選項或關閉超頻。

討論

超頻可以帶來相當顯著的效能提升。要測量這些提升,我使用了一個沒有機殼、在60度(15度C)環境溫度下的樹莓派B。測試程式是一個Python指令碼,它不斷地對處理器施加壓力,使其工作得很辛苦,這不是電腦中其他事情的代表性指標,例如寫入SD卡、圖形等。但是,它可以給出原始CPU效能的良好指示,尤其是在測試超頻對樹莓派的影響時。

import time

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

start_time = time.time()
print(factorial(1000))
end_time = time.time()
print("計算時間:", end_time - start_time, "秒")

這個指令碼計算1000的階乘,並測量計算所需的時間。您可以執行這個指令碼以測量超頻前後的效能差異。

瞭解遞迴函式的效能

在電腦科學中,遞迴函式是一種常見的程式設計技巧,然而它對效能的影響往往被忽視。讓我們透過一個簡單的例子來瞭解遞迴函式的效能問題。

遞迴函式的定義

遞迴函式是一種函式,它透過呼叫自己來實作某些計算。例如,計算一個數字的階乘可以使用遞迴函式來實作:

def factorial(n):
    if n == 1:
        return 1
    else:
        return n * factorial(n-1)

這個函式透過呼叫自己來計算階乘,直到達到基礎情況(n == 1)。

效能問題

然而,遞迴函式對效能的影響可能很大。讓我們透過一個簡單的實驗來瞭解這個問題:

import time

before_time = time.clock()
for i in range(1, 10000):
    factorial(200)
after_time = time.clock()
print(after_time - before_time)

這個實驗計算了200的階乘10000次,並測量了所需的時間。結果顯示,遞迴函式的效能可能很差。

分析結果

結果顯示,遞迴函式的效能可能很差。這是因為遞迴函式需要建立多個函式呼叫堆積疊,導致記憶體使用量增加和效能下降。

改進方案

為了改進遞迴函式的效能,可以使用迭代演算法來取代遞迴函式。例如,計算一個數字的階乘可以使用迭代演算法來實作:

def factorial(n):
    result = 1
    for i in range(1, n+1):
        result *= i
    return result

這個演算法透過迭代計算階乘,避免了遞迴函式的效能問題。

圖表翻譯:
  flowchart TD
    A[開始] --> B[計算階乘]
    B --> C[遞迴函式]
    C --> D[效能問題]
    D --> E[改進方案]
    E --> F[迭代演算法]
    F --> G[結束]

這個圖表展示了遞迴函式的效能問題和改進方案。

實際應用

在實際應用中,遞迴函式的效能問題可能很嚴重。例如,在電腦視覺中,遞迴函式可能被用來計算影像的特徵。然而,如果遞迴函式的效能問題沒有被解決,可能會導致程式的效能下降。

未來,遞迴函式的效能問題可能會被解決透過新的程式設計技巧和硬體技術。例如,使用平行計算和GPU加速可以改進遞迴函式的效能。

從效能最佳化視角來看,Raspberry Pi 的效能調校涵蓋了軟體設定和硬體擴充兩個層面。本文探討瞭如何透過 PiBakery 簡化系統安裝與設定、利用外部儲存裝置突破 SD 卡的效能瓶頸,以及藉由超頻技術提升 CPU 效能。分析顯示,PiBakery 的圖形化介面有效降低了系統組態的複雜度,尤其對於設定 headless 模式至關重要。而遷移系統至外部儲存裝置,特別是 SSD,則能顯著改善系統的讀寫速度和整體反應能力。此外,動態超頻技術允許在效能提升與系統穩定性之間取得平衡,但需注意散熱問題。然而,這些效能最佳化策略並非沒有限制。例如,超頻可能縮短硬體壽命,而外部儲存裝置的相容性和穩定性也需審慎評估。從長遠來看,隨著 Raspberry Pi 硬體的不斷升級和軟體生態的持續完善,預期效能調校將更加精細化和自動化。對於追求極致效能的使用者,建議深入研究作業系統核心引數調校和編譯最佳化等進階技術。玄貓認為,平衡效能、穩定性和功耗才是 Raspberry Pi 效能最佳化的最佳策略。