1. 程式人生 > >使用QEMU擴充套件樹莓派映象增加剩餘使用空間

使用QEMU擴充套件樹莓派映象增加剩餘使用空間

前言

  當我們使用qemu載入了一個樹莓派官方映象時,因為官方在構建映象的時候人為的控制了root分割槽的大小,如果我們載入完映象需要進行一些自己的操作時,就需要使用qemu-img工具來擴容空間啦。

1、檢查樹莓派映象

  首先,我們檢查一下現有樹莓派映象的空間,使用qemu-img的info命令:

qemu-img info 2017-11-29-raspbian-stretch.img

  輸出可以看到如下資訊:

image: 2017-11-29-raspbian-stretch.img//img映象名稱
file format: raw//檔案格式型別
virtual size
: 4.6G (4919918592 bytes)//實際映象檔案大小 disk size: 4.6G//系統空間大小

2、擴容IMG映象檔案

  使用qemu-img的resize命令對映象檔案進行擴充套件。

qemu-img resize 2017-11-29-raspbian-stretch.img +1G

  再通過info命令檢查當前映象檔案:

file format: raw
virtual size: 5.6G (5993660416 bytes)//實際映象檔案大小已經擴容1G空間
disk size: 4.6G

  現在實際映象檔案已經擴容,但實際檔案系統暫時還未識別已擴容的空間,需要對該虛擬分割槽進行格式化。
  通過resize命令不僅可以擴充套件映象大小,也可以對映象進行裁剪,但裁剪之前需要對分割槽進行格式化並釋放空間,否則裁剪時會損壞映象。

每個樹莓派映象的分割槽預設有兩個,sda1【boot分割槽】與sda2【linux分割槽】,此次擴容只對linux分割槽進行擴容。

3、啟動映象進入linux分割槽

  擴充套件完畢後,進入映象的linux系統中,通過df -h命令檢視當前系統檔案大小,可以看到當前系統還未識別新擴充套件的空間,可以看到linux分割槽幾乎已經用光:

Filesystem      Size  Used Avail Use% Mounted on
/dev/root       4.5G  4.1G   98M  98% /
devtmpfs        124M     0  124M   0% /dev
tmpfs 124M 0 124M 0% /dev/shm tmpfs 124M 1.9M 122M 2% /run tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 124M 0 124M 0% /sys/fs/cgroup /dev/sda1 41M 21M 21M 51% /boot tmpfs 25M 0 25M 0% /run/user/1000

  使用fdisk命令檢視當前分割槽的起始位與結束位:

sudo fdisk -l

  可以看到如下內容:

Device     Boot Start     End Sectors  Size Id Type
/dev/sda1        8192   93236   85045 41.5M  c W95 FAT32 (LBA)
/dev/sda2       94208 9609215 9515008  4.6G 83 Linux

  需要記錄sda2(Linux分割槽)的start位置的sector。

  使用fdisk對sda裝置進行分割槽:

 sudo fdisk /dev/sda

可以輸入m來進行檢視fdisk的命令,如果想退出可以輸入q

Welcome to fdisk (util-linux 2.29.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): d #刪除分割槽指令
Partition number (1,2, default 2): 2 #2即sda2分割槽

Partition 2 has been deleted.

Command (m for help): n #建立新分割槽
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p #建立主分割槽
Partition number (2-4, default 2): 2 #建立sda2分割槽
First sector (2048-11706367, default 2048): 94208 #輸入sda2分割槽起始sector
Last sector, +sectors or +size{K,M,G,T,P} (94208-11706367, default 11706367): 11706367 #預設映象最後一個sector

Created a new partition 2 of type 'Linux' and of size 5.6 GiB.
Partition #2 contains a ext4 signature.

Do you want to remove the signature? [Y]es/[N]o: N #此時已經擴充套件成功,選擇不刪除分割槽簽名

Command (m for help): w #儲存此次操作

The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Device or resource busy

The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).

4、重啟檢查系統剩餘空間

  此時已經完成了對Linux分割槽的擴充套件,使用sudo reboot命令重啟qemu。重啟完成後使用resize2fs命令來時我們擴充套件的空間生效。

sudo resize2fs /dev/sda2

  然後通過df -h命令來檢查系統剩餘空間:

Filesystem      Size  Used Avail Use% Mounted on
/dev/root       5.4G  4.1G  1.1G  80% /
devtmpfs        124M     0  124M   0% /dev
tmpfs           124M     0  124M   0% /dev/shm
tmpfs           124M  2.0M  122M   2% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           124M     0  124M   0% /sys/fs/cgroup
/dev/sda1        41M   21M   21M  51% /boot
tmpfs            25M     0   25M   0% /run/user/1000

  此時可以看到對linux分割槽擴充套件的空間已經生效。