如何把Raspberry Pi移到較小容量的micro SD card?

Raspberry Pi的使用者不知道有沒有過這種經驗呢?一開始安裝系統的時候,把未來的擴充想得太多太大太美好,結果等到系統穩定運行一陣子之後,才發現原本準備給系統的大容量根本用不滿。

我就是個活生生血淋淋的例子,一開始野心勃勃的用64g micro SD card安裝,想著以後也許會拿來當音樂播放器、模擬器、檔案伺服器……,最後發現像Raspberry Pi這種效能有限的架構,還是一張一系統才是正途。

剛好,手邊有閒置的16g micro SD card,最近又想把音樂資料庫從NAS上搬回Mac(遠端連實在太累了),可以把音樂放在64g那張卡、再用短版的轉接卡長駐在Macbook Air的SD卡槽裡;於是乎,我的Raspberry Pi就有了系統搬家的需求。但上網找了找,發現絕大部分的資料都是「小搬大」,「大搬小」無法直接硬塞,必須先把大的系統利用特殊軟體resize成小於等於16g的映像檔,才能還原到小的micro SD card上並正常運作。至於這個特殊軟體,取決於你手邊的系統;由於我只有Mac與Raspberry Pi,無緣windows上面好用的win32diskimager,最後採用了國外論壇上很多網友推薦的GParted

結論是,系統「大搬小」需要先準備以下工具:
1. 可執行GParted與製作/還原映像檔的電腦,我的是Macbook Air
2. 可燒錄的光碟機與光碟片一張,用來製作GParted開機光碟(Mac用系統功能就能製作開機光碟,windows我就不是很熟了)
3. micro SD讀卡機

執行步驟整理如下:
1. 利用GParted開機光碟開機(Mac開機時按著「option」就能選擇開機系統),進入GParted的分割區操作畫面

2. 整理磁碟名單,取得讀卡機內64g micro SD card資料
3. 調整分割區至符合「新家」的大小,執行並結束退出、回到Mac系統

4. 在Mac的指令列視窗中,先用

diskutil list

列出磁碟掛載路徑(我的micro SD card是掛載在/dev/disk2),再用dd將系統製作為映像檔

sudo dd if=/dev/disk2 of=~/Desktop/backup.img bs=1m count=14000

if為input file後接來源路徑、of為output file後接目的路徑,同時用bscount指定檔案大小(不指定的話就算沒有用滿64g做出來的映像檔一樣會是64g,大小設為14000MB避免單位換算讓最後容量大於16g micro SD card)
5. 經過漫長的等待,映像檔終於製作好了!(我的2013mid Macbook Air大約跑了快四個小時才跑完…)
6. 讀卡機換成16g micro SD card
7. 在Mac的指令列視窗中,先利用

sudo diskutil unmountDisk /dev/disk2

卸載micro SD card,然後將ddifof的路徑對調(通常讀卡機掛載的路徑不會變,disk2前面的r可以讓還原步驟加快)

sudo dd if=~/Desktop/backup.img of=/dev/rdisk2 bs=1m

8. 再等待約一個小時,內容完全一樣的系統「大搬小」就完成啦!

Add a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料