將Raspberry Pi官方提供的映像檔燒錄到SD記憶卡後,會有三個分割區,第一個是FAT32,裝了開機韌體與Linux核心,第二個是ext4,裝了根目錄,第三個是Linux的swap記憶體置換空間(我用的是debian那個,不保證其他的情況也會一樣)。目前官方提供的映像檔大小在2 GB以下,所以SD記憶卡還有很多未使用的空間,這篇內容就是要以GParted這支工具軟體調整分割區大小,將這些未配置的空間拿回來。
注意:調整分割區是危險的動作,最好先作備份,並且確定你的確了解要作的事情是些什麼。
GParted的全名是Gnome Partition Editor,顧名思義就是分割區的編輯器,必須在x86的電腦上運行。
首先到GParted網站下載,我用的是GParted Live CD,要燒錄到光碟裡,然後以光碟開機,再對讀卡機裡的SD記憶卡進行編輯。
其他方式還有:燒錄到USB隨身碟(若你的電腦支援USB開機的話)、或是灌到硬碟裡、或是你本來就有Linux的話就直接安裝此軟體吧。
將記憶卡放進讀卡機插入電腦的USB埠後,以光碟開機,會看到如下畫面,我選了最上面的一般設定,若無特殊需求(譬如說想退出GParted Live CD放入別張光碟片)選此選項即可。
然後會問你一些問題,鍵盤對應(keymap),我選了Don't touch keymap,語言,我選了US English。
最後有0、1、2可選,我選0直接進入視窗介面。1為手動進行一些X Window的設定,2為進入命令列模式。
看到GParted的畫面後,從右上角選擇想要編輯的裝置,注意不要選錯了,萬一不小心殺掉硬碟的資料那就欲哭無淚了。我的SD記憶卡容量為8 GB,也就是下圖的/dev/sdd。我電腦裡已經有三台SATA硬碟(sda、sdb、sdc),所以記憶卡是sdd。
接下來就是動手調整各分割區了。
/dev/sdd1不變。
選/dev/sdd3(linux swap),按Resize/Move,將這個分割區整個移動(拉)到最右端(最末端),大小不變。
選/dev/sdd2(ext4),將它的大小調到最大。
完成後如下圖所示,此時這些更動尚未套用到記憶卡上,你可以在畫面下方看到GParted將你的動作記錄了下來。
按下Apply,這個時候就真正會進行編輯變更了,泡杯茶吧。
下圖是完成後的樣子,就算你的記憶卡跟我一樣號稱是8 GB,但真正的容量通常都會有些差異,所以你完成後的樣子跟我的並不一定會一樣,各分割區之間可能會有小小的間隙。還好,對8 GB來說,這些1~2 MB的小間隙無關緊要。
完成啦,ext4根目錄變大了,可以塞入更多軟體囉。
參考資料:
- Resize SD Card Partitions,以GParted調整分割區大小。
- Preparing for Pi - Using Full SD card capacity (Resizing Partitions In GParted) ,以GParted調整分割區大小,YouTube影片講解。
- RPi Easy SD Card Setup,如何在Linux上以fdisk調整分割區大小。
- Easy GUI Install & Re-Partition Raspberry Pi on Ubuntu,在Ubuntu上燒錄映像檔並以GParted調整分割區大小。
- GParted官方文件。
請問
ReplyDelete我在一張舊的16G SD卡上裝了系統
再使用Win32DiskImager把這SD卡的系統備份初來
但是我看它image檔的容量是14.6G
我現在要拿新的SD卡把這個image檔燒進去
但是我看同樣是16G的卡 但是新的只有14.4G
要燒到新卡時結果出現空間不足的錯誤
這有辦法能解決嗎?
謝謝
不同型號的記憶卡,其實際容量通常會不同。
Delete可以先縮減分割區的大小,
http://elinux.org/RPi_Resize_Flash_Partitions
然後再備份。
我用了gparted
Delete請問能再Rpi裡面調整分割區大小嗎?
開了gparted 調整了ext4的大小 但是套用時出現錯誤了
可以。
Delete但通常是:
要被調整分割區大小的記憶卡,不可用來開機。
請參考
https://learn.adafruit.com/resizing-raspberry-pi-boot-partition/edit-partitions
我拿去另一個pi板使用gparted把原本那個ext4的容量縮小(13.X縮到11G)了
Delete縮小此磁區後,我把這SD卡放回去開機是正常,也用df -h觀看 確定那個磁區有縮小成11G
但是.. 我用Win32DiskImager把這張SD卡備份img檔出來時,img檔的容量還是和之前沒調整大小是一樣大耶(14.6G)
這會是什麼問題? 有其他方式能備份嗎?
Win32DiskImager製作img檔 好像是SD卡容量多大 備份出來的img檔就有多大耶
我兩張16G SD卡是一樣的 (但一個是14.6G 一個是14.4G)
謝謝
啊,抱歉,win32diskimager的確如此,我太久沒備份,有點忘了,sorry。
Delete> 兩張16G SD卡是一樣的 (但一個是14.6G 一個是14.4G)
外觀相同,但實際的型號可能不同。
可能有磁區壞掉,於是容量下降了。
1. 使用較小的SD卡來安裝系統,然後備份,燒錄到另一張較大的卡。
2. 使用dd指令進行燒錄,即便img檔較大,仍可燒錄到較小的卡,忽略警告訊息即可。
3. 使用dd指令進行備份,應該不會得到整張記憶卡的容量大小。
其他作法都要使用較為低階的指令,我曾試過,但已忘光光啦。
Good Luck.