如何调整/(根)分区的大小?


171

即使我的SD卡为16GB,但我闪过的图像只有2GB,现在磁盘上只能看到2GB的存储空间。

如何调整映像大小,以便在根分区上有更多空间?


谢谢..非常适合我,没有给我的系统加油..仍然有IRC和apache网络服务器以及我全部的8GB容量

1
例如,当您可以在剩余的可用SD卡空间上创建新分区,然后将其安装在根分区内时,为什么要调整根分区的大小/mnt/storage。这有效地隔离了系统和数据,并使维护和备份更加容易。
mbaitoff 2014年

2
@mbaitoff-因为默认系统映像仅具有68MiB可用空间,所以没有太多余地来添加其他软件。
Jules

@Jules-我不是在问为什么要调整分区大小。有人问为什么要调整系统分区的大小,而不是在系统分区安装点安装额外的存储,从而有效地隔离系统和软件/数据?如果要存储,则将剩余的SD spcae安装在/mnt/storage,如果要将程序安装在/opt/software/
mbaitoff

@mbaitoff大多数程序安装在/ usr,而不是/ opt / software中。预先构建的映像在根分区中具有/ usr的内容。因此,如果要安装任何非默认软件,增加根分区的大小似乎很重要。
朱尔斯

Answers:


158

假设您正在使用Debian。

简短版本:

  1. 备份系统
  2. 删除主分区和交换分区(单独保留启动分区)
  3. 重新创建主分区以利用剩余的磁盘空间(引导分区除外)。确保重用与原始根分区相同的启动扇区。
  4. 重新启动系统
  5. 调整新的引导根分区的大小以利用整个分区的大小。

分步说明

如果出现问题,请先按照此处的说明备份SD卡。

在命令行或终端窗口中输入以下内容

sudo fdisk /dev/mmcblk0

然后键入p以列出分区表

您应该看到三个分区。如果您在标最后一栏看看系统,你应该有

  1. W95 FAT32
  2. 的Linux
  3. Linux交换

记下分区2的开始编号,以后再用。尽管它可能仍会显示在屏幕上(以防万一)。

下一个类型d删除分区。

然后将提示您输入要删除的分区号。在上述情况下,您要删除Linux和Linux交换分区。

所以输入 2

然后d再次键入,然后键入3以删除交换分区。

现在您可以调整主分区的大小。

键入n以创建一个新分区。

此新分区需要是主分区,因此请键入p

2在提示您输入分区号时,接下来输入。

现在将提示您输入新分区的第一个扇区。 输入上一步的起始编号(Linux分区)

接下来,将提示您输入最后一个扇区,您只需按Enter即可接受默认设置,它将使用剩余的磁盘空间。

键入w以保存所做的更改。

接下来,使用以下命令重新引导系统:

sudo reboot

系统重新启动后,您又回到命令行,请输入以下命令:

sudo resize2fs /dev/mmcblk0p2

注意:这可能需要很长时间(取决于卡的大小和速度),请耐心等待,以便完成操作,这样您就不会弄乱文件系统,而必须从头开始。

完成后,使用以下命令重新引导系统:

sudo reboot

现在,您可以通过输入以下命令来验证系统是否正在使用SD卡的全部容量:

df -h

为何有效:

真正的神奇之处在于,您删除了根分区和交换分区,然后仅将根分区重新创建(使用原始的起始扇区),然后再将数据写入磁盘。因此,您不会从根分区中擦除现有数据。

通过移除交换分区,您可以使根分区空间超出其当前大小,并填充磁盘的未使用部分(由于分区的位置-根分区夹在引导分区和交换分区之间-不能这样做)只需调整大小即可,而不必单独保留交换分区)。

然后,您可以调整文件系统的大小(可以安全地在已安装的磁盘上运行),以使用新的根分区中的所有空间。

参考:


1
@Jivings如果正确完成,您不会丢失任何东西,但这是我进行第一步备份的原因。
史蒂夫·罗比拉德

2
从评论看来,您似乎也应该记录下这样做的原因,而不仅仅是工作原理。
Jivings 2012年

1
@Jivings希望能解决您的问题。
史蒂夫·罗比拉德

9
必须删除分区以调整其大小似乎是非常错误的。
Alex Chamberlain 2012年

5
@AwesomeUser您不在Mac上执行此操作,而是在pi本身上执行此操作。另外,如果您正在运行raspbian,则可以启动pi,然后从命令行发出以下命令sudo raspi-config,然后选择resize root partition选项。
史蒂夫·罗比拉德

102

使用Debian-Wheezy Beta映像,内置了一个配置实用程序,可简化此操作:

有一个名为的实用程序raspi-config。如果您直接连接到RPi,它将在首次启动时运行。如果您使用的是SSH,则可以使用手动运行它$ sudo raspi-config。(我认为您可以随时手动重新运行该工具)。

接下来蓝色对话框中的第二个选项标题为expand_rootfs,描述为“扩展根分区以填充SD卡”。

选择此项将导致您的根分区在下次启动RPi时被调整大小以填满卡。

2015年更新!

在返回此答案时,我要格外小心:我一直在使用一堆16GB SD卡,但由于最大化分区以装满正在使用的卡而陷入困境。这样做会导致切换到新卡(即使据说为16GB)比旧卡小200MB左右的问题。

当我将几个RPis从v1切换到使用Micro SD卡的新v2型号时,此问题浮出水面。

现在,我可以腾出约1GB的可用空间,以确保我的图像可以在SD卡之间切换而不会出现问题。


在我的Pi上使用16 GB卡,此过程大约花费了10分钟。
Der Hochstapler

5
这比最简单的答案要简单得多。这是要使用的解决方案。
詹姆斯·斯基金

@JamesSkimming:这是用于Debian-Wheezy Beta图像的解决方案。不适合其他人。
SF。

当从NOOBS安装在SDCard上时,这对于Raspbian不起作用,因为它们随RPi套件一起提供。当您尝试运行expand选项时,它表示此配置不支持该选项,但是由于您正在运行的菜鸟可能仍然占用了所有空间...问题是我正在尝试将8GB映像刷新到32GB卡上
Eoin坎贝尔

Raspi-config不知道如何调整Raspbian Wheezy根的大小。您建议的expand_rootfs引起了问题。上面的答案在实时系统中的工作原理很吸引人,不需要“保留大约1 GB”。
GTodorov

28

如果您在命令行上不太舒服,例如在Steve Robillards的出色回答中,则可以使用一些GUI应用程序。特别是gparted效果很好。

我认为它默认安装在Ubuntu LiveCD上,而不安装在已安装的系统上。当然,有一个简单的解决方法:apt-get install gparted。您不能在实际的Pi上执行此操作,因为要调整分区的大小,需要将其卸载。

下图是荷兰语,但不要让它破坏乐趣。它很容易使用。这是8GB SD卡上默认debian映像的布局。

GParted

右键单击要卸载的分区,然后右键单击以调整大小或移动分区。您还可以创建新分区并格式化现有分区。在下面的图片中,我删除了交换分区,现在可以将根分区的大小调整为它右边的整个空间。不要完全填满它,因为您仍然必须添加交换分区。

调整大小

您可以使用分区布局,仅当您应用更改时才写入更改(第一张图片中的灰色“返回”键)。

移动分区非常容易,但是就像在Steve的回答中一样,我建议您完全删除交换分区,然后调整根的大小,然后重新创建交换。移动分区可能需要很长时间,并且交换不包含您需要保留的数据。


1
我用过这种方法;奇迹般有效。
亚历克斯·张伯伦

我同意。我已经用gparted做到了这一点,而且非常容易
JayDev 2015年

如果您通过VNC连接,请运行sudo -E gparted
forzagreen

gparted如果您在Wayland之下运行,可能还需要先运行以下命令(不确定这些问题是否已解决):xhost +SI:localuser:root
John Manko

11

如果您使用较新的Debian Wheezy映像:http ://www.raspberrypi.org/archives/1435 引导时脚本允许您调整大小以自动填充sdcard。


1
我正在使用Arch Linux。
Jivings 2012年

2
怎么会这样呢?

2
是为任何最新的Wheezy映像调整分区大小的最简单方法。
尤瓦尔·亚当

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.