如何将 vfat 文件系统的大小精确增加到包含分区的大小?

如何将 vfat 文件系统的大小精确增加到包含分区的大小?

这是之后的进一步问题这个

我用谷歌搜索它,但大多数搜索结果都是关于如何同时增长分区和文件系统。

我认为这个问题比这更简单,因为我的分区已经大于文件系统,但我想扩大文件系统来填满分区。

我的文件系统比分区小的原因是我没有通过mkfs对分区进行格式化,而是cat将文件系统映像写入其中。并且图像比目标分区小。

我必须增大文件系统以完全填满分区的原因是,当存在间隙时,我的嵌入式 SoC 将无法启动,解释在本 wiki 的末尾

答案1

我刚刚在升级手机中的 microSD 卡的大小时遇到​​了这个问题。我曾经dd将现有的卡克隆到新卡上。新分区更大,但文件系统的大小仍与之前的 microSD 相同。为了解决这个问题,我使用了fdiskfatresize。另外,我应该提到我正在使用分区/dev/mmcblk0p1fatresize由于某种原因它不喜欢(我收到错误:)Could not stat device /dev/mmcblk0p - No such file or directory.,所以我确实必须使用提到的解决方法https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=810735并添加软链接sudo ln -s /dev/mmcblk0p1 /dev/tmp

无论如何,要调整 vfat 分区的大小(替换/dev/tmp您的特定分区):

  1. 用于sudo fdisk -s /dev/tmp确定分区的大小(以 kB 为单位)。就我而言,这是244244480
  2. sudo fatresize -s 244244480k /dev/tmp(替换步骤 1 中的分区大小。)

与往常一样,请确保在尝试此操作之前备份分区!

如果必须使用解决方法,请确保删除临时设备软链接。

答案2

我知道的唯一方法是稍微缩小/增大分区gparted(或者旧版本parted仍然这样做)。不知何故,调整大小的代码vfat隐藏在这个分区程序中(或libparted就此而言),并且似乎没有类似的工具可以resize2fs直接执行此操作或提供更多选项。

这样的调整大小对于您的嵌入式 SoC 是否足够 - 我不确定 vfat 能够适应任意分区大小的能力如何 - 您链接到一个可以测试的程序。您可能必须使分区稍小一些,以便值匹配。

相关内容