2012/06/09

Raspberry Pi:使用GParted調整SD記憶卡分割區的大小

2012.07.18更新:新的Raspberry Pi官方推薦的發行套件Raspbian(2012-07-15-wheezy-raspbian.zip),第一次開機後便有選單讓你調整分割區大小,也就無需額外使用其他工具了。

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根目錄變大了,可以塞入更多軟體囉。


參考資料:

6 comments:

  1. Anonymous22/9/16 13:34

    請問
    我在一張舊的16G SD卡上裝了系統
    再使用Win32DiskImager把這SD卡的系統備份初來
    但是我看它image檔的容量是14.6G
    我現在要拿新的SD卡把這個image檔燒進去
    但是我看同樣是16G的卡 但是新的只有14.4G
    要燒到新卡時結果出現空間不足的錯誤
    這有辦法能解決嗎?

    謝謝

    ReplyDelete
    Replies
    1. 不同型號的記憶卡,其實際容量通常會不同。

      可以先縮減分割區的大小,
      http://elinux.org/RPi_Resize_Flash_Partitions
      然後再備份。

      Delete
    2. Anonymous22/9/16 14:23

      我用了gparted
      請問能再Rpi裡面調整分割區大小嗎?
      開了gparted 調整了ext4的大小 但是套用時出現錯誤了

      Delete
    3. 可以。
      但通常是:
      要被調整分割區大小的記憶卡,不可用來開機。

      請參考
      https://learn.adafruit.com/resizing-raspberry-pi-boot-partition/edit-partitions

      Delete
    4. Anonymous23/9/16 00:25

      我拿去另一個pi板使用gparted把原本那個ext4的容量縮小(13.X縮到11G)了
      縮小此磁區後,我把這SD卡放回去開機是正常,也用df -h觀看 確定那個磁區有縮小成11G
      但是.. 我用Win32DiskImager把這張SD卡備份img檔出來時,img檔的容量還是和之前沒調整大小是一樣大耶(14.6G)
      這會是什麼問題? 有其他方式能備份嗎?
      Win32DiskImager製作img檔 好像是SD卡容量多大 備份出來的img檔就有多大耶
      我兩張16G SD卡是一樣的 (但一個是14.6G 一個是14.4G)

      謝謝

      Delete
    5. 啊,抱歉,win32diskimager的確如此,我太久沒備份,有點忘了,sorry。

      > 兩張16G SD卡是一樣的 (但一個是14.6G 一個是14.4G)
      外觀相同,但實際的型號可能不同。
      可能有磁區壞掉,於是容量下降了。

      1. 使用較小的SD卡來安裝系統,然後備份,燒錄到另一張較大的卡。
      2. 使用dd指令進行燒錄,即便img檔較大,仍可燒錄到較小的卡,忽略警告訊息即可。
      3. 使用dd指令進行備份,應該不會得到整張記憶卡的容量大小。

      其他作法都要使用較為低階的指令,我曾試過,但已忘光光啦。

      Good Luck.

      Delete