这是之后的进一步问题这个。
我用谷歌搜索它,但大多数搜索结果都是关于如何同时增长分区和文件系统。
我认为这个问题比这更简单,因为我的分区已经大于文件系统,但我想扩大文件系统来填满分区。
我的文件系统比分区小的原因是我没有通过mkfs
对分区进行格式化,而是cat
将文件系统映像写入其中。并且图像比目标分区小。
我必须增大文件系统以完全填满分区的原因是,当存在间隙时,我的嵌入式 SoC 将无法启动,解释在本 wiki 的末尾。
答案1
我刚刚在升级手机中的 microSD 卡的大小时遇到了这个问题。我曾经dd
将现有的卡克隆到新卡上。新分区更大,但文件系统的大小仍与之前的 microSD 相同。为了解决这个问题,我使用了fdisk
和fatresize
。另外,我应该提到我正在使用分区/dev/mmcblk0p1
,fatresize
由于某种原因它不喜欢(我收到错误:)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
您的特定分区):
- 用于
sudo fdisk -s /dev/tmp
确定分区的大小(以 kB 为单位)。就我而言,这是244244480
sudo fatresize -s 244244480k /dev/tmp
(替换步骤 1 中的分区大小。)
与往常一样,请确保在尝试此操作之前备份分区!
如果必须使用解决方法,请确保删除临时设备软链接。
答案2
我知道的唯一方法是稍微缩小/增大分区gparted
(或者旧版本parted
仍然这样做)。不知何故,调整大小的代码vfat
隐藏在这个分区程序中(或libparted
就此而言),并且似乎没有类似的工具可以resize2fs
直接执行此操作或提供更多选项。
这样的调整大小对于您的嵌入式 SoC 是否足够 - 我不确定 vfat 能够适应任意分区大小的能力如何 - 您链接到一个可以测试的程序。您可能必须使分区稍小一些,以便值匹配。