我的台式电脑(不是笔记本电脑)上有一个带有 Windows 的 Arch 双引导系统。自从我上次弄乱它以来已经有一段时间了,现在我想“恢复”它。我继续做的第一件事是全局系统更新 ( pacman -Syu
)。但后来我收到了这个错误:
error: Partition /boot too full: 4916 blocks needed, 3320 blocks free
所以我检查了我的/boot
分区,结果发现它只有 100MB,并且已经使用了 96MB。然后我试图找出如何增加它的大小,一些帖子推荐了经典的 GParted。我感到不安,因为这是非常微妙的东西,但是,因为我找不到其他选择,我决定试一试。
然后我从我的 Arch 分区中取消分配 1GB,将它向上移动两到三次,直到它靠近/boot
分区,最后将两者合并。当 GParted 向我展示这个时,我感到畏缩——对图像质量感到抱歉,我不得不降级才能在此处上传它——:
/boot
奇怪的是,尽管出现错误,Windows 和 Arch 都将 new 的大小识别为 1.1GB。这是我在尝试再次更新 Arch 时得到的:
为什么会这样?有解决办法吗?是因为 GParted 无法将/boot
分区大小调整到超过一定大小吗?这是在某处记录的吗?
(不过,我系统中的一切似乎都运行良好。)
libparted 无法将 FAT16/FAT32 分区调整为特定大小。
libparted 中有一些代码与 FAT16 和 FAT32 之间的转换有关——较小的分区需要使用 FAT16,较大的分区(2 GB 及以上)需要转换为 FAT32,显然在 libparted 完全获取之间存在一定的范围混淆,其计算代码既不接受 FAT16也不接受FAT32 请求的大小。
自从重新添加后的 10 年里,似乎没有人接触过此代码。
包含 /boot的分区已调整为 1.1 GB,但文件系统没有。nvme0n1p2 中的 FAT 文件系统结构仍然“管理”与以前相同的 100 MB 空间——它的文件分配表没有增加以处理新可用的扇区等。
备份分区中的所有文件,用 重新格式化
mkfs.fat
,将文件复制回其中。