我有一个 beaglebone black,我已经安装了 debian wheezyhttp://www.armhf.com到eMMC上
虽然直到最近我用完了分区上的 inode,尽管设备上还有 40% 的可用空间,但这种方法一直运行良好。现在我明白我无法在安装了 unix 的文件系统上增加索引节点,并且我需要重新创建分区,在备份我的工作后我很乐意这样做。唯一的问题是我该如何去做呢?
这是我到目前为止所尝试过的
创建一个带有可启动 debian 的 microSD,
在 USB 上启动到 debian 然后格式化 emmc
mkfs.ext4 -i 4096 /dev/mmcblk1
我的理解是,使用 -i 参数,我可以指定每 4096 个字节创建一个 inode 我已经尝试过两次,一次使用 4096,第二次使用 2048
获取 debian 镜像
wget http://s3.armhf.com/debian/wheezy/bone/debian-wheezy-7.2-armhf-3.8.13-bone30.img.xz
解压到新分区
xz -cd debian-wheezy-7.2-armhf-3.8.13-bone30.img.xz > /dev/mmcblk1
对我来说,这似乎是正确的步骤,尽管每次我在输入 df -i 时执行此操作,结果总是相同数量的索引节点(11,7000~)或类似的东西,非常感谢一些关于如何实现增加的指导高于默认值的索引节点。
干杯蒂姆
答案1
问题是,当您运行时xz -cd ... > /dev/mmcblk1
,您将覆盖之前创建的文件系统。您下载的映像是完整的磁盘映像,其中包含预先格式化的文件系统。
如果您想使用预构建的映像,唯一的解决方案是将数据从分区复制出来,重新格式化,然后将数据复制回来。
假设运行命令后,您现在拥有包含文件系统的xz -cd ... > /dev/mmcblk1
分区。/dev/mmcblk1p1
如果您遵循的指南没有要求您执行此操作,您可能需要重新扫描分区表以获取新分区。这是用完成的partprobe /dev/mmcblk1
# Get the current UUID & filesystem label
eval "$(blkid -o export /dev/mmcblk1p1)"
# This just created 2 variables called $LABEL and $UUID
# Mount the partition somewhere
mount /dev/mmcblk1p1 /mnt/bone
# Copy the contents off
tar --numeric-owner -czpSf /tmp/bone.tar.gz -C /mnt/bone .
# Unmount the partition
umount /mnt/bone
# Format the partition
mkfs.ext4 -i 4096 -U "$UUID" -L "$LABEL" /dev/mmcblk1p1
# Mount the partition back up
mount /dev/mmcblk1p1 /mnt/bone
# Copy the contents back
tar -C /mnt/bone --numeric-owner -xzpf /tmp/bone.tar.gz
# Unmount again
umount /mnt/bone
此时,您应该拥有一个完全重建的 ext4 文件系统,并具有自定义数量的索引节点。