树莓派(raspberry pi)把文件系统写在一个img文件中(大小约为2GB)


实际使用中,再用写SD卡工具 Win32 Disk Imager复制到SD卡上,即可用于实际系统中


但是有一个问题,就是假如你的SD卡是8G的,由于img文件是2G,其余的6G是用不了的。


总共2G的大小,系统占了1G多,装多几个软件就装不了了。


这个问题,又让我研究了两小时。 后来发现,要调整主分区的大小。



以下是我在Qemu虚拟机上具体操作的:


首先用qemu带的工具qemu-img.exe 调整img文件的大小,


退出qemu虚拟机,在Windows中使用以下命令,将img文件增加1024MB


qemu-img resize 2012-12-16-wheezy-raspbian.img +1024M


然后,启动qemu虚拟机,进入raspberry pi系统后


首先,查看一下硬盘使用情况,命令如下:

df -h


然后用fdisk命令进行分区操作 (实际操作前最好先熟悉一下fdisk的用法)

命令格式:

fdisk <存储设备名>  //如: fdisk /dev/sda

进入fdisk 后,使用单键命令

   m 显示Help

   p  列出所有分区

   d  删除分区

   n  新建分区

   w 存盘退出

   q 不存盘退出


对主设备进行fdisk,命令如下:

sudo fdisk /dev/sda

(如果是在物理机器上操作,命令应是 sudo fdisk  /dev/mmcblk0)


按 p 键 列出所有分区,可见有两个或三个分区

第一个分区是 FAT32分区,是引导用的

第二个分区是Linux 主分区

第三个分区是Linux Swap交换文件分区(虚拟机中可能没有)


用笔记下Linux 主分区的Start Sector号 (我的img文件中是122880)


按 d 键 Partition Number (分区号) 选 2, 删除linux主分区(第2个区)

如果有linuxSwap分区,再按d键 Partition Number (分区号) 选 3,  删除linuxSwap分区(第3个区)


按 p 键 列出所有分区,可见只剩第一个分区了


按 n 键,重新创建linux主分区 

Partition Type(分类类型) 选 P (Primary)

Partition Number (分区号) 选 2

First Sector(起始Sector) 一定要输入刚才记下来的Start Sector号(我的是122880)

Last Sector (终止Sector)用默认值,直接回车


按 p 键 列出所有分区,可见有两个分区,linux主分区在第2个,起始位置是原位置


按 w 键 存盘退出fdisk


接下来,立即重启,不要做任何其它事情

sudo reboot


重启并登录后,立即用以下命令

sudo resize2fs /dev/sda2

(如果是在物理机器上操作,命令应是sudo resize2fs /dev/mmcblk0p2)


该命令将把第二个分区扩展到新的空间中


查看一下硬盘使用情况,OK了

df -h


上述操作的原理是:

首先删除了linux主分区和Swap分区,重建的主分区起始Sector位置与原主分区一致,再resize2fs,则原主分区数据完全没变,但改变了主分区的大小。


明白了,SD卡有多大,就做多大的img文件,再写到卡中就可以了



网文参考:http://raspberrypi.stackexchange.com/questions/499/how-can-i-resize-my-root-partition