Windows、Linux下Qemu为树莓派DebianLinux扩容硬盘及SWAP分区大小
前言
当我们使用qemu加载了一个树莓派官方镜像时,因为官方在构建镜像的时候人为的控制了root分区的大小,如果我们加载完镜像需要进行一些自己的操作时,就需要使用qemu-img工具来扩容空间啦。
1、检查树莓派镜像
首先,我们检查一下现有树莓派镜像的空间,使用qemu-img的info命令:
>qemu-img info 2021-01-11-raspios-buster-armhf.img
image: 2021-01-11-raspios-buster-armhf.img//img镜像名称
file format: raw//文件格式类型
virtual size: 3.7G (3963617280 bytes)//实际镜像文件大小
disk size: 3.7G//系统空间大小
2、扩容IMG镜像文件
使用qemu-img的resize命令对镜像文件进行扩展。
qemu-img resize 2021-01-11-raspios-buster-armhf.img +8G
再通过info命令检查当前镜像文件:
image: 2021-01-11-raspios-buster-armhf.img//img镜像名称
file format: raw//文件格式类型
virtual size: 11.6G (12,553,551,872 bytes)//实际镜像文件大小
disk size: 11.9G//系统空间大小
现在实际镜像文件已经扩容,但实际文件系统暂时还未识别已扩容的空间,需要对该虚拟分区进行格式化。
通过resize命令不仅可以扩展镜像大小,也可以对镜像进行裁剪,但裁剪之前需要对分区进行格式化并释放空间,否则裁剪时会损坏镜像。
每个树莓派镜像的分区默认有两个,sda1【boot分区】与sda2【linux分区】,此次扩容只对sda2【linux分区】进行扩容。
3、启动镜像进入linux分区
扩展完毕后,进入镜像的linux系统中,通过df -h命令查看当前系统文件大小,可以看到当前系统还未识别新扩展的空间,可以看到linux分区几乎已经用光:
pi@raspberrypi:~ $ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 3.4G 3.0G 227M 93% /
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 253M 46M 207M 18% /boot
tmpfs 25M 0 25M 0% /run/user/1000
使用fdisk命令查看当前分区的起始位与结束位:(很重要,一定要看)
sudo fdisk -l
关注以下信息即可:
Device Boot Start End Sectors Size Id Type
/dev/sda1 8192 532479 524288 256M c W95 FAT32 (LBA)
/dev/sda2 532480 7741439 7208960 3.4G 83 Linux
需要记录sda2(Linux分区)的start位置的sector。
使用fdisk对sda设备进行分区:
sudo fdisk /dev/sda
可以输入m来进行查看fdisk的命令,如果想退出可以输入q
=====================================================
Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): m //输入m查看命令
Help:
DOS (MBR)
a toggle a bootable flag
b edit nested BSD disklabel
c toggle the dos compatibility flag
Generic
d delete a partition
F list free unpartitioned space
l list known partition types
n add a new partition
p print the partition table
t change a partition type
v verify the partition table
i print information about a partition
Misc
m print this menu
u change display/entry units
x extra functionality (experts only)
Script
I load disk layout from sfdisk script file
O dump disk layout to sfdisk script file
Save & Exit
w write table to disk and exit
q quit without saving changes
Create a new label
g create a new empty GPT partition table
G create a new empty SGI (IRIX) partition table
o create a new empty DOS partition table
s create a new empty Sun partition table
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-24518655, default 2048): 532480//输入sda2分区起始sector(上面记录的其实位置)
Last sector, +/-sectors or +/-size{K,M,G,T,P} (532480-24518655, default 24518655): 24518655//默认即为最大即最后一个位置
Created a new partition 2 of type 'Linux' and of size 11.4 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.
Syncing disks.
4、重启检查系统剩余空间
此时已经完成了对Linux分区的扩展,使用sudo reboot命令重启qemu。重启完成后使用resize2fs命令来时我们扩展的空间生效。
$ sudo resize2fs /dev/sda2
resize2fs 1.44.5 (15-Dec-2018)
Filesystem at /dev/sda2 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/sda2 is now 2998272 (4k) blocks long.
然后通过df -lh命令来检查系统剩余空间:
pi@raspberrypi:~ $ df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/root 12G 3.0G 7.8G 28% /
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 253M 46M 207M 18% /boot
tmpfs 25M 0 25M 0% /run/user/1000
此时可以看到对linux分区扩展的空间已经生效。
至此全部完成!